測定した温度が設定値を上回ったらLEDを点灯させる
測定した温度が、事前に設定しておいた温度を超えた時にLEDを点灯させるように、
回路とスケッチを変更してみました。
2個使用していた温度センサーの内1個(temp2)を10KΩの可変抵抗器に置き換え、この可変抵抗器で温度を設定します。
temp2の温度への換算式は次のように変更します。
temp2 = ((v / 1024) * value2) * 20 ;
式の最後で100倍にして温度表示にしていたものを、20に変更して設定温度を設定しやすいようにします。
使用する可変抵抗器はB型(変化が直線的に変わる)の方が調整しやすくなります。。
LEDを点灯するスケッチの追加
測定した温度 >= 設定した温度 の時 ledPinを HIGHにします。
if( temp1 >= temp2) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
スケッチ全体
//測定した温度が設定値より高くなったらLEDを点灯
#include
//センサーに接続したアナログピンの番号
float sensor1Pin = 0;
float sensor2Pin = 1;
//LEDを接続したピン番号
int ledPin = 13;
//変数の定義
float v = 5;
float temp1 = 0;
float temp2 = 0;
float value1 = 0;
float value2 = 0;
int sum = 0;
int data = 0;
//LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
//LCDの桁数と行数をセットする
lcd.begin(16, 2);
//
pinMode(13, OUTPUT);
}
void loop() {
//LCDの表示をクリアする
lcd.clear();
//センサーピン1の温度センサーの値を読み取る
//センサーの値を50回読み取り平均化する
sum = 0;
for (int i = 0; i < 50; i++) {
data = analogRead(sensor1Pin);
sum = sum + data;
delay(2);
}
value1 = sum / 50;
//センサーピン2の値を読み取る
value2 = analogRead(sensor2Pin);
//読み取った値を温度に換算
temp1 = ((v / 1024) * value1) * 100 ;
temp2 = ((v / 1024) * value2) * 20 ;
//
if( temp1 >= temp2) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
//LCDに温度を表示する
lcd.print("temp1: ");
lcd.print(temp1);
lcd.setCursor(11, 0);
lcd.write(0xDF);
lcd.print("c ");
lcd.setCursor(0, 1);
lcd.print("temp2: ");
lcd.print(temp2);
lcd.setCursor(11, 1);
lcd.write(0xDF);
lcd.print("c ");
//次のループまで1秒待つ
delay(1000);
}
配線図
ボード
温度が上昇した時にそれを感知して冷却ファンを自動でまわす時などに応用できます。