Enkla termostat genom att använda Arduino (4 / 5 steg)
Steg 4: Programmering termostaten!
Nu får vi kod våra termostat. Öppen upp den Arduino App (om du inte har det, det är gratis! Ladda ner det här: https://www.arduino.cc/en/Main/Software)
Jag kommer att skicka koden och använda bilder för att förklara vad som händer på alla stadier.
#include
dubbla refV;
dubbel tL = 25;
dubbel tH = tL + 1.
CONST int button6 = 6; denna knapp tar temp upp
CONST int button7 = 7. denna knapp ger temp ner
CONST int button8 = 8;
int speakerPin = 10;
int numTones = 5;
int toner [] = {261, 294, 330, 370, 415};
int button6state = 0;
int button7state = 0;
int button8state = 0;
LiquidCrystal lcd(12,11,5,4,3,2);
void setup()
{
pinMode (button6, ingång);
pinMode (button7, ingång);
pinMode (button8, ingång);
pinMode (10, OUTPUT);
pinMode(13,OUTPUT);
LCD.BEGIN(16,2);
lcd.setCursor(0,0);
LCD.Print(tL);
LCD.Print ("till");
LCD.Print(tH);
analogReference(DEFAULT);
refV = 5;
pinMode(13,OUTPUT);
Serial.BEGIN(9600);
Serial.Print ("tL är:");
Serial.Print("\t");
Serial.println(tL);
Serial.Print ("tH är:");
Serial.Print("\t");
Serial.println(tH);
Serial.Print("Temp(C)");
Serial.Print("\t");
Serial.println("status");
Serial.println("___");
Serial.println ("början av Data:");
}
void loop()
{
int acc = 0;
int N = 10;
för (int jag = 0; jag < N; i ++) {
ACC += analogRead(0); Delay(10);
}
dubbel spänning = refV*acc/1023./(double(N));
Double tempC = (spänning) * 100.;
lcd.setCursor(0,1);
LCD.Print(tempC);
button6state = digitalRead(button6); koden för knappen 6
om (button6state == hög)
{
tL = tL + 0,5;
tH = tH + 0,5;
lcd.setCursor(0,0);
LCD.Print(tL);
LCD.Print ("till");
LCD.Print(tH);
för (int jag = 0; jag < numTones; i ++)
{
tonen (speakerPin, tones[4]);
Delay(30)
}
noTone(speakerPin);
}
IF(tH > 55)
{
för (int jag = 0; jag < numTones; i ++)
{
tonen (speakerPin, tones[0]);
Delay(100);
}
noTone(speakerPin);
tH = 55.
tL = 54.
för (int jag = 0; jag < 3; i ++)
{lcd.setCursor(9,0);
LCD.Print("")
Delay(300)
lcd.setCursor(9,0);
LCD.Print(tH);
Delay(300);
}
IF(tL < 20)
{
för (int jag = 0; jag < numTones; i ++)
{
tonen (speakerPin, tones[2]);
Delay(100);
}
noTone(speakerPin);
tH = 21;
tL = 20;
för (int jag = 0; jag < 3; i ++)
{
lcd.setCursor(0,0);
LCD.Print("");
Delay(300);
lcd.setCursor(0,0);
LCD.Print(tL);
Delay(300);
}
}
om (tempC < tL)
{
digitalWrite(13,HIGH)
}
IF(digitalRead(13)==High)
{
Serial.Print(tempC);
Serial.Print("\t");
Serial.println("1");
}
Delay(50);
}