维基少年:树莓派/树莓派 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()
本教程的原始 PDF 可在维基共享资源上获取:Buzzwire-gpiozero.pdf
|
|
无法收听此文件?请参阅 媒体帮助。 |
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()