大型7セグLEDを4個使った表示装置
先日Amazonで買った74HC595がたくさん余ってるので,以前デジットで1個100円で買った1.5inchの大型7セグLED(アノードコモン) 4個を使ってArduino用の4桁7セグLED表示装置を作ってみました。
回路はこのシールドをマネしてこんな感じ↓
a~gのセグメントはそれぞれLEDが2個直列になってるので電流制限抵抗がなくても それぞれ6mA程度しか流れませんでしたが,DpはLED1個なので,220Ωの電流制限抵抗を入れました。
Arduinoからは SDI,LAT,CLKの3本の線でコントロールできるから便利です。
参考スケッチ ↓
//大型7segLED4個 + 74HC595を2個でカウントアップ
#define SDI 8
#define LAT 9
#define CLK 10
const byte digit[] = //7seg 点灯パターン(アノードコモン)
{
B00000011, // 0 ( abcdefgDp )
B10011111, // 1
B00100101, // 2
B00001101, // 3
B10011001, // 4
B01001001, // 5
B01000001, // 6
B00011011, // 7
B00000001, // 8
B00001001 // 9
};const byte segment[] =
{
B00000000,
B10000000, //左端の7セグLED
B01000000, //
B00100000, //
B00010000 //右端の7セグLED
};void setup() {
pinMode(SDI, OUTPUT);
pinMode(LAT, OUTPUT);
pinMode(CLK, OUTPUT);
}void loop() {
for (int i=0; i < 10000; i++){
Disp(1,i/1000);
Disp(2,i%1000/100);
Disp(3,i%100/10);
Disp(4,i%100%10);
}
}void Disp(byte seg,byte value){
digitalWrite(LAT, LOW);
shiftOut(SDI, CLK, LSBFIRST,digit[value]);
if (seg == 2) {
shiftOut(SDI, CLK, LSBFIRST, digit[value]&B11111110); //左から2番目の7セグLEDに小数点をつける
}
shiftOut(SDI, CLK, LSBFIRST,segment[seg]);
digitalWrite(LAT, HIGH);
delay(2);
}
| 固定リンク | 0
「Arduino」カテゴリの記事
- 新型 Arduino UNO R4 MINIMA を買った(2023.07.01)
- 大型7セグLEDを4個使った表示装置(2022.01.23)
- Arduinoで作ろう(61) Digisparkで7セグLED温度計(2022.01.16)
- Arduinoで作ろう(60) Digisparkでデジタル時計(2022.01.10)
- Arduinoで作ろう(59) DigisparkのP5を使えるようにした(2022.01.08)