Tiny2313でマトリックスLEDを光らせる

ATTiny2313と秋月のマトリックスLED(TOM-1588)で遊んでみました.最初は,入手性の良いMAX7219を使ったのですが,高価すぎるのと,自由に明るさを変えるのが面倒なため,BA823というドライバICを使うことにしました.

MAX7219を使う

MAX7219は,8桁の7セグLEDや8x8マトリックスLEDを制御できるドライバICです.ダイナミック点灯の制御をしてくれて,輝度を調整する機能も内蔵しています.

専用ICなので抵抗やトランジスタなどが不要になり,とても楽です.ただし,高価です.千石で1000円でした.

CIMG0009.jpg

回路

部品単価(円)購入場所
MAX72191 1000千石
ATTiny23131 100秋月
TOM-15881 100秋月

あとで.

カソードの出力を監視して垂直(?)同期を取れば16階調までならちらつきも気にならない感じです.

気合で同期を取っているひともいるみたいです.http://d.hatena.ne.jp/KZR/20090824/p2

100円のマトリックスLEDと100円のマイコンに,1000円もするLEDドライバがつながっているのは,何か間違っている気がするのでどうにかしたい.

BA823を使う

MAX7219は高価なのと,ドット単位での明るさ制御に難があるので,BA823を使ってみました.

電流がたくさん流せるシフトレジスタです.LEDや熱転写式プリンタのヘッド制御に使うICのようで,シンク電流は200mAまで流せます.ノイズとかを気にしないなら,小型のモータ等も動かせると思います.

CIMG0010.jpg

回路

マトリックスLEDを挿すソケットは,16ピンのICソケットを2つに切って代用.部品代は全部あわせても,400円くらいです.

部品購入場所備考
BA8231鈴商100円
ATTiny23131秋月100円 たくさん買えば90円
TOM-15881秋月100円 在庫限り?
16ピンソケット2秋月10個100円
20ピンソケット1秋月10個100円
100Ω8千石200個200円
0.1uF1秋月10個100円

回路がマトリックスLEDの裏に全て収まることを確認.

matrix01.png

R=100~200Ωくらい.電源系は省略.LEDのピン配置は秋月のTOM-1588.BA823は鈴商で100円で買えます.

CIMG0011.jpg

プログラム

#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(;;);
}

光らせてみた.

CIMG0014.jpg

あとは通信用のコネクタつけて,たくさんつなげられるようにする予定.

履歴

Copyright © 瓶詰堂 all rights reserved.