跳至主要内容

建造一個夜燈 - 樹莓派

在這部分課程中,你將在樹莓派上添加一個LED,並使用它來創建一個夜燈。

硬體

夜燈現在需要一個致動器。

致動器是一個LED,一個發光二極管,當電流通過時會發光。這是一個數字致動器,有兩種狀態,開和關。發送值1會打開LED,發送值0會關閉LED。LED是一個外部的Grove致動器,需要連接到樹莓派上的Grove Base帽子。

夜燈邏輯的偽代碼如下:

Check the light level.
If the light is less than 300
Turn the LED on
Otherwise
Turn the LED off

連接LED

Grove LED作為一個模組提供多種LED,允許你選擇顏色。

任務 - 連接LED

連接LED。

A grove LED

  1. 選擇你喜歡的LED,將其腳插入LED模組上的兩個孔中。

    LED是發光二極管,二極管是只能單向導電的電子設備。這意味著LED需要正確連接,否則它將無法工作。

    LED的一條腿是正極引腳,另一條是負極引腳。LED不是完全圓形的,一側稍微扁平一些。稍微扁平的一側是負極引腳。當你將LED連接到模組時,確保圓形一側的引腳連接到模組外側標有**+**的插座,扁平一側連接到模組中間較近的插座。

  2. LED模組有一個旋轉按鈕,允許你控制亮度。首先使用小十字螺絲刀將其逆時針旋轉到最亮。

  3. 將Grove電纜的一端插入LED模組上的插座。它只能以一種方式插入。

  4. 在樹莓派斷電的情況下,將Grove電纜的另一端連接到樹莓派上Grove Base帽子上的數字插座D5。這個插座在GPIO引腳旁邊的一排插座中是從左數第二個。

The grove LED connected to socket D5

編程夜燈

現在可以使用Grove光傳感器和Grove LED來編程夜燈。

任務 - 編程夜燈

編程夜燈。

  1. 啟動樹莓派並等待其啟動

  2. 在VS Code中打開你在本作業的前一部分中創建的夜燈項目,可以直接在樹莓派上運行,也可以使用Remote SSH擴展連接。

  3. 將以下代碼添加到app.py文件中以導入所需的庫。這應該添加到其他import行的下方。

    from grove.grove_led import GroveLed

    from grove.grove_led import GroveLed語句從Grove Python庫中導入GroveLed。這個庫包含與Grove LED交互的代碼。

  4. light_sensor聲明之後添加以下代碼,以創建管理LED的類的實例:

    led = GroveLed(5)

    這行led = GroveLed(5)創建了一個連接到引腳D5GroveLed類的實例 - LED連接的數字Grove引腳。

    💁 所有插座都有唯一的引腳號碼。引腳0、2、4和6是模擬引腳,引腳5、16、18、22、24和26是數字引腳。

  5. while循環內,time.sleep之前添加一個檢查光線水平並打開或關閉LED的檢查:

    if light < 300:
    led.on()
    else:
    led.off()

    這段代碼檢查light值。如果小於300,則調用GroveLed類的on方法,向LED發送數字值1,打開LED。如果光線值大於或等於300,則調用off方法,發送數字值0,關閉LED。

    💁 這段代碼應該與print('Light level:', light)行縮進到同一級別,以便在while循環內!

    💁 當向致動器發送數字值時,0值是0V,1值是設備的最大電壓。對於使用Grove傳感器和致動器的樹莓派,1電壓是3.3V。

  6. 從VS Code終端運行以下命令以運行你的Python應用程序:

    python3 app.py

    光線值將輸出到控制台。

    pi@raspberrypi:~/nightlight $ python3 app.py 
    Light level: 634
    Light level: 634
    Light level: 634
    Light level: 230
    Light level: 104
    Light level: 290
  7. 覆蓋和揭開光傳感器。注意當光線水平為300或更低時,LED會亮起,當光線水平大於300時,LED會熄滅。

    💁 如果LED沒有亮起,請確保它連接正確,並且旋轉按鈕設置為全亮。

The LED connected to the Pi turning on and off as the light level changes

💁 你可以在code-actuator/pi文件夾中找到這段代碼。

😀 你的夜燈程序成功了!