Bonjour, je suis nouveau par ici,
j'ai un peu crawlé le forum sur le sujet sans trouver de réponse satisfaisante sur mon problème : je passe brièvement sur le contexte je bricole un système de pompe pour mon potager. j'aimerai fait des taches à heure fixe, et prendre en compte certains événement passés ... bla bla bla ce qui m'ammene a la puce DS 1307 qui semble répondre parfaitement a mes besoins : une horloge et une memoire . mon probleme je n'arive pas a l'utiliser apparemment, et après 3 nuits a chercher des réponse, je dépose ce tread ici avant de détruire mon PC, mes cartes Arduino, et la p***** de puce sus mentionnée.
je précise que j'ai viré les éléments relatif a mon projet j'ai gardé ci dessous que ce qui plante : l'horloge ça va : c'est utiliser la RAM annexe qui me pose problème
dans la partie en rouge je set des valeurs a "42" apres la date dans partie mémoire , puis plus tard je voudrais récupérer cette meme valeur, mais non je recupere autre chose (165)
//Arduino 1.0+ Only
//Arduino 1.0+ Only
#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00;
int pin_relay = 2;
void setup(){
Wire.begin();
Serial.begin(9600);
pinMode(pin_relay, OUTPUT);
digitalWrite(pin_relay,LOW );
}
void loop(){
printDate();
delay(1*1000);
}
void set_RTC(){
int DT_list[] = {00,37,23,2,18,04,17,[color=red]42,42,42,42[/color]};// seconde ; minute ; hour ; day of week ; day of month ; month ; year
Wire.beginTransmission(DS1307_ADDRESS);
//T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99)
Wire.write((byte)0x00);
for (int j=0 ; j <10 ; j++){
Wire.write(decToBcd(DT_list[j]));
}
Wire.endTransmission();
}
void printDate(){
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); // Reset the register pointer
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());
[color=red]int next_1 = bcdToDec(Wire.read());
int next_2 = bcdToDec(Wire.read());
int next_3 = bcdToDec(Wire.read());
int next_4 = bcdToDec(Wire.read());[/color]
String date_string = String(month) + "/" + String(monthDay) + "/"+ String(year) + " " + String(hour) + ":" + String(minute)+ ":" + String(second) + " " + String(next_1);
Serial.println (date_string);
}
byte bcdToDec(byte val) { return ( (val/16*10) + (val%16) );}
byte decToBcd(byte decimal) { return (decimal / 10 * 16) + (decimal % 10);}
avez vous une idée de ce qui manque ?