2010年5月17日(月)
8x8ドットマトリクスLED #1
Arduinoだけで1列スキャン
これまでに「順番に点灯」と「任意に点灯」を行いました。これらを応用して8x8ドットマトリクスLEDを制御します。
ドットマトリクスLED(TOM-1588BH-B/C-4880X)の回路図をデータシートから抜き出したものです。
回路図では少し複雑ですが、光っているある瞬間は8バーのものが8列並んだものだとイメージします。
まずは縦に1列全灯を順番に点灯させてみます。
int row[] = {2, 3, 4, 5, 6, 7, 8, 9}; int col[] = {10, 11, 12, 14, 15, 16, 17, 18}; void setup(void){ for (int r=0; r<8 ; r++) { pinMode(row[r], OUTPUT); digitalWrite(row[r], HIGH); } for (int c=0; c<8 ; c++) { pinMode(col[c], OUTPUT); digitalWrite(col[c], HIGH); } } void scan(int data){ for(int s=0; s<8; s++){ digitalWrite(col[s], (data>>s)&1); } } void scantest(void){ for(int x=0; x<8; x++){ scan(x) ; delay(200); } } void loop(void){ scantest(); }
# 前回と同様なため動画は省略します。
IC 74HC138
1列スキャンができました。がこのままでは将来的に8x8を二つならべた8x16にした場合などにArduinoのI/O pinの数が足りなくなってきます。
そこで偉い人は考えました。0と1の信号を3つ組み合わせれば8つの0と1の信号に変えることができる、と。
どういうことかというと、2進数で000〜111までが10進数で0〜7までの8個にあたることを利用するのです。
入力する3つの信号をA0〜A2とし、その3つの信号で2進数を読み替えた10進数にあたるpinY0〜Y7に信号を出力するというものです。
A0 | A1 | A2 | Y0 | Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
これをICチップにしたものが74HC138(74138/3to8)です。
74138で1列scan
74138を使って1列を連続点灯してみます。
int row[] = {2, 3, 4, 5, 6, 7, 8, 9}; int col[] = {10, 11, 12}; #define delaytime=1000 void setup(void){ for (int r=0; r<8 ; r++) { pinMode(row[r], OUTPUT); digitalWrite(row[r], HIGH); } for (int c=0; c<3 ; c++) { pinMode(col[c], OUTPUT); digitalWrite(col[c], HIGH); } } void scan(int data){ for(int s=0; s<3; s++){ digitalWrite(col[s], (data>>s)&1); } } void scantest(void){ for(int x=0; x<8; x++){ scan(x) ; delay(delaytime); } } void loop(void){ scantest(); }
あくまで自分がわからなかったところを調べ、個人的に行った実験のメモとなります。
当サイトを利用して生じた損失・損害等、いかなる不利益も保証いたしかねます。
あらかじめご了承ください。
# 2010.07.15 回路図がテレコになっていたため修正
トラックバック - http://d.hatena.ne.jp/a10i/20100517/1274100686
リンク元
- 2 http://www.disp.flab.fujitsu.co.jp/Unix/Admin/Gabor/emacs.htm
- 2 http://www.google.co.jp/search?hl=&q=Realtek+CentOS+&sourceid=navclient-ff&rlz=1B3GGLL_jaJP378JP379&ie=UTF-8
- 1 http://d.hatena.ne.jp/keyword/C++
- 1 http://search.auone.jp/?q=ドットマトリクスLED&sr=0001&link_u=&lr=&ie=UTF-8&start=20&nb=q=&hl=ja&lr=&client=kddi-auone&ad=w6&channel=main&gl=jp&output=xml_no_dtd&ie=U
- 1 http://search.yahoo.co.jp/search?p=CentOS-5.3-i386-netinstall.iso&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 1 http://www.google.co.jp/hws/search?hl=ja&channel=ssp&client=fenrir-sub&adsafe=off&safe=off&lr=lang_ja&q=civilization4 体験版
- 1 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=centos+ntfs+マウント&aq=1&aqi=g2g-c1g1g-c1g1g-c1g1g-c1g1&aql=&oq=centos ntfs&gs_rfai=
- 1 http://www.google.co.jp/search?hl=ja&rlz=1T4GGLL_jaJP320JP321&q=CentOS+mount ntfs&lr=&aq=f&aqi=g1&aql=&oq=&gs_rfai=
- 1 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&hs=HS2&rls=org.mozilla:ja:official&q=10バーLEDアレイ&revid=2088307193&sa=X&ei=eFrxS9neBc-TkAWM-tDWBg&ved=0CB0Q4QIoAA
- 1 http://www.google.co.jp/search?hl=ja&source=hp&q=+Arduino+8x8&aq=f&aqi=&aql=&oq=&gs_rfai=