以前書いた オブジェクト指向的Lチカを ATTiny13 を使って作りました。
試作品なのでバッファを入れていませんが、、、円高になったら基板起こしてクリスマス用に量産しようと思っているのだけど中々円高になりませんね。残念。
rin-goro@ringorou
オブジェクト指向的マルチLチカ https://t.co/qjB9JcF7HN
2017年07月04日 09:57
KiCadで回路は作ってあるのですが。
スケッチは以下になります。バイナリーで300バイトくらい、大分コンパクトです。
/*
Multi Blink ATTiny13
PCINT5/A0/D5/RST |1---O---8| VCC
PCINT3/A3/D3 |2 7| D2/A1/INT0/PCINT2
PCINT4/A2/D4 |3 6| D1/PWM/PCINT1
GND |4-------5| D0/PWM/A0/PCINT0
*/
#define LED1 3
#define LED2 4
#define LED3 1
#define LED4 2
struct led {
char pin; // PIN No.
bool on; // ON/OFF status
int cont; // time count
int ontime; // ON time (msec)
int intval; // interval time (msec)
};
struct led led1={LED1,0,200, 800,1000};
struct led led2={LED2,0,400, 950,1350};
struct led led3={LED3,0,500, 1150,1450};
struct led led4={LED4,0,600, 1050,1550};
/*
* LED Blink func.
*
*/
void blinkled(struct led *myled)
{
int pin=myled->pin;
if(myled->cont++ == myled->ontime){
digitalWrite(pin,false);
myled->on=false;
} else if(myled->cont >= myled->intval){
digitalWrite(pin,true);
myled->cont=0;
myled->on=true;
}
// return myled->on;
}
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
void loop() {
delay(1);
blinkled(&led1);
blinkled(&led2);
blinkled(&led3);
blinkled(&led4);
}