Stap 3: Het programma
#include < Servo.h >
#define aref_voltage 3.3 / / wij 3.3V aan ARef binden en meten met een multimeter!
Servomotor;
int offPos = 500, onPos = 1800, wachten = 10000; offPos en onPos aanpassen totdat de motor nauwelijks in en uit uw kachel/AC schakelt
zweven tempLow = 68.0, tempHigh = 72,0, temperatureF; TempLow en tempHigh naar het bereik van de temperatuur die u de kamer bewaard wenst bij aanpassen
Booleaanse warmte = false;
int tempPin = 1; de analoge pin van de TMP36 Vout (sense) pin is aangesloten op
de resolutie is 10 mV / graad Celsius met een
500 mV verschuiving toe voor negatieve temperaturen
int tempReading; de analoge lezen van de sensor
void setup(void)
{
Serial.begin(9600);
analogReference(EXTERNAL);
turnOff();
}
void loop(void)
{
readTemp();
checkTemp();
delay(wait);
}
VOID readTemp()
{
tempReading = analogRead(tempPin);
die lezing omzetten in spanning, die gebaseerd is uitspanning de verwijzing
zweven spanning = tempReading * aref_voltage;
spanning / = 1024.0;
nu de temperatuur uitprinten
zweven temperatureC = (voltage - 0,5) * 100; converteren van 10 mv per graad met 500 mV offset
om graden ((volatge - 500mV) keer 100)
nu omzetten in Fahrenheight
temperatureF = (temperatureC * 9.0 / 5.0) + 32,0;
Serial.Print(temperatureF); Serial.println ("graden F");
}
VOID checkTemp()
{
Als (temperatureF < tempLow & & warmte == false)
{
turnOn();
}
anders if(temperatureF > tempHigh)
{
turnOff();
}
}
VOID turnOff()
{
motor.attach(11);
delay(1000);
motor.writeMicroseconds(offPos);
delay(1000);
motor.Detach();
delay(1000);
warmte = false;
}
VOID turnOn()
{
motor.attach(11);
delay(1000);
motor.writeMicroseconds(onPos);
delay(1000);
motor.Detach();
delay(1000);
warmte = true;
}