2010年8月5日 星期四

Arduino 類比端子的臨時用途--成為數位端子

Arduino 的數位端子只有14個, Digital 0~13, 其中 0,1 作為 Serial 上下傳資料使用時不能作為其他用途, 若使用的數位端子少還沒有問題, 但為了控制 像 8x8 的 LED 矩陣, 基本就有 16支腳時, 就有點捉襟見肘, 總得想法子擴充一下 IO
常用的 LED 矩陣控制做法有幾種:
1 用 74154之類 IC自己接電晶體驅動 LED
2 用 TLC 5940 , MBI 5026 , MAX 7221/7219 , 等等恆流LED驅動IC 也可以
上面的作法可以依需求要多少有多少 IO可是若是只比固定接腳多一點, 如單顆 8x8LED 只要 16支腳, 找顆上面的 IC 去擴充, 還要考慮用SPI 還是 I2C...., 只要能再多個 3~4 支腳, 為何要這麼麻煩呢?

正在為了那多出來的少少接腳傷腦筋 東市買駿馬,西市買韉,南市買轡頭,北市買長鞭.....
碰巧重新翻看 Arduino 的Example - Display- RowColumnScanning 這個8x8 LED 矩陣程式

其中 有一段
Pin numbers:
Matrix:* Digital pins 2 through 13,
* analog pins 2 through 5 used as digital 16 through 19
Potentiometers:
* center pins are attached to analog pins 0 and 1, respectively
* side pins attached to +5V and ground, respectively.
????
這是說 類比端子也可以當作數位輸出端子用的意思嗎?
沒錯A0 as D14
A1 as D15
A2 as D16
A3 as D17
A4 as D18
A5 as D19

找出 Virtual BreadBoard 的 VBB 看接線圖, 真是用類比端子當數位端子接... ^_^
不用假裝花木蘭東買西買了 ^_^



以後單顆 8x8 LED 矩陣, 簡單利用 類比端子擴充使用就好了

pinMode(14,OUTPUT);

就可以用 A0 當作 D14 了。