Temporizzatore con Arduino

Buonasera a tutti,
dopo ave cercato sul forum e con il buon vecchio google mi rivolgo a voi.

Devo costruire un controllo luci esterne con crepuscolare, sensore di movimento e temporizzatore.

In pratica

La luce si accende quando fa buio (crepuscolare) e si spegne all’ora prefissata (modulo RTC DS3231), dopo tale ora si accende con modulo sensore di movimento (HC-SR501) per i minuti impostati direttamente sul sensore.

Il codice del crepuscolare funziona,

Quello del sensore movimento pure

Ma non riesco a stabilire un lasso di tempo in quale far funzionare le luci con il modulo RTC

lo Sketch è il seguente, nell’IF quando metto il simbolo > resta sempre acceso, viceversa con il simbolo < sempre spento

#include <Wire.h>
#include <DS3231.h>

DS3231 clock;
RTCDateTime dt;




int rele = 4;

void setup () {
  Serial.begin(9600);

  // Initialize DS3231
  Serial.println("Initialize DS3231");
  clock.begin();

  pinMode (rele, OUTPUT);
  clock.setDateTime(__DATE__, __TIME__);
}
void loop () {
  clock.getDateTime();
  (Serial.println(clock.dateFormat("H:i:s", clock.getDateTime())));
  if (clock.dateFormat("H:i:s", clock.getDateTime()) >= ("20:29:00"))
  {
    digitalWrite (rele, HIGH);
  }
  else
  { digitalWrite (rele, LOW);
  }
  delay(100);
}

Dove sbaglio?
Grazie a tutti e buona serata!

Stai parlando di comandare una luce esterna a 220V o parli di luci LED a bassa tensione ?

Guglielmo

Alpiaia:
lo Sketch è il seguente, nell’IF quando metto il simbolo > resta sempre acceso, viceversa con il simbolo < sempre spento

Hm, scusa ma hai definito la variabile dt dove mettere l’oggetto DateTime e poi non la usi?

Io farei così (tra l’altro hai delle parentesi inutili nella Serial.println):

void loop () {
  dt = clock.getDateTime();
  Serial.println(clock.dateFormat("H:i:s", dt);
  if (clock.dateFormat("H:i:s", dt) >= ("20:29:00"))
  {
    digitalWrite (rele, HIGH);
  }
  else
  { digitalWrite (rele, LOW);
  }
  delay(100);
}

Ciao
stavo seguendo il post, ho visto queste due linee:

DS3231 clock;
RTCDateTime dt;

penso che siano due assegnazioni...ma non sono assolutamente sicuro
però poi nel prosieguo dello sketch non vedo usata dt.

Grazie per i chiarimenti.

docdoc:
Hm, scusa ma hai definito la variabile dt dove mettere l'oggetto DateTime e poi non la usi?

Io farei così (tra l'altro hai delle parentesi inutili nella Serial.println):

void loop () {

dt = clock.getDateTime();
  Serial.println(clock.dateFormat("H:i:s", dt);
  if (clock.dateFormat("H:i:s", dt) >= ("20:29:00"))
  {
    digitalWrite (rele, HIGH);
  }
  else
  { digitalWrite (rele, LOW);
  }
  delay(100);
}

Grazie,
dt l'avevo usata con lo sketch prima ma non avendo funzionato ho provato a scriverla per esteso e così è restata.
Proverò a riscriverlo senza le patentesi per vedere se funziona (domani, oggi ho lasciato il PC a casa)

gpb01:
Stai parlando di comandare una luce esterna a 220V o parli di luci LED a bassa tensione ?

Guglielmo

Ho intenzione di far funzionare 4 lampioncini (lampadine a led) esterni sotto il portico, o 4 faretti led. La corrente sarà a 220VCA. Ora non so se far lavorare in 220VCA direttamente il relè comandato a 5VCC da Arduino oppure far sì che tale relè ne comandi uno a 12VCC... Teoricamente dal datasheet il relè dovrebbe sopportare i 230VCA 10A.
Tutto l'accrocchio sarà sotto MT da C10 dedicato.
Ho già calcolato che dovrò dare un delay di almeno 5 minuti al crepuscolare per evitare che sul cambio luce accenda e spenga il sistema continuamente.
Proverò tutto con un led volante prima di installarlo permanente.
Intanto grazie

Ahi ahi ahi io credo che tu voglia (stando al regolamento) pilotare un relé a 12V messo da un installatore qualificato il quale relé piloterà la 220VAC :wink: ;D

Alpiaia:
Ho intenzione di far funzionare 4 lampioncini (lampadine a led) esterni sotto il portico, o 4 faretti led. La corrente sarà a 220VCA. Ora non so se far lavorare in 220VCA direttamente il relè comandato a 5VCC da Arduino oppure far sì che tale relè ne comandi uno a 12VCC... Teoricamente dal datasheet il relè dovrebbe sopportare i 230VCA 10A.

Allora ti consiglio di rileggere con molta attenzione il REGOLAMENTO ed in particolare il punto 15 ed i suoi sottopunti.

Purtroppo :confused: , come sempre in questi casi, mi vedo obbligato a chiudere il tuo thread consigliandoti di farti fare il tutto da un installatore certificato che ti metta a disposizione dei contatti in "bassissima tensione" che potrai poi pilotare con Arduino.

Guglielmo