lcd e rtc i2c

salve,sto avendo dei problemi in quanto ogni tanto le scritte sul display scompaiono,l'rtc non risponde più e l'accensione temporizzata dei dispositivi non funziona.cosa posso fare per risolvere?
inizialmente quando avevo montato solo l'lcd non avevo questo problema.

Ognitanto indoviniamo i problemi ma non sempre.

Comunque sono stufo do dover chiedere informazioni per sapere che componenti si usa, lo schema e lo sketch.

Penso che come moderatore incominceró a cancellare questi post dove non c'é la minima tracca di informazioni utili per poter aiutare.

Ciao Uwe

ho realizzato una serra automatizzata utilizzando i seguenti componenti:
-dht11
-scheda 8 rele (ho preso anche una scheda con 2 rele allo stato solido per il collegamento con l’illuminazione.)
-sensore umidità del terreno
-alimentatore pc
-modulo orologio
-lcd
-stufetta ceramica per il riscaldamento 12v
-pompa dell’acqua 12v per irrigazione automatica
-servo motore e ventola 12v .
per quanto riguarda lo shema mi scuso ma non l’ho realizzato,ti assicuro che sono giusti.
ecco il codice:

#include <DS1307RTC.h>
#include <Time.h>
#include <dht11.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define DHT11PIN 9
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address
dht11 DHT11;
int  relepompaacqua=7;
int  releventole=5;
int  relephon=6;
int  releluce=8;
Servo motor;
void setup() 
{
   pinMode(releluce ,OUTPUT);
  digitalWrite(releluce, HIGH);
   pinMode(relepompaacqua ,OUTPUT);
  digitalWrite(relepompaacqua, HIGH);
  digitalWrite(releventole, HIGH);
   pinMode(releventole ,OUTPUT);
  digitalWrite(relephon, HIGH);
   pinMode(relephon ,OUTPUT);
   
   setSyncProvider(RTC.get);   // the function to get the time from the RTC
   
  motor.attach(4);
  lcd.begin(20,4);         // initialize the lcd for 20 chars 4 lines, turn on backlight
  lcd.backlight();
  Serial.begin(9600);
}

void loop(){

  int dht= DHT11.read(DHT11PIN);
  
  lcd.setCursor(0,0);

  lcd.print("-tempdht11=      ");
  lcd.print((float)DHT11.temperature,0);
  lcd.print("C");

  lcd.setCursor(0,1);
  lcd.print("-umidita'=       ");
  lcd.print((float)DHT11.humidity,0);
  lcd.print("%");
 int  sensorvalue;
 int  umiditaterra;                                  
 sensorvalue=analogRead(2);
 umiditaterra =map(sensorvalue,486,842,100,0);
 lcd.setCursor(0,2);
 lcd.print("-hterr=");
 lcd.print(umiditaterra);
  lcd.print("-");
  lcd.print(sensorvalue);


//mantiene umidità terreno a 60
if(umiditaterra < 60){
    digitalWrite(relepompaacqua,LOW);
} else {
  digitalWrite(relepompaacqua,HIGH);
}

//mantiene temperatura minima a 19 gradi
if(DHT11.temperature<16) {
  digitalWrite(relephon,LOW);
} else {
      if (DHT11.temperature >= 19){
        digitalWrite(relephon,HIGH);
      }
}

//umidità e/o temperatura al di sopra dei livelli, necessita accensione ventola
if((DHT11.humidity >68 && DHT11.temperature <= 24) ||
   (DHT11.humidity > 68 && DHT11.temperature >= 24) || 
   (DHT11.humidity <= 68 && DHT11.temperature >= 24) ||
   (minute()>=10 && minute()<= 15)|| 
   (minute()>=40 && minute()<= 45)
   )
    {
  digitalWrite(releventole,LOW);
  motor.write(-90);    
    }
 else{
  //umidità e temperatura enntrambe sotto la soglia, non necessita accensione ventola
 if (DHT11.humidity < 60 && DHT11.temperature < 23) 
       {
      motor.write(90);
      digitalWrite(releventole,HIGH);
       }
     }
if((hour()>=19) ||( hour()<12))
   {
     digitalWrite(releluce,LOW);
   }
   else
        {
         digitalWrite(releluce,HIGH);
        }
         
 lcd.setCursor(0,3);
    if(hour()<10)  lcd.print('0');
 lcd.print(hour());
 lcd.print(":");
    if(minute()<10)  lcd.print('0');
 lcd.print(minute());
// Serial.print(":");
//  if(second()<10)  Serial.print('0'); 
// Serial.print(second());
 lcd.print("  ");
  if(day()<10)  lcd.print('0'); 
 lcd.print(day());
 lcd.print("/");
  if(month()<10)  lcd.print('0'); 
 lcd.print(month());
 lcd.print("/");
 lcd.print(year());
 
 delay(2000);
 }

E tutto stò pò pò di roba come lo alimenti ?
Alimentatore PC ? Ma quanti ampere fornisce ? Un alimentatore ATX ? Ma di solito esce a 12V.
Insomma... come sono collegate le cose ? Almeno l'alimentazione, spiegaci.

nid69ita:
Insomma... come sono collegate le cose ? Almeno l'alimentazione, spiegaci.

Colzadanicola: ... che in parole povere vuol dire ... devi mettere lo schema elettrico di come il tutto è collegato, incluse le alimentazioni ... altrimenti è impossibile capire cosa succede.

Guglielmo

Si sto alimentando tutto con un alimentatore atx ,il termoventilatore lo alimento con la 12v in uscita dall'atx,tutti i moduli sono alimentati con la 5 v .il mio sospetto è che l'rtc e l'lcd non funzionino correttamente insieme

Colzadanicola:
...il mio sospetto è che l'rtc e l'lcd non funzionino correttamente insieme

:o :o :o ... e perché mai ? ? ?

Ho un'infinità di progetti con RTC e LCD I2C e funzionano perfettamente !

Guglielmo

Eccolo

Colzadanicola:
Eccolo

:o :o :o ... cosa ? ? ?

Guglielmo

Ho provato a inviare una foto dell’alimentatore ma non sono riuscito.

Aha ... ok ... :smiley:

Il dubbio che mi viene è che quando scattano i relè e partono carichi induttivi come la pompa ... ci siano disturbi elettromagnetici che fanno impazzire il tutto.

Non per nulla, i moduli relè hanno anche un'entrata per l'alimentazione SEPARATA da quella di Arduino, proprio per permettere l'uso di DUE alimentatori e separare con dei fotoaccoppiatori i due "mondi".

Guglielmo

Io sto usando alimentazioni separate,non alimento nulla con arduino.

Alimentazioni separate significa ALIMENTATORI separati, mentre tu usi più uscite dello STESSO alimentatore.

Guglielmo

Il che non va bene dici?

Dico che se c'è un disturbo elettromagnetico (... e di sicuro c'è) in quel modo è più facile portarlo dentro ad Arduino, mentre, con alimentatori separati, la cosa è più difficile.

Che scheda relè usi ? Hai un link ?

Guglielmo

Uso una comune scheda da 8 rele,la classica economica che puoi acquistare da e bay,penso che tu sappia qual è,e una allo stato solido 2rele per la lampada.

Ok, quindi il collegamento con doppia alimentazione per la 8 relè a 5V è il seguente:

... come vedi le alimentazioni sono completamente separate.

Guglielmo

Immagine © Brunello :smiley: :smiley: :smiley: