昨日のアレをArduinoで制御してみようと思い立った
理由は簡単
PICが思い通りに動いてくれなかった どこにバグがあるかわからない
ということでArduino
いちおう機械語のはずだし必要速度は出てくれるだろうと予想
んで
/*
pin2 = TC74HC4511AP A
pin3 = TC74HC4511AP B
pin4 = TC74HC4511AP C
pin5 = TC74HC4511AP D
pin8 = TC74HC238AP A
pin9 = TC74HC238AP B
pin10 = TC74HC238AP C
*/
boolean SEG[44];
void setup() {
int i = 2;
pinMode(i, OUTPUT); i++;
pinMode(i, OUTPUT); i++;
pinMode(i, OUTPUT); i++;
pinMode(i, OUTPUT); i = 8;
pinMode(i, OUTPUT); i++;
pinMode(i, OUTPUT); i++;
pinMode(i, OUTPUT); i = 0;
pinMode(13, OUTPUT);
SEG[i] = false; i++; SEG[i] = false; i++; SEG[i] = false; i++; SEG[i] = false; i++; // 0
SEG[i] = true; i++; SEG[i] = false; i++; SEG[i] = false; i++; SEG[i] = false; i++; // 1
SEG[i] = false; i++; SEG[i] = true; i++; SEG[i] = false; i++; SEG[i] = false; i++; // 2
SEG[i] = true; i++; SEG[i] = true; i++; SEG[i] = false; i++; SEG[i] = false; i++; // 3
SEG[i] = false; i++; SEG[i] = false; i++; SEG[i] = true; i++; SEG[i] = false; i++; // 4
SEG[i] = true; i++; SEG[i] = false; i++; SEG[i] = true; i++; SEG[i] = false; i++; // 5
SEG[i] = false; i++; SEG[i] = true; i++; SEG[i] = true; i++; SEG[i] = false; i++; // 6
SEG[i] = true; i++; SEG[i] = true; i++; SEG[i] = true; i++; SEG[i] = false; i++; // 7
SEG[i] = false; i++; SEG[i] = false; i++; SEG[i] = false; i++; SEG[i] = true; i++; // 8
SEG[i] = true; i++; SEG[i] = false; i++; SEG[i] = false; i++; SEG[i] = true; i++; // 9
SEG[i] = false; i++; SEG[i] = true; i++; SEG[i] = false; i++; SEG[i] = true; i++; // 10
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
}
void loop() {
for (int i = 0; i <= 10; i++) {
SetSeg(i);
digitalWrite(13, false);
delay(250);
digitalWrite(13, true);
delay(250);
}
}
void SetSeg(char c) {
int i = (c * 4);
digitalWrite(2, SEG[(0 + i)]);
digitalWrite(3, SEG[(1 + i)]);
digitalWrite(4, SEG[(2 + i)]);
digitalWrite(5, SEG[(3 + i)]);
}
というところまでできた
ビットシフトとか使えばもっと簡単だけど
めんどくさいしあまり推奨されてないのでこのような感じ
boolean型で配列を作って
それを代入する
本来7セグメントデコーダとか使わないときに使う手法
Arduinoの場合ピン数が少ないから7セグLEDを使うことは少ないけど
あの奇っ怪な配置をやるのは意外と便利
もっといい方法もあると思うけど
基本的にC語なら何でも使えるから多用してる
あとなんでかHTMLにコピーというのができないんだよなぁ
0 件のコメント:
コメントを投稿