Arduino termostat med TC74 sensor (6 / 7 steg)
Steg 6: Hela koden (nedladdningsbara nedan.)
Tar en analog ingång från en potentiometer och använder som
som önskad temperatur cutoffs.
Fläkt och värmare är båda kontrolleras av separata potentiometrar
även om deras lägen (hög, medel, låg) kontrolleras
på enhetens sida.
Tröskelvärden som representerar den önskade temperaturen som vi vill
den aktuella temperaturen att gå mot.
Fan kan endast justeras från 65 till 85 grader Fahrenheit
Värmaren kan justeras från 55 till 75 grader Fahrenheit.
#include "Wire.h"
Wire bibliotek
#define adress 0x4a
#define baudvärde 9600
baudvärde för kommunikation
byte val = 0;
int fanAnalog = A0;
int heaterAnalog = A1;
int fanDigit = 0;
int heaterDigit = 0;
int fanThreshold = 0;
int heaterThreshold = 0;
initiera och skapa variabler
void setup()
{
Wire.BEGIN();
Serial.BEGIN(BaudRate);
pinMode (13, OUTPUT);
pinMode (4, OUTPUT);
}
void loop()
{
fanDigit = analogRead (fanAnalog) / 4;
heaterDigit = analogRead (heaterAnalog) / 4;
fanThreshold = 65 + fanDigit * 20/255;
heaterThreshold = 55 + heaterDigit * 20/255;
Berättar på vilken temperatur saker kommer eller inte kommer att hända.
Serial.Print ("temperatur i Fahrenheit");
Serial.Print("\t");
Serial.Print ("Fan tröskel Temp");
Serial.Print("\t");
Serial.Print ("värmare tröskel Temp");
Serial.println("");
int temperatur;
int temperatureF;
temperaturen i en byte
initiera Fahrenheit temperatur
Wire.beginTransmission(address);
Starta överföringen
Wire.write(val);
Wire.requestFrom (adress, 1);
om (Wire.available()) {
temperatur = Wire.read();
temperatureF = temperatur * 9 / 5 + 32; konverterar till Fahrenheit. Ja, jag är amerikansk.
IF(temperatureF>fanThreshold) {
digitalWrite 13, hög. Vänder på fan om temperaturen är högre än tröskelvärdet
}
annat {
digitalWrite 13, låg. Vänder eller håller fan bort
}
IF(temperatureF<heaterThreshold) {
digitalWrite (4, hög). Vänder på värmaren är temperatur är lägre än tröskelvärdet
}
annat {
digitalWrite (4, låg). Inaktiverar värmare
}
Serial.Print ("\t");
Serial.Print(temperatureF);
}
annat {
Serial.Print("---");
}
Serial.Print("\t");
Serial.Print("\t");
Serial.Print("\t");
Serial.Print ("\t");
Serial.Print(fanThreshold);
Serial.Print("\t");
Serial.Print("\t");
Serial.Print ("\t");
Serial.Print(heaterThreshold);
Serial.println("");
Skriver ut värden för aktuell temperatur, då båda tröskel värden.
Massor av formatering
Delay(5000);
}