Tiny2313でマトリックスLEDを光らせる
ATTiny2313と秋月のマトリックスLED(TOM-1588)で遊んでみました.最初は,入手性の良いMAX7219を使ったのですが,高価すぎるのと,自由に明るさを変えるのが面倒なため,BA823というドライバICを使うことにしました.
MAX7219を使う
MAX7219は,8桁の7セグLEDや8x8マトリックスLEDを制御できるドライバICです.ダイナミック点灯の制御をしてくれて,輝度を調整する機能も内蔵しています.
専用ICなので抵抗やトランジスタなどが不要になり,とても楽です.ただし,高価です.千石で1000円でした.
回路
部品 | 数 | 単価(円) | 購入場所 |
---|---|---|---|
MAX7219 | 1 | 1000 | 千石 |
ATTiny2313 | 1 | 100 | 秋月 |
TOM-1588 | 1 | 100 | 秋月 |
あとで.
カソードの出力を監視して垂直(?)同期を取れば16階調までならちらつきも気にならない感じです.
気合で同期を取っているひともいるみたいです.http://d.hatena.ne.jp/KZR/20090824/p2
100円のマトリックスLEDと100円のマイコンに,1000円もするLEDドライバがつながっているのは,何か間違っている気がするのでどうにかしたい.
BA823を使う
MAX7219は高価なのと,ドット単位での明るさ制御に難があるので,BA823を使ってみました.
電流がたくさん流せるシフトレジスタです.LEDや熱転写式プリンタのヘッド制御に使うICのようで,シンク電流は200mAまで流せます.ノイズとかを気にしないなら,小型のモータ等も動かせると思います.
回路
マトリックスLEDを挿すソケットは,16ピンのICソケットを2つに切って代用.部品代は全部あわせても,400円くらいです.
部品 | 数 | 購入場所 | 備考 |
---|---|---|---|
BA823 | 1 | 鈴商 | 100円 |
ATTiny2313 | 1 | 秋月 | 100円 たくさん買えば90円 |
TOM-1588 | 1 | 秋月 | 100円 在庫限り? |
16ピンソケット | 2 | 秋月 | 10個100円 |
20ピンソケット | 1 | 秋月 | 10個100円 |
100Ω | 8 | 千石 | 200個200円 |
0.1uF | 1 | 秋月 | 10個100円 |
回路がマトリックスLEDの裏に全て収まることを確認.
R=100~200Ωくらい.電源系は省略.LEDのピン配置は秋月のTOM-1588.BA823は鈴商で100円で買えます.
プログラム
#define F_CPU 8000000 #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> volatile uint8_t framebuf[] = { 0,2,4,6,8,10,12,16, 16,1,2,4,6,8,10,12, 12,16,1,2,4,6,8,10, 10,12,16,1,2,4,6,8, 8,10,12,16,1,2,4,6, 6,8,10,12,16,1,2,4, 4,6,8,10,12,16,1,2, 2,4,6,8,10,12,16,1, }; // タイマ割り込み ISR(TIMER0_OVF_vect) { static uint8_t cnt = 0; static uint8_t frame = 0; if ((PORTD&0x10)==0) { PORTD|= 0x10; // CLK H uint8_t d=0; uint8_t i; for (i=0;i<8;i++) { d>>=1; if (frame<framebuf[cnt*8+i]) d|=0x80; } PORTB=d; cnt=(cnt+1)&7; } else { PORTD&= ~0x10; // CLK L PORTB=0x00; if (cnt==0) { frame=(frame+1)&15; PORTD|= 0x20; // DAT H } else { PORTD&=~0x20; // DAT L } } } int main() { DDRB = 0xff; // LED matrix anode(0-7) DDRD = 0xf0; // LED cathode(BA823) PD5->dat PD4->clk TCCR0B = _BV(CS00); TIMSK = _BV(TOIE0); sei(); for(;;); }
光らせてみた.
あとは通信用のコネクタつけて,たくさんつなげられるようにする予定.
履歴
- 2009-11-17 公開