Estoy haciendo un programa con un RTC (DS3231) y un pulsador que uso como switch que consiste en lo siguiente:
-Si los minutos transcurridos son un numero mayor a 30 que encienda el led (funciona perfecto)
-Si presiono el pulsador apagar el led ( funciona perfecto)
-El problema es que necesito reemplazar el delay que hace si el boton esta presionado (delay (5555)
por millis para qe no retrase otros leds y con milllis no me funciona bien antes de volver a encenderse
(por el loop)
#include <Sodaq_DS3231.h>
//Test RTC DS3231
#include <Wire.h>
//#include = "Sodaq_DS3231.h"
int boton = 3;
int led =2 ;
int periodo = 300000 ;
unsigned long tiempoAnterior = 0;
char weekDay[][4] = {"Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab" };
//año, mes, dia, hora, minutos, segundos y dia de la semana (0=Domingo hasta 6=Sabado)
//Si se escribe una hora o fecha inexistente se puede interferir con la normal operación del RTC
DateTime dt(2018, 2, 10, 03,56, 22, 6); //año, mes, dia, hora, min, seg, diasem
void setup() {
Serial.begin(115200); // Abre el puerto serie para mostrar valores leídos
Wire.begin(); //Inicializa la comunicacion con el RTC
rtc.begin(); //Inicializa el RTC
//rtc.setDateTime(dt); //Establece fecha y hora cargada en "dt"
pinMode (boton, INPUT);
pinMode (led, OUTPUT);// put your setup code here, to run once:
}
void loop() {
DateTime now = rtc.now(); //Leer datos del RTC y mostrar
Serial.print(now.minute(), DEC);
Serial.println();
delay(1000);
if ( now.minute() > 30)
{digitalWrite (led, HIGH);
}
if(((digitalRead (boton) == HIGH) && (digitalRead (led) == HIGH) && (millis()>tiempoAnterior+periodo))){
digitalWrite(led,LOW);
delay (55555);
}
}