跳轉到內容

維基少年:樹莓派/樹莓派 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()
華夏公益教科書