Bonjour à tous les connaisseurs
Je suis encore très balbutiant en matière d'Arduino, mais je me soigne et je m'obstine. ![]()
A force, j'ai fini par obtenir l'heure, ce que je savais déjà faire sur un autre shield, qui utilise un DS3231. Comme mon application aura besoin de conserver quelques octets en cas de coupure secteur, j'ai choisi le 1307.
Faisant cohabiter les deux, je me suis fait piéger par un conflit. Les deux sont à la même adresse, et, bien entendu, je ne voyais pas apparaître le nouveau avec l'ancien déjà en place. C'est le scanner i2c qui ne voyait rien de plus.
Là, je me suis mis sur un uno qui n'a rien d'autre que mon périphérique.
Voilà le code de ce que j'ai fini par faire tourner et qui me donne bien l'heure sur le moniteur. `// Test_01_1307.ino 2 mai 2021
#include<Wire.h>
#include<RTClib.h>
RTC_DS1307 RTC ;
void printDateTime ( DateTime dateTime ) ;
void setup ()
{
// put your setup code here, to run once:
Serial.begin( 115200 ) ;
Wire.begin () ;
RTC.begin () ;
}
void loop ()
{
// put your main code here, to run repeatedly:
if ( Serial.available () > 0 )
{
int instruct = Serial.read () ;
switch (instruct)
{
case'D':
{
DateTime now = RTC.now () ;
printDateTime(now);
break;
}
// case'S':
// {
// RTC.set ( RTC_MONTH , 6 ) ;
// RTC.set ( RTC_HOUR , 16 ) ;
// break;
// }
}
}
// delay ( 5000 ) ;
}
void printDateTime ( DateTime dateTime )
{
Serial.print(dateTime.year(), DEC);
Serial.print('/');
Serial.print(dateTime.month(), DEC);
Serial.print('/');
Serial.print(dateTime.day(), DEC);
Serial.print(' ');
Serial.print(dateTime.hour(), DEC);
Serial.print(':');
Serial.print(dateTime.minute(), DEC);
Serial.print(':');
Serial.print(dateTime.second(), DEC);
Serial.println();
}`
C'est sur demande du clavier
Comme c'est la RAM à laquelle j'essaie d'accéder, je recherche ce qui s'y rapporte. J'ai trouvé ça, qui ressemble bien à mon besoin, mais je tourne en rond sans pouvoir conclure. Le compilateur refuse certains libellés:
// autre_ram_1307_02.ino
// RAM read and write functions using a DS1307 RTC connected via I2C and Wire lib.
// 2012-11-06 www.idreammicro.com http://opensource.org/licenses/mit-license.php
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC ;
void setup () {
Serial.begin ( 115200 ) ;
Wire.begin () ;
RTC.begin () ;
// Write bytes in RAM.
uint8_t data [ 13 ] =
{
'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\n',
};
RTC.writeBytesInRam(0x08, 13, data);
}
void loop () {
// Read bytes in RAM.
uint8_t data[13] = { 0 };
RTC.readBytesInRam(0x08, 13, data);
// Print bytes on Serial.
Serial.write(data, 13);
delay(5000);
}
Il me sort
B:\__Arduino_tests\Tests_ds1307\autre_ram_1307_02.ino\autre_ram_1307_02.ino.ino: In function 'void setup()':
autre_ram_1307_02.ino:20:9: error: 'class RTC_DS1307' has no member named 'writeBytesInRam'
RTC.writeBytesInRam(0x08, 13, data);
^~~~~~~~~~~~~~~
B:\__Arduino_tests\Tests_ds1307\autre_ram_1307_02.ino\autre_ram_1307_02.ino.ino: In function 'void loop()':
autre_ram_1307_02.ino:26:9: error: 'class RTC_DS1307' has no member named 'readBytesInRam'
RTC.readBytesInRam(0x08, 13, data);
^~~~~~~~~~~~~~
Plusieurs bibliothèque trouvées pour "RTClib.h"
Utilisé : C:\Users\Guy\Documents\Arduino\libraries\RTClib
Non utilisé : C:\Users\Guy\Documents\Arduino\libraries\RTClib-1.12.5
exit status 1
'class RTC_DS1307' has no member named 'writeBytesInRam'
C'est manifestement RTC.writeBytesInRam() et RTC.readBytesInRam() qui posent problème mais comment faire pour les faire accepter?
Merci d'avance pour le déblocage espéré.