跳轉到內容

維基少年:樹莓派/樹莓派尖叫果凍寶貝教程

來自華夏公益教科書

在本教程中,您將製作一個尖叫的果凍寶貝!或者,如果您住在英國或澳大利亞以外的地方,可以使用軟糖熊。

您的導師應該已經為您準備了樹莓派的 SD 卡。如果沒有,請閱讀最後一節“給導師”。

Things that appear on the screen or need to be typed in are written like this.

在每行的末尾,您通常需要按 ↵ Enter 鍵。

登入並啟動 IDLE

[編輯 | 編輯原始碼]

當您開啟樹莓派時,幾秒鐘後它會要求您登入。您需要鍵入使用者名稱 (pi),然後按 ↵ Enter 鍵,然後輸入密碼 (raspberry),然後按 ↵ Enter 鍵。

raspberrypi login: pi
password: raspberry

請注意,輸入密碼時,密碼不會顯示在螢幕上。

從現在開始,您應該假設您始終需要在每行的末尾按 ↵ Enter 鍵。

登入後,螢幕會變黑幾秒鐘,然後桌面應該會顯示出來,您可以用滑鼠移動指標。如果不行,輸入

startx

找到“IDLE”圖示並雙擊它。如果您難以雙擊,您可以右鍵單擊它並選擇“開啟”。

您需要的是 IDLE,而不是 IDLE3。

IDLE 是一個用於編寫程式的程式,使用 Python 版本 2 程式語言。您對 Python 越加精通,您將使用的功能就越有用。但是,可以使用文字編輯器(如 nano)來編寫程式,而無需 IDLE。還有其他版本的本教程使用 nano 代替 IDLE。

IDLE3 用於 Python 的版本 3。本教程是為版本 2 編寫的。

你的第一個程式 - Hello World

[編輯 | 編輯原始碼]

輸入以下程式

print "Hello World"

使用“檔案”選單、“儲存”儲存它,然後雙擊進入 python 資料夾,然後進入 jellybaby 資料夾。將程式儲存為

jellybaby.py

在桌面上,雙擊 LX Terminal 圖示。將出現一個新的黑色視窗。

透過輸入以下內容進入 python/jellybaby 資料夾

cd python/jellybaby

透過輸入以下內容檢視此資料夾中的檔案

ls

您應該看到您的 jellybaby.py 程式,一些 .wav 聲音檔案(這些是我們稍後將使用的尖叫聲)和一個 examples 目錄(如果您想作弊,您將在那裡找到一個完全工作的尖叫果凍寶貝程式!)。

現在執行您的程式

sudo python jellybaby.py

計算機應該響應

Hello World

讓我們快速瞭解一下我們在那做了什麼

什麼是 sudo

[編輯 | 編輯原始碼]

sudo 表示“超級使用者執行”。對於許多程式來說,這並不重要,但我們很快就會使用連線到樹莓派 GPIO 埠(通用輸入輸出)的電子裝置,您需要成為超級使用者才能這樣做。

不利的一面是,以超級使用者身份執行程式允許您執行可能會破壞計算機的操作 - 超級使用者就像一個無所不能的超級英雄。由於樹莓派是一款非常便宜的計算機,因此這並不重要,但在其他昂貴的計算機上,您可能需要對 sudo 更小心。

什麼是 python

[編輯 | 編輯原始碼]

python 指示計算機執行用 Python 程式語言編寫的程式。jellybaby.py 是您的程式的名稱。

關閉樹莓派

[編輯 | 編輯原始碼]

在連線電線到樹莓派之前,你應該先關閉樹莓派。請確保你在拔掉電源之前,安全地關閉樹莓派。

你可以使用桌面右下角的紅色電源圖示,或者在 LXTerminal 視窗(黑色視窗)中輸入

sudo shutdown –h now
  • sudo 是超級使用者命令,再次確認。
  • shutdown 表示關機。
  • –h 表示停止(與 –r 表示重啟相反)
  • now 表示現在!(如果還有其他人透過網路使用你的樹莓派,你可以說 +5 而不是 now,這樣可以發出五分鐘的警告)。

將跳線連線到 GPIO 引腳

[編輯 | 編輯原始碼]

