必要なもの
- 220Ω抵抗×8
- 4桁7segLED(カソードコモン)(OSL40562-LB)
ダイナミック接続4桁高輝度青色7セグメントLED表示器 カソードコモン カソード共通接続: LED(発光ダイオード) 秋月電子通商 電子部品 ネット通販
250円くらいで売られています。
つなぎかた
こんなかんじでつなぎます。抵抗は220Ω。LEDはカソードコモン。(OSL40562-LB)
LEDと番号はこのような対応になっています。6,8,9,12がそれぞれ一の位から千の位の桁のスイッチを担当しています。
LED番号 | Pin.No |
1 | 8 |
2 | 7 |
3 | 6 |
4 | 5 |
5 | 4 |
6 | 9 |
7 | 3 |
8 | 10 |
9 | 11 |
10 | 2 |
11 | 1 |
12 | 12 |
コード
//LED site:(http://happy-arduino.blogspot.jp/2012/08/17_27.html) const int BUTTON = 11; // プッシュボタンが接続されているピン const int led_1 = 9; // 7segLED the one's place const int led_10 = 10; // 7segLED the ten's place const int led_100 = 11; const int led_1000 = 12; int val = 0; // 入力ピンの状態がこの変数(val)に記憶される int old_val = 0; // valの前の値を保存しておく変数 int state = 0; // LEDの状態(0ならオフ、1ならオン) int state_1=0; // the one's digit int state_10 =0; // the ten's digit int state_100 =0; int state_1000 =0; void setup(){ //1~8番ピン デジタル出力へセット for (int i=1; i<=8; i++){ pinMode(i,OUTPUT); } pinMode(BUTTON, INPUT); // BUTTONは入力に設定 pinMode(led_10, OUTPUT); // 7segLED はoutput pinMode(led_1, OUTPUT); pinMode(led_100, OUTPUT); pinMode(led_1000, OUTPUT); } //LEDレイアウトを定義 boolean Num_Array[11][8]={ {1,1,1,0,1,0,1,1},{0,0,1,0,1,0,0,0},{1,0,1,1,0,0,1,1},{1,0,1,1,1,0,1,0}, {0,1,1,1,1,0,0,0},{1,1,0,1,1,0,1,0},{1,1,0,1,1,0,1,1},{1,1,1,0,1,0,0,0}, {1,1,1,1,1,0,1,1},{1,1,1,1,1,0,1,0},{0,0,0,0,1,0,0} }; //LED表示関数を定義 void NumPrint(int Number){ for (int w=0; w<=7; w++){ digitalWrite(w+1,Num_Array[Number][w]); } } void loop(){ val = digitalRead(BUTTON); // 入力を読み取りvalに格納 state = (state+1) % 10000; state_1 = (state+1) % 10; state_10 = state /10 % 10; state_100 = state /100 % 10; state_1000 = state /1000 % 10; digitalWrite(led_1000,1); digitalWrite(led_100,1); digitalWrite(led_10,1); digitalWrite(led_1,0); NumPrint(state_1); delay(3); digitalWrite(led_1000,1); digitalWrite(led_100,1); digitalWrite(led_10,0); digitalWrite(led_1,1); NumPrint(state_10); delay(3); digitalWrite(led_1000,1); digitalWrite(led_100,0); digitalWrite(led_10,1); digitalWrite(led_1,1); NumPrint(state_100); delay(3); digitalWrite(led_1000,0); digitalWrite(led_100,1); digitalWrite(led_10,1); digitalWrite(led_1,1); NumPrint(state_1000); delay(3); }
- LEDが点灯する場所を行列に収めています。
- Num_Array[0]を呼び出すと0が表示されるようなLED点灯のパターンになります。
- x位のスイッチをON、ほかの位のスイッチはOFF、桁の数字を表示させる。という作業を連続して行っています。これによって人間の目には全ての桁のLEDが同時に点灯しているようにみえます。