Go Down

Topic: A l'aide sur bus i2c (Read 1 time) previous topic - next topic

jpw59117

bonjour,

j'ai besoin d'aide je veux réalisé une gestion d'aquarium d'eau douce et je suis trés trés novice en programmation.je vous explique mon problème.

j'ai un lcd 16*2 en bus i2c et une horloge tiny rtc ds1307 et un capteur de température 18ds20.

quand je met la température sur le lcd seul ca fonctionne dés que je veux mettre l'horloge plus d'affichage.
j'ai testé l horloge(ds1307) seul ca fonctionne je récupéré l'heure .
mon cablage est simple rouge +5v noir masse scl sur broche A5 et sda sur broche A4 .

j'ai remarqué que le sda ton à 0v dans le code qui ne fonctionne pas  je vous met le code.

ATTENTION JE SUIS DEBUTANT MERCI POUR VOTRE AIDE ET TOUT CE QUE VOUS APPORTE A DES DEBUTANTS COMME MOI .

Code: [Select]
#include <LiquidCrystal_I2C.h> 
#include <Wire.h>
#include <DallasTemperature.h>       //Librairie du capteur de Température
#include <OneWire.h>
#include <RTClib.h>                   //Librairie module Horloge

OneWire oneWire(10);                      //Bus One Wire sur la pin 10 de l'arduino
DallasTemperature sensors(&oneWire);      //Utilistion du bus Onewire pour les capteurs Module 18DS20
DeviceAddress sensorDeviceAddress;

LiquidCrystal_I2C lcd(0x27,20,4);
RTC_DS1307 RTC;
DateTime now = RTC.now();

void setup() {
 
 lcd.init();                           //initialisation de l'afficheur
 Wire.begin();
 RTC.begin();
   if (! RTC.isrunning()) {
   Serial.println("Le RTC ne marche pas");
                                                         // mise à l'heure :
    RTC.adjust(DateTime(__DATE__, __TIME__));
   }
 Serial.begin(9600);
 sensors.begin();                                 //Activation du capteur Température
 sensors.getAddress(sensorDeviceAddress, 0);      //Demande l'adresse du capteur à l'index 0 du bus
 sensors.setResolution(sensorDeviceAddress, 12);  //Résolutions possibles: 9,10,11,12

}

void loop() {
 
sensors.requestTemperatures();                   //Demande la température aux capteurs
lcd.backlight();                        // efface l ecran
lcd.setCursor(0,0);                     // position du cursseur ligne 1
lcd.print(sensors.getTempCByIndex(0));   // affichage de la température
lcd.print(char(223));
lcd.setCursor(0,1);
lcd.print(now.minute(), DEC);

delay (1000);



}

djbouns

Salut,

Ton montage est il bien comme sa ?

jpw59117

Merci pour ta réponse,

le branchement est bien comme cela vérifier et revérifier :).

je voudrais confirmation du code si il n'y a pas d'erreur.

Apres je chercherais au niveau des transferts ou librairie à rechargé ????

ENCORE MERCI

jpw59117

c bon j'ai trouvé c une erreur dans le code.

voila le bon code

Code: [Select]

#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
#include <DallasTemperature.h>       //Librairie du capteur de Température
#include <OneWire.h>

OneWire oneWire(10);                      //Bus One Wire sur la pin 10 de l'arduino
DallasTemperature sensors(&oneWire);      //Utilistion du bus Onewire pour les capteurs Module 18DS20
DeviceAddress sensorDeviceAddress;
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x27,20,4);

void setup () {
  Serial.begin(9600);
  lcd.init();
  Wire.begin();
 
  sensors.begin();                                 //Activation du capteur Température
  sensors.getAddress(sensorDeviceAddress, 0);      //Demande l'adresse du capteur à l'index 0 du bus
  sensors.setResolution(sensorDeviceAddress, 12);  //Résolutions possibles: 9,10,11,12
 
  RTC.begin();
  if (! RTC.isrunning()) {
    Serial.println("Le RTC ne marche pas");
    // mise à l'heure :
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }


}

void loop () {
  DateTime now = RTC.now();
  sensors.requestTemperatures();                   //Demande la température aux capteurs
  lcd.backlight();                        // efface l ecran
  lcd.setCursor(0,0);
  lcd.print("jjjjj");
  lcd.print(now.hour(), DEC);
  lcd.print(now.minute(), DEC);
  lcd.print(now.second(), DEC);
  lcd.setCursor(0,1);
  lcd.print(sensors.getTempCByIndex(0));   // affichage de la température
  lcd.print(char(223));
  Serial.print(now.year(), DEC);   //on affiche la date et l'heure sur le port série
  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();

  Serial.print(" depuis 1970 = ");
  Serial.print(now.unixtime());
  Serial.print("sec = ");
  Serial.print(now.unixtime() / 86400L);
  Serial.println("jours");


  Serial.println();
  delay(1000);
}

Go Up