上一篇文章練習使用四位數七段顯示器顯示時間及溫度,本篇要繼續探討與 LED 有關的顯示,使用 SPI 介面控制 MAX7219 讓 8x8 矩陣 LED 以跑馬燈的方式顯示字串。有關 SPI 的基本知識,可參考我另一篇七年前的文章:Raspberry Pi 筆記(17):使用MAX7219 控制 8x8 LED Matrix。本篇實作要改用 Pi Pico 來控制 MAX7219 LED 模組顯示開發板上的溫度。
[材料]
- Raspberry Pi Pico x1
- MAX7219 8x8 LED 模組 x1
- 排線 n 條
[接線圖]
Pi Pico 接腳 | MAX7219 8x8 LED |
---|---|
Pin 36(3.3V) | VCC |
Pin 38(GND) | GND |
Pin 7(GP5) | CS |
Pin 9(GP6) | CLK |
Pin 10(GP7) | DIN |
[程式]
在執行這段程式時,找了一下 max7219.py 中哪段函式在處理輸入字串text(),結果發現是 import framebuf後,在 framebuf 處理字串的輸入,如要詳細瞭解 framebuf,可參考 這裡 。以下是這段註解的內容:""" Driver for cascading MAX7219 8x8 LED matrices. >>> import max7219 >>> from machine import Pin, SPI >>> spi = SPI(1) >>> display = max7219.Matrix8x8(spi, Pin('X5'), 4) >>> display.text('1234',0,0,1) #第1個值為要顯示的字串,第2-3個值為x,y座標,第四個值為顏色,預設為 1 >>> display.show() """執行以下程式,可以看到以跑馬燈的方式顯示「Temp:」,後面帶出開發板上目前的溫度。
from machine import Pin, SPI, ADC import max7219 from utime import sleep MAX7219_NUM = 4 MAX7219_INVERT = False MAX7219_SCROLL_DELAY = 0.15 cs_pin = 5 spi = SPI(0) display = max7219.Matrix8x8(spi=spi, cs=Pin(cs_pin), num=MAX7219_NUM) display.brightness(2) p = MAX7219_NUM * 8 to_volts = 3.3 / 65535 temper_sensor = ADC(4) #從ADC(4)取得溫度感測器的電壓值 while True: temper_volts = temper_sensor.read_u16() * to_volts #取得當時溫度的電壓 celsius_degrees = 27 - (temper_volts - 0.706) / 0.001721 #計算攝氏溫度 text = 'Temp:'+str(round(celsius_degrees,2)) #取小數2位 for p in range(MAX7219_NUM * 8, len(text) * -8 - 1, -1): display.fill(MAX7219_INVERT) display.text(text, p, 1, not MAX7219_INVERT) # 在x,y位置顯示(string, x, y, color=1) display.show() sleep(MAX7219_SCROLL_DELAY)
您好,不好意思想問個新手的問題,
回覆刪除我用Thonny運行的時後會一直顯示ImportError: no module named 'max7219',請問要怎麼解決?
我是用windows系統的,查了很多資料還是沒辦法,而且很多解答看起來像是Linux系統的看不太懂,
試過安裝luma.led_matrix,
還有試過在pico裡創一個lib資料夾,然後把max7219.py存進去,
希望能幫忙解答一下,感覺是個小問題卻一直弄不好TT,感謝回答!
您好, 我實做時沒有遇到這個狀況, 但是看一下原因, 可能是放置.py的路徑, Thonny找不到. 解決的方法是在程式中使用 sys.path.append(‘’) 試看看是否可以?如果對用法不熟, 可以 Google 一下這個指令. 謝謝!!
刪除Error 應該是找不到max7219.py
刪除你要到 https://github.com/FideliusFalcon/rpi_pico_max7219 下載files.
裏面有max7219.py及main.py, 兩個files都要save 入 PICO裏面.
如果main.py唔改名, PICO會每次開機都行這個program.
張貼留言