Raspberry Pi Pico筆記(8):MAX7219 8x8 LED顯示開發板溫度

上一篇文章練習使用四位數七段顯示器顯示時間及溫度,本篇要繼續探討與 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)    

[結果]

[參考資料]


3 留言

  1. 您好,不好意思想問個新手的問題,
    我用Thonny運行的時後會一直顯示ImportError: no module named 'max7219',請問要怎麼解決?
    我是用windows系統的,查了很多資料還是沒辦法,而且很多解答看起來像是Linux系統的看不太懂,
    試過安裝luma.led_matrix,
    還有試過在pico裡創一個lib資料夾,然後把max7219.py存進去,
    希望能幫忙解答一下,感覺是個小問題卻一直弄不好TT,感謝回答!

    回覆刪除
    回覆
    1. 您好, 我實做時沒有遇到這個狀況, 但是看一下原因, 可能是放置.py的路徑, Thonny找不到. 解決的方法是在程式中使用 sys.path.append(‘’) 試看看是否可以?如果對用法不熟, 可以 Google 一下這個指令. 謝謝!!

      刪除
    2. Error 應該是找不到max7219.py
      你要到 https://github.com/FideliusFalcon/rpi_pico_max7219 下載files.
      裏面有max7219.py及main.py, 兩個files都要save 入 PICO裏面.
      如果main.py唔改名, PICO會每次開機都行這個program.

      刪除

張貼留言

較新的 較舊