Je suis novice sur Arduino, j'ai commencé il n'y a qu'un mois. Mais là, n,'est pas le sujet !!
J'ai acquis à mes débuts une carte Arduino nano, que j'avais couplé à un shield RTC DS1307. Mes besoins gonflants, je manquais de place sur la carte et donc j'ai decidé d'investir dans une carte Mega + shield Ethernet.
Et le début des ennuies commencent, j'ai vu que le bus I2C était différent, et qu'il était utilisé également par le shield Ethernet.
J'ai vu également qu'un topic sur ce forum avait été crée: Arduino Forum.
Mais hélas, je ne comprend pas comment faire avec cette librairie, et le code que j'utilisais sur mon Nano.
Je vous joins mon code:
#include <Wire.h>
#include <DS1307.h>
#include <SoftI2CMaster.h>
int rtc[7];
const byte sdaPin = A14; // Permet de définir la nouvelle broche SDA
const byte sclPin = A15; // Permet de définir la nouvelle broche CSL
SoftI2CMaster i2c = SoftI2CMaster( sdaPin,sclPin );
void setup()
{
//########## Initialisation du module Real Time Clock DS1307 ##########
RTC.stop();
RTC.set(DS1307_SEC,0);
RTC.set(DS1307_MIN,43);
RTC.set(DS1307_HR,19);
RTC.set(DS1307_DOW,1);
RTC.set(DS1307_DATE,3);
RTC.set(DS1307_MTH,9);
RTC.set(DS1307_YR,12);
RTC.start();
//enable serial data print
Serial.begin(115200);
}
void loop()
{
RTC.get(rtc,true);
Serial.print("Il est ");
Serial.print(rtc[2]);
Serial.write(58);
Serial.print(rtc[1]);
Serial.write(58);
Serial.print(rtc[0]);
Serial.write(32);
Serial.print(rtc[4]);
Serial.write(47);
Serial.print(rtc[5]);
Serial.write(47);
Serial.print(rtc[6]);
Serial.println();
delay(1000);
}
la librairie DS1307 utilise l'i2c hardware, donc il me parait impossible de cumuler les deux librairie. Tu te rends bien compte d'ailleurs que tu instancie "i2c" mais tu ne t'en sers plus ensuite ...
Donc si je comprend bien, la librairie DS1307 utilise l'i2c hardware et SoftI2CMaster utilise l'i2c software ?? Comment puis-je régler mon problème du coup ??
Tu n'as comme seule option que de faire en "manuel" ce que fait la librairie DS1307 ce qui n'est pas extêmement compliqué. voici la datasheet : http://datasheets.maxim-ic.com/en/ds/DS1307.pdf
Le plus simple est de reprendre la librairie dans ton code et de remplacer les "wire" par "i2c".
SoftI2CMaster est une lib pour faire de l'I2C soft sur n'importe quelle broche de l'ATMega
Wire est la lib standard Arduino pour utilise le controleur I2C hardware (broches SDA/SCL dispo soit en D20/D21 soit à coté a AREF)
DS1307 utilise Wire mais pas SoftI2CMaster
Tu crée un object SoftI2CMaster i2c qui ne te sert à rien. Tu dois pouvoir le supprimer.
Le shield Ethernet n'utilise pas l'I2C mais le SPI disponible sur le connecteur ICSP puisqu'il est trop court pour atteindre les broches 50 à 52.
Merci pour cette précision !! Je n'avais pas vu les broches qui étaient à coté de AREF. Cependant, j'avais laissé en place le module Ethernet pour garder la partie Web, mais après avoir enlevé tout ce qui était connecté sur l' Arduino pour ne me focaliser que sur le DS1307, je me suis aperçu que cela fonctionnait !!
Le problème venait de la patte du module Ethernet SCL à côté de AREF qui n'était pas rentrer sur la Mega, et qui je pense rendait impossible toutes connexions i2c, que se soit les broches SDA/SCL dispo soit en D20/D21 soit à coté a AREF.
Désolé pour cet incident
Merci en tout cas pour votre implication à tous...