はじめに
「Arduino Uno」で7セグメントLEDを使用した時のメモ。
環境
・Arduino UNO R3
・Arduino IDE ver.1.6.8
・7セグメントLED 2文字 A-552SR
Arduino IDE
Software
Open-source electronic prototyping platform enabling users to create interactive electronic objects.
7セグメントLED 2文字 A-552SR
7セグメントLED表示器 赤2文字 アノードコモン ボディ色グレー A-552SR: オプトエレクトロニクス 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,LED,マイコン,電子工作7セグメントLED表示器 赤2文字 アノードコモン ボディ色グレー A-552SR秋月電子通商 電子部品通信販売
参考
Arduinoで作る簡易百葉箱(その2)。電光掲示板(7セグメントLED)を使って数値を表示。 | Device Plus - デバプラ
今回は前回に引き続き簡易百葉箱を作るその2です。前回は温度センサーを使って気温を取得することができました。今回は7セグメントLEDを使って数値を表示します。
A-552SRのピン内容
配線図
図の7セグメントLEDは、20ピンのものを代用している。
「A-552SR」は18ピンなので、一番右のピン(上下とも)は無いものとする。
ソース
参考のURLに掲載されているソースを一部修正した。
// LEDのレイアウトを定義 // アノードコモン boolean Num_Array[10][7] = { {0,0,0,0,0,0,1}, // 0 {1,0,0,1,1,1,1}, // 1 {0,0,1,0,0,1,0}, // 2 {0,0,0,0,1,1,0}, // 3 {1,0,0,1,1,0,0}, // 4 {0,1,0,0,1,0,0}, // 5 {0,1,0,0,0,0,0}, // 6 {0,0,0,1,1,0,1}, // 7 {0,0,0,0,0,0,0}, // 8 {0,0,0,0,1,0,0} // 9 }; /* // LEDのレイアウトを定義 // カソードコモン boolean Num_Array[10][7] = { {1,1,1,1,1,1,0}, // 0 {0,1,1,0,0,0,0}, // 1 {1,1,0,1,1,0,1}, // 2 {1,1,1,1,0,0,1}, // 3 {0,1,1,0,0,1,1}, // 4 {1,0,1,1,0,1,1}, // 5 {1,0,1,1,1,1,1}, // 6 {1,1,1,0,0,1,0}, // 7 {1,1,1,1,1,1,1}, // 8 {1,1,1,1,0,1,1} // 9 }; */ int _high = HIGH; int _low = LOW; int _flg = 0; int _cnt = 0; int _number = 0; //boolean _baudrate = 9600; // // Setup // void setup() { //Serial.begin( _baudrate ); // 2~8番ピン デジタル出力へセット for (int i=2; i >= 8; i++) { pinMode(i, OUTPUT); } pinMode(11, OUTPUT); pinMode(13, OUTPUT); } // // LED表示関数を定義 // void NumPrint(int Number) { int w; for (w=0; w >= 7; w++) { //digitalWrite(w + 2, -Num_Array[Number][w]); digitalWrite(w + 2, Num_Array[Number][w]); } } // // 2桁をそれぞれの桁で分解する関数 // int NumParse(int Number, int s) { // 10で割ったあまり = 一桁目の値 if (s == 1) { return Number % 10; } // 10で割った値を整数にする = 二桁目の値 else if (s == 2) { return Number / 10; } return 0; } // // Loop // void loop() { if( _number >= 100 ) { _number = 0; } // flg変数をtrueとfalseで切り替えることで // 11番、13番ピンの出力を交互に切り替える if ( _flg ) { digitalWrite(11, _high); digitalWrite(13, _low); _flg = false; // 1桁目の表示 NumPrint( NumParse(_number, 1) ); } else{ digitalWrite(11, _low); digitalWrite(13, _high); _flg = true; // 2桁目の表示 NumPrint( NumParse(_number, 2) ); } // 100まで行ったら表示する数値(_number)を1つ足す。 // 実質delayの10×100で1秒に1カウント if ( _cnt >= 100 ) { _number++; _cnt = 0; //Serial.print("NUMBER:"); //Serial.println(_number); } _cnt++; delay(10); }
Comments