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)    

[結果]

[參考資料]


Share on Google Plus

0 Comments:

張貼留言