Paso 3: El programa
#include < Servo.h >
#define aref_voltage 3.3 / / lazo 3.3V a ARef y medimos con un polímetro.
Motor servo;
int offPos = 500, onPos = 1800, esperar = 10000; ajuste offPos y onPos hasta que el motor apenas enciende y apaga la calefacción/AC
flotador tempLow = 68,0, tempHigh = 72.0, temperatureF; Ajustar tempLow y tempHigh a la gama de temperatura que se desea que la habitación en
calor boolean = false;
int tempPin = 1; el pin analógico de TMP36 Vout (sentido) pin está conectado a
la resolución es de 10 mV / grado centígrado con un
500 mV compensación para permitir temperaturas negativas
int tempReading; el análogo de la lectura del sensor
void setup(void)
{
Serial.Begin(9600);
analogReference(EXTERNAL);
turnOff();
}
void loop(void)
{
readTemp();
checkTemp();
Delay(Wait);
}
void readTemp()
{
tempReading = analogRead(tempPin);
conversión de esa lectura a voltaje, que se basa en la tensión de referencia
voltaje del flotador = tempReading * aref_voltage;
voltaje = 1024.0;
ahora imprimir la temperatura
Float temperatureC = (voltaje - 0.5) * 100; conversión de 10 mv por cada grado con 500 mV offset
a grados ((volatge - 500mV) veces 100)
ahora convertir a Fahrenheight
temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
Serial.Print(temperatureF); Serial.println ("grados F");
}
void checkTemp()
{
Si (temperatureF < tempLow & & calor == false)
{
Encender();
}
otro if(temperatureF > tempHigh)
{
turnOff();
}
}
turnOff() vacío
{
motor.Attach(11);
Delay(1000);
motor.writeMicroseconds(offPos);
Delay(1000);
motor.Detach();
Delay(1000);
calor = false;
}
void encender()
{
motor.Attach(11);
Delay(1000);
motor.writeMicroseconds(onPos);
Delay(1000);
motor.Detach();
Delay(1000);
calor = true;
}