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);


}