kuroの覚え書き

96の個人的覚え書き

Arduino 温度警報装置



大学の研究室の植物栽培室の室温監視用の警報付き温度計を作った。


#include <LiquidCrystal.h>
int ledPin0 = 12; //LED signal
int alertPin = 13; //alert signal
int analogPin0 = 0; //LM35DZ input
int analogPin1 = 1; //Low limit input
int analogPin2 = 2; //High limit input

int val = 0; //input data from LM35DZ
int val1 = 0; //input data from Low limit dial
int val2 = 0; //input data from High limit dial
int summary; // summary of input data
int i;
double t_value; //temperature value
int t_1;
int t_2;
// LiquidCrystal display with:
// rs on pin 2
// rw on pin 3
// enable on pin 4
// d4, d5, d6, d7 on pins 5, 6, 7, 8
LiquidCrystal lcd(2, 3, 4, 5, 6, 7, 8);

void setup()
{
pinMode(ledPin0, OUTPUT);
pinMode(alertPin, OUTPUT);
Serial.begin(9600);
lcd.clear();
}

void loop()
{

val1 = analogRead(analogPin1); // Low limit ??????????????
val2 = analogRead(analogPin2); // High limit ??????????????
summary = 0;
for(i=0;i<50;i++)
{
val = analogRead(analogPin0); //read data from analog0 pin
summary = summary + val;
delay(40);
}

t_value = (double)(summary)/50.0*4.9/1024.0*100.0-4;
t_1 = (int)(t_value);
t_2 = (int)((t_value - (double)t_1) * 100.0);

if (val1/20 > t_value)
{
digitalWrite(alertPin, HIGH); // sets the alert on
digitalWrite(ledPin0, LOW); // sets the LED on
}
else
{
if (t_value > val2/20)
{
digitalWrite(alertPin, HIGH); // sets the alert on
digitalWrite(ledPin0, LOW); // sets the LED on
}
else
{
digitalWrite(alertPin, LOW); // sets the alert off
digitalWrite(ledPin0, HIGH); // sets the LED on
}
}
DispLCD();
WriteSerial();

}

void DispLCD()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Now Temp = ");
lcd.print(t_1);
lcd.print(".");
lcd.print(t_2);

lcd.setCursor(0,1);
lcd.print("Lo:");
lcd.print(val1/20);

lcd.setCursor(9,1);
lcd.print("Hi:");
lcd.print(val2/20);
}


void WriteSerial()
{
Serial.print(t_1);
Serial.print(".");
Serial.println(t_2);
}

http://brown.ap.teacup.com/nekosan0/213.html

http://www.eleki-jack.com/FC/2009/01/23arduinoarduino5.html

この辺りを参考にプログラムしてみた。

50回の測定から平均を取って測定値とし、ボリュームで設定した値と比較してLEDおよびブザーをONにする。

センサー自体は150円だが、結局諸々の(主に見た目をそれっぽくする)部品でソコソコかかり、おおよそ5000円ほどかかった。

f:id:k-kuro:20091120103019j:image

コントローラー本体

f:id:k-kuro:20091120103100j:image

警報部分。廊下に設置。一応ブザー音だけスイッチで消せるようにした。