轉載請註明文章來源,更多教程可自助參考docs.tpyboard.com,QQ技術交流羣:157816561,公衆號:MicroPython玩家匯html
又是一年畢業季,只有到了畢業季纔會意識到本身又離青春遠了一大步。畢業後,你們都各奔東西了,若是這個時候有喜歡的人仍是藏在心底的話,難免會給人生留下遺憾。爲了避免留遺憾,不老套,製做一款表白神器,是否是會更容易表白成功呢?git
以前使用8*8LED點陣模塊作過一款跳動的心,由於是直接用的點陣模塊,因此控制就用了16個IO,未免有些繁瑣,浪費資源。最近發現了一個好東西——MAX7219多位LED 顯示驅動器。使用該驅動器加上點陣屏或者數碼管,驅動起來特別方便簡單,並且加上電源腳也不過就5根線而已。github
MAX7219 是美國MAXIM 公司推出的多位LED 顯示驅動器,採用3 線串行接口傳送數據,可直接與單片機接口鏈接,用戶能方便修改其內部參數,以實現多位LED 顯示。它內含硬件動態掃描電路、BCD譯碼器、段驅動器和位驅動器。此外,其內部還含有8X8 位靜態RAM,用於存放8個數字的顯示數據。顯然,它可直接驅動64 段LED點陣顯示器。當多片MAX7219 級聯時,可控制更多的LED點陣顯示器。顯示的數據經過單片機數據處理後,送給MAX7219 顯示。緩存
引腳圖:spa
固然了,直接拿到這個驅動器一時也不知道該怎麼用,因而就直接買了現成的MAX7219驅動器結合8*8LED點陣屏模塊。調試
看反面圖能夠看出,該模塊不只有DIN輸入端口還有DOUT輸出端口,用於多個模塊級聯。使用的單個模塊時,開發板只接入模塊的輸入端口便可;當多個模塊級聯時,第一個模塊的輸出端口接第二個模塊的輸入端口,第二個輸出端口接第三個輸入端口,依次類推。code
話很少說了,立刻動手實踐起來。接線很簡單,見下表:htm
TPYBoard v102 | MAX7219點陣模塊 |
VIN | VCC |
GND | GND |
X3(普通IO均可) | DIN |
X2 | CS |
X1 | CLK |
TPYBoard v102開發板若沒有使用過,附上連接看先了解下。http://docs.tpyboard.com/zh/latest/tpyboard/tutorial/v10x/sta
rt/blog
程序呈上:教程
主程序 main.py。
1 import MAX7219 #導入模塊 2 3 #CLK -> X1,CS -> X2,DIN -> X3 4 #num級聯的模塊數量 5 led = MAX7219.Lattice('X1','X2','X3',num=1) 6 #要顯示的內容,顯示的內容根據字庫文件而定,見font_max7219.py。 7 #你們也能夠自定義圖案添加上。 8 msg = 'LOVE大小' 9 10 while True: 11 #顯示 12 led.display(msg)
字庫文件 font_max7219.py。
FONT8_8= { '0':[0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C],#0 '1':[0x10,0x18,0x14,0x10,0x10,0x10,0x10,0x10],#1 '2':[0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E],#2 '3':[0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0],#3 '4':[0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8],#4 '5':[0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0],#5 '6':[0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0],#6 '7':[0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8],#7 '8':[0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E],#8 '9':[0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E],#9 'A':[0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22],#A 'B':[0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0],#B 'C':[0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0],#C 'D':[0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0],#D 'E':[0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C],#E 'F':[0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40],#F 'G':[0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C],#G 'H':[0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44],#H 'I':[0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C],#I 'J':[0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30],#J 'K':[0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24],#K 'L':[0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C],#L 'M':[0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81],#M 'N':[0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0],#N 'O':[0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C],#O 'P':[0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20],#P 'Q':[0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D],#Q 'R':[0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21],#R 'S':[0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C],#S 'T':[0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8],#T 'U':[0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C],#U 'V':[0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18],#V 'W':[0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0],#W 'X':[0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41],#X 'Y':[0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8],#Y 'Z':[0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F],#Z '大':[0x00,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x00],#大心 '小':[0x00,0x00,0x66,0x7E,0x3C,0x18,0x00,0x00],#當心 '中':[0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8],#中 '國':[0xFE,0xBA,0x92,0xBA,0x92,0x9A,0xBA,0xFE],#國 }
模塊驅動程序max7219.py就不在這裏呈現了,文章末有連接,你們能夠去下載。
https://v.qq.com/x/page/n08814kmrfc.html
這樣雖然已經很炫了,不過加上無線遙控的效果是否是就更棒了。因而,找來了之前買的HC-05(HC-06也同樣)藍牙模塊,結合一下整上。
藍牙模塊的鏈接線:
TPYBoard v102 | HC-05/06藍牙模塊 |
VIN | VCC |
GND | GND |
Y1 | RX |
Y2 | TX |
其餘文件不用動,改動下main.py,增長上串口讀寫操做便可。
1 import MAX7219 #導入模塊 2 from pyb import UART 3 #初始化串口參數,使用串口6 波特率9600 超時時間50毫秒 4 #串口6 TX->Y1 RX->Y2 5 #其餘串口對應的引腳編號詳見針腳圖:http://old.tpyboard.com/document/documents/10x/TPYBoardv10xPCBpng.pdf 6 uart = UART(6,9600,timeout=50) 7 8 #CLK -> X1,CS -> X2,DIN -> X3 9 #num級聯的模塊數量 10 led = MAX7219.Lattice('X1','X2','X3',num=1) 11 led.display('大') #默認顯示大心圖案 12 while True: 13 if uart.any() > 0: #any()返回串口緩存區的數據長度,返回值大於0即表示有數據 14 DATA = uart.read().decode() #讀取緩存區所有數據,返回值爲bytes,decode()轉爲字符串 15 led.display(DATA) #進行顯示
藍牙串口調試助手(Android)下載地址:http://old.tpyboard.com/download/tool/164.html
表白神器源碼下載地址:https://github.com/TPYBoard/TPYBoard-v102