Go Down

Topic: Temporizzatore con Arduino (Read 577 times) previous topic - next topic

Alpiaia

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



Code: [Select]
#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!

gpb01

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

Guglielmo
Search is Your friend ... or I am Your enemy !

docdoc

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):

Code: [Select]
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);
}
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

Stilita

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.
 
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

Alpiaia

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):

Code: [Select]
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)




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

fabpolli

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 ;) ;D

gpb01

#6
Jul 13, 2018, 01:55 pm Last Edit: Jul 13, 2018, 01:57 pm by gpb01
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 :smiley-confuse: , 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
Search is Your friend ... or I am Your enemy !

Go Up