12.Arduino+温度計+7セグメントLEDの実験
(1)実験写真
(2)回路図
(3)温度センサ LM35 仕様書
LM35.pdf
(4)実験動画
IMG_5969.MOV
(5)プログラム
void setup() { // 電源投入後setupの括弧内の処理が一度だけ行われる。
for(int i=0;i<11;i++){
pinMode(i, OUTPUT); // 接続ポートを初期化
}
}
byte s0 = B11000000; //7セグLED表示データ 0 1 2 3 4 5 6 7 8 9 . 黒
byte s1 = B11111001;
byte s2 = B10100100;
byte s3 = B10110000;
byte s4 = B10011001;
byte s5 = B10010010;
byte s6 = B10000010;
byte s7 = B11011000;
byte s8 = B10000000;
byte s9 = B10010000;
byte s10 = B01111111;
byte s11 = B11111111;
byte s = 0; //変数定義
byte ss = 0;
float t1=0;
unsigned int t2=0;
unsigned int t3=0;
unsigned int t4=0;
unsigned int t5=0;
float t6=0;
int i1 = 0;
void Hyouji(byte s){ //LEDに数字を表示
switch (s){ //sの数字に従って7セグLED表示
case 0:
ss = s0;
break;
case 1:
ss = s1;
break;
case 2:
ss = s2;
break;
case 3:
ss = s3;
break;
case 4:
ss = s4;
break;
case 5:
ss = s5;
break;
case 6:
ss = s6;
break;
case 7:
ss = s7;
break;
case 8:
ss = s8;
break;
case 9:
ss = s9;
break;
case 10:
ss = s10;
break;
case 11:
ss = s11;
break;
}
for(int j=0;j<8;j++){
byte b = bitRead(ss,j);
digitalWrite(j,b);
}
}
void loop() { // loopの括弧内の処理が繰り返される
i1 = i1 + 1;
t6 = analogRead(0)*4.8875; // アナログピンを読み取る
t1 = t1 + t6;
if (i1 == 100){
t1 = t1 / 100 + 8; // 温度補正 +0.8度
// 3桁の数字を3つの数字に分解して t2 t4 t5 に入れる
t2 = t1 / 100; // 567 ÷ 100 = 5
t3 = t1 - t2 * 100; // 567 - 5 × 100 = 67
t4 = t3 / 10; // 67 ÷ 10 = 6
t5 = t3 - t4 * 10; // 67 - 6 × 10 = 7
// t2 t4 t5 = 5 6 7
i1 = 0;
t1 = 0;
}
digitalWrite(8,1);
digitalWrite(9,0);
digitalWrite(10,0);
s = t2;
Hyouji(s);
delay(5); // ウエイト
digitalWrite(8,0);
digitalWrite(9,1);
digitalWrite(10,0);
s = t4;
Hyouji(s);
digitalWrite(7, 0); //小数点点灯
delay(5); // ウエイト
digitalWrite(8,0);
digitalWrite(9,0);
digitalWrite(10,1);
s = t5;
Hyouji(s);
delay(5); // ウエイト
digitalWrite(10,0);
}