software che funziona in base all'ora

#include <swRTC.h>
swRTC rtc; //create a new istance of the lib

void setup() {
rtc.stopRTC(); //stop the RTC
rtc.setTime(12,0,0); //set the time here
rtc.setDate(4,6,2012); //set the date here
rtc.startRTC(); //start the RTC
Serial.begin(19200); //choose the serial speed here
delay(2000); //delay to let the user opens the serial monitor
}

void loop() {
Serial.print(rtc.getHours(), DEC);
Serial.print(":");
Serial.print(rtc.getMinutes(), DEC);
Serial.print(":");
Serial.print(rtc.getSeconds(), DEC);
Serial.print(" -- ");
Serial.print(rtc.getDay(), DEC);
Serial.print("/");
Serial.print(rtc.getMonth(), DEC);
Serial.print("/");

if (rtc.getHours() == 00 && tyc.getMinutes() == 00) ;

{ pinMode(13 HIGH)}
}

beh,intanto e giusto?devo settare le ore e i minuti...ma il resto e ok?

Hai fatto un copia-incolla di 2 sketch di esempio allegati alla swRTC :stuck_out_tongue_closed_eyes:
C'è però un paio di errori, uno di sintassi ed un logico... trovali ]:smiley:

uno e` un ";" quello logico proprio non so...??!! :roll_eyes:

forse manca lo rtc.startRTC();

steveborty:
forse manca lo rtc.startRTC();

Quello c'è.

steveborty:
uno e` un ";" quello logico proprio non so...??!! :roll_eyes:

Questo non l'avevo visto. Allora gli errori di sintassi sono 2...
L'hai compilato, per curiosità? :stuck_out_tongue:

Cioè?

steveborty:
Cioè?

Perché se lo avessi fatto avresti visto gli errori. :cold_sweat:

Ahhhh,okk. Si lo ho fatto e mi dava quel ;

steveborty:
Ahhhh,okk. Si lo ho fatto e mi dava quel ;

E l'altro.

non ho ancora capito il problema...

Il problema è che con i copia-e-incolla non si va da nessuna parte.
Se non ti metti davanti ad una tastiera e non inizi a scrivere un po' di codice, stiamo qui mesi a parlare del più e del meno :wink:
Se avessi compilato il codice che hai postato avresti visto che c'era anche questo errore.
if (rtc.getHours() == 00 && tyc.getMinutes() == 00) ;
hai scritto tyc al posto di rtc. Siccome in 2 giorni non me lo hai detto quale era l'errore che c'era, presumo che tu in 2 giorni o non hai provato a scrivere nulla oppure ti sia dimenticato della cosa. Spero la seconda ]:slight_smile:

Inoltre il problema logico risiede nel fatto che tale codice, arrivato alle 00:00 di un qualsiasi giorno, tenterà di accendere per 1 minuto esatto il led sul pin 13. Quest perché non hai poi messo nessun flag per far eseguire l'operazione 1 sola volta. E nessun controllo per resettare il flag una volta che siano passate le 00:00 (alle 00:01 tale flag deve essere rimesso a 0 perché sennò la prossima volta che sono le 00:00 non verrà eseguito nulla).

Scusa se sono rude ma la parte software si basa sulla logica, se non impari a ragionare esaminando tutte le possibili implicazioni di quello che scrivi i tuoi sketch avrai sempre problemini banali che però ti rompono un sacco le scatole :wink:

ma se al posto di usare la libreria usassi solo la funzione delay (300000) quindi 5 min. e metto in successione i led da accendere...e un po' elaborioso ma piu semplice no?

Leo io direi che lo può fare tranquillamente con un delay .... Tu che dici? :smiley:

pablos:
Leo io direi che lo può fare tranquillamente con un delay .... Tu che dici? :smiley:

Sì... :sweat_smile: :sweat_smile:

io ho un coso che sembra uno shiftout...sopra c'e scritto L293ONE.e shiftout o in?

L'altra cosa che dovresti fare prima di scrivere e saper cercare e capire un datasheet. :roll_eyes:
http://www.datasheetcatalog.org/datasheet/texasinstruments/l293d.pdf

ecco il codice completo.

//l'orologio e` a 12h


void setup() {
        pinMode(1,OUTPUT);
        pinMode(2,OUTPUT);
        pinMode(3,OUTPUT);
        pinMode(4,OUTPUT);
        pinMode(5,OUTPUT);
        pinMode(6,OUTPUT);
        pinMode(7,OUTPUT);
        pinMode(8,OUTPUT);
        pinMode(9,OUTPUT);
        pinMode(10,OUTPUT);
        pinMode(11,OUTPUT);
        pinMode(12,OUTPUT);
}

void loop() {
  
  digitalWrite(6,HIGH);      //il programma viene attivato alle 6:00 am o pm
  delay(3600000);            //aspetta 1h
  digitalWrite(6,LOW);
  digitalWrite(7,HIGH);
  delay(3600000);
  digitalWrite(7,LOW);
  digitalWrite(8,HIGH);
  delay(3600000);
  digitalWrite(8,LOW);
  digitalWrite(9,HIGH);
  delay(3600000);
  digitalWrite(9,LOW);
  digitalWrite(10,HIGH);
  delay(3600000);
  digitalWrite(10,LOW);
  digitalWrite(11,HIGH);
  delay(3600000);
  digitalWrite(11,LOW);
  digitalWrite(12,HIGH);
  delay(3600000);
  digitalWrite(12,LOW);
  digitalWrite(1,HIGH);
  delay(3600000);
  digitalWrite(1,LOW);
  digitalWrite(2,HIGH);
  delay(3600000);
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  delay(3600000);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);
  delay(3600000);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  delay(3600000);
  digitalWrite(5,LOW);
  
}

edit by mod: per favore includi il codice usando gli appositi tag

Il programma non può partire alle 6:00 a meno che tu non accenda l'Arduino a quell'ora, dato che non c'è nessun controllo sull'orario (mediante RTC esterno o interno).

e` quello che intendevo con parte alle 6:00 :slight_smile: