樹莓派——可以用Python寫程式嗎

猶記得很久很久以前,家裡有了第一台電腦,CPU 時脈 4.77MHz、RAM 640KB 的 PC(這就看得出來有我有多老了)。以現在手機動輒三核、四核,時脈動輒 1.5GHz、1.8GHz 來說,4.77MHz 是什麼鬼?微電腦電子鍋的處理器都比他還快吧?不過那不是重點啦,重點那是我的第一台電腦。
然後不久後我跟哥哥一起去學了一期的 BASIC 程式設計,還記得程式的第一個作業是九九乘法表,一群人安安靜靜打著電腦,我也一個字一個字地在鍵盤上尋找字母。
九九乘法表以現在的能力來看是很簡單,兩層 for loop 迴圈控制就收工了。但當年小學生的我也是燒死了不少腦細胞才完成的。
以前學程式都是純軟體,即使到了高中電腦課學 True BASIC 也依然是在螢幕上秀些東西而已。大學時開始接觸 C,也是在不同的演算法間找最佳寫法,寫寫老鼠走迷宮、 寫寫用 ASCII 字元畫撲克牌、寫寫 BBS 而已,所有的輸出都還是在螢幕上。
一直到當了韌體工程師,才開始有用軟體控制硬體的體驗。當我第一眼看到樹莓派有40根控制腳時,眼睛為之一亮!這東西好玩啊,小人一定感興趣的。
這麼一台樹莓派可以用簡單的程式像 Python 來操作 GPIO 嗎?不用說,當然是可以的!Python 直譯式的語言,不用啥 compile 複雜的程序,寫了馬上可以跑,挺適合當上手的程式語言的。
早上拿小人的電腦來寫寫小程式,短短 20 行,透過樹莓派的擴充腳點亮 LED。
然:「那可以我用電腦時亮藍燈、姊姊用電腦時亮紅燈嗎?」
我:「可以呀」
然:「那可以用快樂e學院時(宜蘭線上教學平台)亮綠燈、看 Youtube 時亮紅燈嗎?」
我:「可以呀」
然:「那可以跟我的電子積木(一套可以組合的電子零件積木、有LED、有馬達……)連在一起嗎?」
我:「可以呀,整個積木都可以連上來電腦哦。」
這種程式設計應該比九九乘法表或只在螢幕上呈現的程式來得更吸引小人吧。

三色LED變彩虹

使用材料:

  1. 三色 LED 燈模組 x1
  2. 杜邦線 x4

接線:

  • 三色 LED 燈 GND 接 Pin 9 GND
  • 三色 LED B (藍) 接 Pin 11  GPIO 17
  • 三色 LED G (綠) 接 Pin 13  GPIO 27
  • 三色 LED R (紅) 接 Pin 15  GPIO 22
Source Code:
#!/usr/bin/python3
import pigpio                           # 引入樹莓派GPIO功能
import time                             # 引入時間控制功能

pins=[22, 27, 17]                       # 設定使用 22,27,17 三根 GPIO
oldpin=pins[len(pins)-1]                # 設定上一根腳是最上面最右邊(17)

pi1 = pigpio.pi()                       # 建立對樹莓派GPIO控制程式的連線
for pin in pins:                        # 逐一取出每一根腳
   pi1.set_mode( pin, pigpio.OUTPUT )   # 設定腳為輸出用
   pi1.write( pin, 0)                   # 預設為關閉

for i in range(5):                      # 循環五次
    for pin in pins:                    # 逐一取出每一根腳
        pi1.write( pin, 1)              # 點亮 LED
        time.sleep(0.5)                 # 等待 0.5 秒
        pi1.write( oldpin, 0)           # 關閉上一根腳
        time.sleep(0.5)                 # 再等 0.5 秒
        oldpin=pin                      # 把現在這根腳設為上一根
pi1.write( pin, 0 )                     # 五圈跑完了,關閉現在這個 LED
pi1.stop()                              # 結束對樹莓派GPIO控制程式的連線



延伸閱讀


Related posts

Leave a Comment