TOPへ戻る

20080623 ATtiny2313 LED PWM 出力の確認(ホタル編)

ATtiny2313 の PWM を使用してLEDをホタルっぽい制御をするプログラムを書いてみました。

確認用回路図


←クリックすると拡大します。
ISPのコネクタを外していますので、ISPを接続する線が残っています。

#include <stdlib.h> #include <avr/io.h> #include <util/delay.h> int main(void){ int i; int j; float bright = 255; int ti; int lp; // int ta = 500; //ヘイケボタル1秒間隔 // float tb = 0.51; int ta = 1000; //ゲンジボタル2秒間隔(西日本) float tb = 0.255; // int ta = 2000; //ゲンジボタル4秒間隔(東日本) // float tb = 0.1275; DDRB = 0xff; // portB output DDRD = 0x00; // portD input PORTD = 0xff; // portD pull up TCCR1B = 0x03; // ck / 256 TCCR1A = 0xc1; // normal 8bit for(;;){ lp = rand()%20+5; //点滅回数を乱数で求める 5〜25回 for(i = 0; i < lp; i++){ for(j = 0; j < ta; j++){ //点灯 OCR1AH = 0; OCR1AL = bright; bright = bright - tb; _delay_ms(1); } bright=0; for(j = 0; j < ta; j++){ //消灯 OCR1AH = 0; OCR1AL = bright; bright = bright + tb; _delay_ms(1); } } ti = rand()%10 + 1; //1周期終了後のウエイト 1〜10秒 for(i = 0; i < ti; i++) _delay_ms(1000); } }
ソースファイルのダウンロード


AVRSP-Gのヒューズビットの設定
内蔵クロック8MHz 分周比1/1 の設定です。

コンパイラは WinAVR-20070525 を使いました。



1)ホタルについてちょっと勉強した(^^; 明かりの点滅時間はヘイケボタル1秒間隔、ゲンジボタル2秒間隔(西日本)、ゲンジボタル4秒間隔(東日本)らしい。