

_
Quindi i passaggi che dovrei fare sono:
- levare la batteria (gia fatto)
-rimettere la batteria
-caricare questo sketch su arduino:
- Codice: Seleziona tutto
// di seguito includo la libreria per la comunicazione su bus I2C
#include <Wire.h>
#include "RTClib.h"
void setup()
{
// inizializzo la libreria
Wire.begin();
// adesso, inizializzo la comunicazione con il DS1307.
// L’indirizzo del DS1307 di default è 0x68
Wire.beginTransmission(0x68);
// il primo byte stabilisce il registro
Wire.write((byte)0x00);
// imposto il tempo e la data in esadecimale
Wire.write((byte)0x00); // 1° byte SECONDI impostabili da 0x00 a 0x59
Wire.write((byte)0x05); // 2° byte MINUTI impostabili da 0x00 a 0x59
Wire.write((byte)0x80 | 0x10); // 3° byte ORE impostabili da 0x00 a 0x24
Wire.write((byte)0x04); // 4° byte GIORNO della settimana impostabile da 0x01 a 0x07
Wire.write((byte)0x10); // 5° byte GIORNO del mese impostabile da 0x00 a 0x31
Wire.write((byte)0x12); // 6° byte MESE impostabile da 0x00 a 0x12
Wire.write((byte)0x15); // 7° byte ANNO impostabile da 0x00 a 0x99
Wire.endTransmission();
}
void loop()
{
delay(100);
}
( Al rigo 19, ovvero: Wire.write((byte)0x80 | 0x10); // 3° byte ORE impostabili da 0x00 a 0x24 metto 0x80 | 0x10 ??)
-Successivamente carico il codice dato da

- Codice: Seleziona tutto
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
int OnH = 16; //Ora On
int OnM = 8; //minuto On
int OnS = 01; //secondo on
int OffH = 16; // ora off
int OffM = 9; // minuto off
int OffS = 01; // secondo off
//orari in secondi
int ONsecondi = OnS + OnM*60 + OnH*3600;
int OFFsecondi = OffS + OffM*60 + OffH*3600;
int secondiAttuali = 0;
int relay = 2; // pin connesso al rele
boolean relayOn = false;
void setup () {
//inizializza librerie
Serial.begin(57600);
Wire.begin();
RTC.begin();
//imposto pin rele come uscita
pinMode(relay, OUTPUT);
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
//se ti leggevi la descrizione della libreria, saltava fuori che la riga seguente
//ti estrae dal rtc in una sola chiamata tutti i dati che te servono
DateTime now = RTC.now();
//per poi essere estratti con le seguenti righe e girati alla seriale
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
//troviamo i secondi attuali
secondiAttuali = now.second() + now.minute() * 60 + now.hour() * 3600;
if ( secondiAttuali >= ONsecondi && secondiAttuali < OFFsecondi){
digitalWrite(relay, HIGH); // eccito il relè collegato al pin2
relayOn = true;
} else if (relayOn=true){
digitalWrite(relay, LOW);
relayOn=false;
}
delay(3000);
}
Devo procedere così?
EDIT: ho fatto come ho scritto ma non funziona
