Arduinoで詰まったメモ
Arduino unoで7segを点灯しようとして詰まった
arduino unoを買ったのはだいぶ前なんだが、弄る暇がなくてずっとほっとかれてた。
正月休みを利用してポチポチいじり始めたのがきっかけ
やりたいこと
Arduino で7segを光らせたい。
回路
ごく普通の7segを点灯させる回路です。
いずれダイナミック点灯にする予定なのでトランジスタでOn/Offします。
ソースコード
つかなかったとき
webのリファレンスを参考に、標準ライブラリで書いた。
※7segの対応しているpinにa~g、dpをdefineしてあります。
void setup() { pinMode(PB0, OUTPUT); pinMode(PB1, OUTPUT); pinMode(seg_b, OUTPUT); pinMode(seg_c, OUTPUT); pinMode(seg_d, OUTPUT); pinMode(seg_e, OUTPUT); pinMode(seg_f, OUTPUT); pinMode(seg_g, OUTPUT); pinMode(seg_dp, OUTPUT); } void loop() { digitalWrite(PB0,LOW); digitalWrite(seg_a,HIGH); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,HIGH); digitalWrite(seg_f,HIGH); digitalWrite(seg_g,LOW); digitalWrite(seg_dp,LOW); }
ついたとき
標準ライブラリを無視して、レジスタでトランジスタを駆動させた。
void setup() { DDRB = 0x03; DDRD = 0x0f; PORTB = 0x00; } void loop() { PORTB = 0x01; digitalWrite(seg_a,HIGH); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,HIGH); digitalWrite(seg_f,HIGH); digitalWrite(seg_g,LOW); digitalWrite(seg_dp,LOW); }
これで動いた。
結論
わざわざ動作の遅くなる標準ライブラリを使わないで、
picと同じようにレジスタで動かそうね。