跳转到内容

维基少年:树莓派/树莓派 Python GPIO Zero 蜂鸣线游戏

来自维基教科书,开放的世界,开放的书籍

戴维·普赖德提供的教程
公有领域 2016年10月26日
www.cotswoldjam.org

本教程将涵盖如何构建自己的游乐场风格的“蜂鸣线”游戏!您将需要扬声器或耳机来使用本教程。

在您的包中,您将找到以下组件

  • ×5 M2F 跳线
  • ×1 220 Ω(红红棕)电阻
  • ×1 LED
  • ×1 30 厘米(~12 英寸)铃线
  • ×1 10 厘米(~4 英寸)铃线
  • ×1 迷你面包板

步骤 1: 取一条跳线,将其连接到面包板上的 J6 和 Pi 上的引脚 7 (GPIO 4)

步骤 2: 取一条跳线,将其连接到面包板上的 J1 和 Pi 上的引脚 6 (GND)

步骤 3: 取电阻,将其插入面包板上的 H1 和 H5 孔中——哪个方向都没有关系。LED 非常贪婪,会吸收所有可以吸收的能量,这可能会损坏 Pi。我们使用这个电阻来限制 LED 从 Pi 中汲取的能量。

步骤 4: 取 LED,将其插入面包板上的 F5 和 F6 孔中。确保 LED 的长脚插入 F6。

步骤 5: 取一条跳线,将其连接到面包板上的 E1 和 Pi 上的引脚 39 (GND)

步骤 6: 取一条跳线,将其连接到面包板上的 E17 和 Pi 上的引脚 37 (GPIO 26)

步骤 7: 取一条跳线,将其连接到面包板上的 A1。现在取短的那段铃线,用手指小心地弯曲末端,然后将另一端插入您刚刚连接到面包板的跳线的空闲端。

步骤 8: 取长的那段铃线,将其弯曲成一个有趣的形状。请记住——您添加的弯曲越多,游戏就越难!然后将这根线的两端插入面包板上的 A2 和 A17。

步骤 9: 将您在短线上制作的环挂在弯曲线的末端,如下所示。您的蜂鸣线游戏现在已经完成了!——找一个导师,让他们现在检查一下连接。

打开树莓派。从桌面菜单中选择编程——Python 3 (IDLE)。然后使用文件,新建窗口创建一个新程序。

输入以下程序,或者您也可以使用文件,打开打开桌面/buzzwire 文件夹中的 buzzwire.py 程序。

使用文件,保存将此程序保存为桌面/buzzwire 文件夹中的 buzzwire.py,然后使用运行菜单,运行模块运行它。

from time import sleep
from os import system
from gpiozero import Button, LED

led = LED(4)
button = Button(26)

while True:
  if button.is_pressed:
    print("BUZZZZZZ")
    led.on()
    system("aplay buzzer.wav &")
    sleep(1)
    led.off()

程序的功能是什么?

from time import sleep
from os import system
from gpiozero import Button, LED

前三行告诉计算机学习新东西。计算机可以从其他人编写的程序中学习;我们称这些其他程序为“库”。我们的指令告诉计算机如何从 system 库中学习如何运行其他程序(例如声音播放器),以及如何从 GPIO Zero 库中学习电按钮的工作原理(两根线接触)。

然后我们创建一个 Button 对象和一个 LED 对象。我们说按钮连接到引脚 37 (GPIO 26),LED 连接到引脚 7 (GPIO 4)

led = LED(4)
button = Button(26)

下一行告诉程序在循环中永远运行。

while True:

接下来,程序运行,直到两根线接触。然后它打印一条消息并播放声音文件。

  if button.is_pressed:
    print ("BUZZZZ")
    system("aplay buzzer.wav &")

最后,程序等待一秒钟,然后关闭 LED,以便游戏可以继续进行。

    sleep(1)
    led.off()

Buzzwire-gpiozero.pdf

[编辑 | 编辑源代码]

本教程的原始 PDF 可在维基共享资源上获取:Buzzwire-gpiozero.pdf

buzzer.wav

[编辑 | 编辑源代码]

buzzwire.py

[编辑 | 编辑源代码]
from time import sleep
from os import system
from gpiozero import Button, LED

led = LED(4)
button = Button(26)

while True:
    if button.is_pressed:
        print("BUZZZZZZ")
        led.on()
        system("aplay buzzer.wav &")
        sleep(1)
        led.off()
华夏公益教科书