引腳分為兩排。偶數引腳位於板的邊緣,奇數引腳位於另一排。你需要從左側的 1 開始以 2 為單位計數,所以計數為 1、3、5、7 等等。

識別 引腳 25(GND)很容易出錯,尤其是在有 40 個引腳的 Raspberry Pi “Plus” 型號上!在舊的 Model B 和 Model A 型號上,只有 26 個引腳,識別起來就容易多了 – 引腳 25(GND)是位於右側末端的引腳。

步驟 1:等待樹莓派自動關機,然後拔掉電源線。

步驟 2:將一個金屬回形針展開,使其變成一根長而直的導線。

步驟 3:取一根母對母跳線,將展開的回形針插入一端。

步驟 4:重複此操作兩次,這樣你就有兩根導線,兩端都插入了展開的回形針。較大的回形針可能難以插入。你的導師可能已經幫你插入了,或者你可以請你的導師用鉗子幫忙插入。

步驟 5:現在將跳線的另一端分別連線到 Raspberry PI 的 GPIO 引腳的 引腳 3(I2C1 SDA)引腳 25(GND) 上。

GPIO 程式 – 版本 1

[編輯 | 編輯原始碼]

將電源線插回,等待樹莓派開機,然後登入(pi / raspberry;如果你的桌面沒有自動啟動,別忘了 startx)。

從桌面啟動 IDLE(雙擊),然後透過轉到“檔案”選單、“最近開啟的檔案”並選擇 jellybaby.py 來載入你的舊程式。

更改程式,使其讀取

import time
import RPi.GPIO as GPIO
import os
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(3,GPIO.IN)

print "Hello World"

while True:
    if GPIO.input(3) == False:
    print "Ouch!"
    time.sleep(1)

所有大寫字母都非常重要。你需要確保所有大寫字母都確實是大寫字母,所有小寫字母都確實是小寫字母。這被稱為區分大小寫。

whileif 行下的空格也很重要。你需要按下 空格鍵 來確保它們對齊。這些縮排被稱為程式碼塊。程式碼塊可以重複,程式也可以決定執行或跳過程式碼塊。我們使用四個空格來縮排每個程式碼塊;一些程式設計師更喜歡使用兩個空格或其他數字。

import 行允許我們在我們的程式中使用其他人的小程式。這些小程式被稱為庫。time 庫允許我們告訴計算機等待(sleep)。GPIO 庫允許我們使用 GPIO 引腳。os 庫允許我們呼叫其他程式,例如音樂播放器,但我們目前沒有使用它。

while 告訴我們重複一個程式碼塊。True 告訴計算機始終執行某些操作。

if 提問。要問的問題是兩根導線是否接觸;引腳 3(I2C1 SDA) 是否連線到電氣接地?將輸入引腳連線到接地會導致值 False

注意使用兩個等號 ==。一個等號用於設定值,例如 a=3,這意味著每次計算機看到 a 時,它都知道它的值為 3。兩個等號用於比較兩個事物。

time.sleep(1) 表示等待 1 秒。

儲存程式,然後從桌面啟動 LXTerminal(雙擊),然後輸入

cd python/jellybaby
sudo python jellybaby

程式將列印 Hello World!然後它將等待。

將回形針導線連線在一起。你應該會看到它顯示

Ouch!

鬆開導線,等待幾秒鐘,然後再次將導線連線在一起。每次都應該會顯示 Ouch!

如果它不起作用,請檢查你的程式是否正確輸入,檢查你是否儲存了它,並檢查你的導線是否被任何東西覆蓋,可能阻止了電流流動。

當你玩夠了的時候,按住 CTRL 鍵,然後按 C 來停止程式。這被稱為“中斷”或“鍵盤中斷” – 你是在要求計算機暫停,並使用鍵盤中斷程式。有時你會看到 Ctrl 和 C 寫成 CTRL-C 甚至 ^C。你不需要使用 Shift 鍵 – C 實際上是小寫 c。

GPIO 程式 – 版本 2

[span>編輯 | 編輯原始碼]

讓我們更改程式,使其發出聲音,而不是僅僅在螢幕上列印“Ouch!”。更改

print "Ouch!"

