Buenas tardes, les comento que estoy tratando de aprender desde esta página y lo que hay publicado en la web, pero hasta ahora no puedo comprender del todo las funciones, por lo que acudo a uds por ayuda, estoy tratando de modificar un programa que encontrè en la web para que mida temperatura y accione 2 salidas eso ya logrè que funcione cómo esperaba, es decir dispara la salida 1 y desactiva la salida 2 pero no logro darme cuenta cómo implementar un timer que, en este caso cuando llegue a la temperatura seteada , y la salida 1 esta activa ,comience una cuenta regresiva de 30 segundos, al finalizar esta cuenta desactiva 1 y comienza otra de 180 segundos , y así en loop.
Desde ya agradezco su tiempo en leer mi post.
el código:
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int LED_RED=10; //Red LED
const int LED_GREEN=11; //Green LED
const int RELAY=12; //Relay
int SetPoint=40;
void setup(){
pinMode(LED_RED,OUTPUT);
pinMode(LED_GREEN,OUTPUT);
pinMode(RELAY,OUTPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
lcd.setCursor(0,1); /
lcd.print("Temp. Controller");
digitalWrite(LED_GREEN,HIGH); //Green LED Off
digitalWrite(LED_RED,LOW); //Red LED On
digitalWrite(RELAY,LOW); //Turn off Relay
delay(2000);
}
void loop(){
int sensorValue = analogRead(A0);
lcd.setCursor(0,0);
lcd.print("Temperatura:");
lcd.print(sensorValue);
//Get user input for setpoints
if(digitalRead(down_key)==LOW)
{
if(SetPoint>0)
{
SetPoint--;
}
}
if(digitalRead(up_key)==LOW)
{
if(SetPoint<150)
{
SetPoint++;
}
}
//Display Set point on LCD
lcd.setCursor(0,1);
lcd.print("Set Point:");
lcd.print(SetPoint);
lcd.print("C ");
//Check Temperature is in limit
if(sensorValue > SetPoint)
{
digitalWrite(RELAY,LOW); //Turn off heater
digitalWrite(LED_RED,LOW);
digitalWrite(LED_GREEN,HIGH); //Turn on Green LED
}
else
{
digitalWrite(RELAY,HIGH); //Turn on heater
digitalWrite(LED_GREEN,LOW);
digitalWrite(LED_RED,HIGH); //Turn on RED LED
}
delay(500); //Update at every 100mSeconds
}