Étape 3: Le programme
#include < Servo.h >
#define aref_voltage 3.3 / / lions-nous 3.3V à ARef et mesurer avec un multimètre !
Servo-moteur ;
int offPos = 500, onPos = 1800, attendre = 10000 ; régler offPos et onPos jusqu'à ce que le moteur tourne à peine sous et hors tension votre chauffage/la climatisation
float tempLow = 68,0, tempHigh = 72,0, temperatureF ; Régler tempLow et tempHigh à la gamme de température désirée la chambre maintenue à
chaleur booléen = false ;
int tempPin = 1 ; l’analogue de la TMP36 Vout (sens) broche est connecté à
la résolution est de 10 mV / degrés centigrades avec un
500 mV décalage pour permettre à des températures négatives
int tempReading ; l’analogue de lecture du capteur
Sub setup(void)
{
Serial.Begin(9600) ;
analogReference(EXTERNAL) ;
turnOff() ;
}
Sub loop(void)
{
readTemp() ;
checkTemp() ;
Delay(Wait) ;
}
Sub readTemp()
{
tempReading = analogRead(tempPin) ;
conversion que la lecture de la tension, qui est basé sur la tension de référence
flotteur de tension = tempReading * aref_voltage ;
tension / = 1024.0 ;
Imprimez maintenant la température
float temperatureC = (tension - 0.5) * 100 ; conversion de 10 mv par degré avec 500 mV offset
à degrés ((volatge - 500 mV) multiplié par 100)
maintenant convertir en Fahrenheight
temperatureF = (temperatureC * 9.0 / 5.0) + 32.0 ;
Serial.Print(temperatureF) ; Serial.println ("degrés F") ;
}
Sub checkTemp()
{
Si (temperatureF < tempLow & & chaleur == false)
{
turnOn() ;
}
d’autre if(temperatureF > tempHigh)
{
turnOff() ;
}
}
Sub turnOff()
{
Motor.Attach(11) ;
Delay(1000) ;
motor.writeMicroseconds(offPos) ;
Delay(1000) ;
Motor.Detach() ;
Delay(1000) ;
chaleur = false ;
}
Sub turnOn()
{
Motor.Attach(11) ;
Delay(1000) ;
motor.writeMicroseconds(onPos) ;
Delay(1000) ;
Motor.Detach() ;
Delay(1000) ;
chaleur = true ;
}