…為

os.system('omxplayer scream-c.wav')

確保揚聲器已連線,已開啟,並且音量至少開到一半(一些揚聲器沒有開/關按鈕或音量控制)。

轉到 LXTerminal 視窗,再次執行程式。

將導線連線在一起,你應該會聽到尖叫聲!

連線果凍寶貝

[編輯 | 編輯原始碼]

取一個果凍寶貝,將導線插入其中。

你需要讓它們在果凍寶貝內部交叉,但不要完全接觸。

現在,當你用力按下果凍寶貝時,它就會尖叫!

你可能需要用力按下 – 足夠用力地穿過果凍寶貝的粘稠中間部分。

用力按下意味著果凍寶貝可能在三到四次按下後就變得毫無用處。如果你不是糖尿病患者,也不對果凍寶貝過敏,你可以在果凍寶貝被壓扁後吃掉它們!

更多樂趣

[編輯 | 編輯原始碼]

你的程式為音符 C 播放尖叫聲。還有音符 D 和 E 的尖叫聲檔案。嘗試更改你的程式以使用不同的音符。看看你和你的同學是否能演奏一首曲子,例如“小羊羔” (EDCDEEE,DDD,EEE,EDCDEEE,EDDEDC)。

找到 GPIO 引腳列表 (http://raspi.tv/download/RPi.GPIO-Cheat-Sheet.pdf)。你能連線更多電線,讓一臺樹莓派同時連線到兩三個果凍寶貝,演奏不同的音符嗎?

面向導師

[編輯 | 編輯原始碼]

裝置 – 每個工作站

[編輯 | 編輯原始碼]
  • ×1 樹莓派,任何型號,帶顯示器、滑鼠和鍵盤
  • ×1 SD 或 Micro SD 卡,裝有最新版本的 Raspbian 作業系統
  • ×1 揚聲器或一對揚聲器,有源(可充電移動 MP3 揚聲器可以,PC 揚聲器也可以)
  • ×2 母對母 跳線 – 建議最小長度 20 釐米(約 8 英寸)
  • ×2 小金屬回形針(不含塑膠塗層)(如果你使用大回形針,你可能需要使用鉗子將它們插入跳線)

多個果凍寶貝 – 每個工作站至少允許 6 個,但最好一次只發一個或兩個!

瞭解你的學生中哪些是糖尿病患者或對果凍寶貝過敏。

先決條件

[編輯 | 編輯原始碼]

下載並解壓縮資料夾結構、尖叫聲樣本和示例程式。為此,從連線網際網路的 Raspberry Pi 上登入(pi / raspberry)並執行

cd
wget http://www.cotswoldjam.org/downloads/2014-11/jellybaby.zip
unzip jellybaby.zip

這將建立

~/python/
~/python/jellybaby/
~/python/jellybaby/scream-c.wav
~/python/jellybaby/scream-d.wav
~/python/jellybaby/scream-e.wav
~/python/jellybaby/example/
~/python/jellybaby/example/jellybaby.py

請注意,有一個關於 GPIO 引腳的優秀圖表,可在此處獲得:http://raspi.tv/download/RPi.GPIO-Cheat-Sheet.pdf

作者:Cotswold Raspberry Jam 的 Andrew Oakley,www.cotswoldjam.org,CC-BY-SA

最新版本始終位於:http://www.cotswoldjam.org/tutorials/

基於“讓果凍寶寶尖叫!”,由樹莓派基金會提供,CC-BY-SA http://www.raspberrypi.org/learning/screaming-jellybaby/ https://creativecommons.org/licenses/by-sa/4.0/

本教程的原始 PDF 可在維基共享資源上獲得:Jellybaby-tutorial.pdf

jellybaby.py

[編輯 | 編輯原始碼]
import time
import RPi.GPIO as GPIO
import os
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(3,GPIO.IN)
print "Hello World"
while True:
    if GPIO.input(3) == False:
        os.system('omxplayer scream-c.wav')
        time.sleep(1)

scream-c.wav

[編輯 | 編輯原始碼]





scream-d.wav

[編輯 | 編輯原始碼]





scream-e.wav

[編輯 | 編輯原始碼]





華夏公益教科書