kuroの覚え書き

96の個人的覚え書き

温室の温度警報装置



作ってます。


#include <LiquidCrystal.h>
int ledPin0 = 13; //LED signal
int alertPin = 8; //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 vtemp = 0; //temp data
// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

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 ??????????????
val = analogRead(analogPin0); // Analog?????????????????????
vtemp = (4.9*1000/1024)*val; //????????mV?????????
if (val1 > vtemp)
{
digitalWrite(alertPin, HIGH); // sets the alert on
digitalWrite(ledPin0, LOW); // sets the LED on
}
else
{
if (vtemp > val2)
{
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();
delay(1000);
}

void DispLCD()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Now Temp = ");
lcd.print(vtemp);
lcd.setCursor(0,1);
lcd.print("Lo: ");
lcd.print(val1);
lcd.setCursor(9,1);
lcd.print("Hi: ");
lcd.print(val2);
}


void WriteSerial()
{
Serial.println("HELLO WORLD!");
}

とりあえず現在温度、設定温度(H/L)を液晶に表示して、それを越えるとブザーとLEDでお知らせする所まで出来ました。

あとはシリアルで同じような内容を送信してネットワーク経由で監視できるようにする予定。

ハードはこれから。

覚え書き。

LM35DZのピンアサインは印字面を見て左からVin, Vout, GNDの順。