Aiutino su questo Sketch

Premetto che sono un principiante.
Mi servirebbe una mano per aggiustare questo sketch , il display 20 x 4 e gira tutto bene solo che non riesco a visualizzare in sincronia data,temperatura intera, ed quella estera -
display Ok
Rtc Ok data e ora giusta
temperatura interna Ok
esterna Ok

#include <Wire.h>
#include <RTClib.h>
#include <LCD03.h>
#include <OneWire.h>
#include <DallasTemperature.h>


//Cavo dati sia collegato a pin 2 sul Arduino
#define ONE_WIRE_BUS 2

char buffer[10];
float temperatura;


RTC_DS1307 RTC;
LCD03 lcd;
OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);


void setup () {


  Wire.begin();
  RTC.begin();
  lcd.begin(20, 4);
  sensors.begin();
  lcd.backlight();
  // lcd.print(" GESTIONE  ACQUARIO          Di           Rosiello Claudio");
  delay(5000);
  lcd.clear();



  if (! RTC.isrunning()) {
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {



  DateTime now = RTC.now();
  lcd.clear();

  char buffer[10] ="";

  lcd.setCursor(0,0);
  lcd.print("ACQUARIO MARINO");

  lcd.setCursor(0,2);
  lcd.print("Int:");

  lcd.setCursor(10,2);
  lcd.print("Est:");

  lcd.setCursor(0,3);
  lcd.print("PH:0,0");

  lcd.setCursor(10,3);
  lcd.print("Luce:00%");

  sprintf  (buffer,"%02d/%02d/%d", now.day(), now.month(), now.year());
  lcd.setCursor(10,1);
  lcd.print(buffer);


  sprintf(buffer,"%02d:%02d:%02d", now.hour(), now.minute(), now.second());
  lcd.setCursor(0,1);
  lcd.print( buffer );
  //delay (1000);

  temperatura=analogRead(A0);
  lcd.setCursor(15,2);
  lcd.print((5.0 * temperatura * 100.0)/1024.0)/1000;
  //delay (1000);


  sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura
  lcd.setCursor(4, 2); 
  lcd.print (sensors.getTempCByIndex(0));
  delay (1000);
  lcd.clear();


  //lcd.noBacklight();
}

grazie

Per favore spiegati meglio; cosa significa

solo che non riesco a visualizzare in sincronia data,temperatura intera, ed quella estera -

Ciao Uwe

Cosi come e il codice l'orologio salta tre 3 secondi per volta (delay spento)
mentre la temperatura esterna e fissa (delay spento)
l'interna lampeggia per un secondo.
(delay 1000 )
(lcd clear)

questo e il problema sincronizzare tutto in modo esatto cioé
orologio per suo conto con delay RTC DS1307
sensore esterno analogico con delay e clear LM35A
idem sensore digitale interno DS 18b20

#include <Wire.h>
#include <RTClib.h>
#include <LCD03.h>
#include <OneWire.h>
#include <DallasTemperature.h>

//Cavo dati sia collegato a pin 2 sul Arduino
#define ONE_WIRE_BUS 2

char buffer[10];
float temperatura;

RTC_DS1307 RTC;
LCD03 lcd;
OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

void setup () {
  Wire.begin();
  RTC.begin();
  lcd.begin(20, 4);
  sensors.begin();
  lcd.backlight();
  // lcd.print(" GESTIONE  ACQUARIO          Di           Rosiello Claudio");
  delay(5000);
  lcd.clear();

  if (! RTC.isrunning()) {
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
  DateTime now = RTC.now();
  lcd.clear();

  char buffer[10] ="";

  lcd.setCursor(0,0);
  lcd.print("ACQUARIO MARINO");

  lcd.setCursor(0,2);
  lcd.print("Int:");

  lcd.setCursor(10,2);
  lcd.print("Est:");

  lcd.setCursor(0,3);
  lcd.print("PH:0,0");

  lcd.setCursor(10,3);
  lcd.print("Luce:00%");

  sprintf  (buffer,"%02d/%02d/%d", now.day(), now.month(), now.year());
  lcd.setCursor(10,1);
  lcd.print(buffer);


  sprintf(buffer,"%02d:%02d:%02d", now.hour(), now.minute(), now.second());
  lcd.setCursor(0,1);
  lcd.print( buffer );
  //delay (1000);

  temperatura=analogRead(A0);
  lcd.setCursor(15,2);
  lcd.print((5.0 * temperatura * 100.0)/1024.0)/1000;
  //delay (1000);

  sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura
  lcd.setCursor(4, 2); 
  lcd.print (sensors.getTempCByIndex(0));
  delay (1000);
  lcd.clear();

  //lcd.noBacklight();
}

ciao grazie

Allora vuoi aggiornare l' ora ogni secondo.
Ma i dati delle temperature con quale frequenza li vuoi aggiornare? Anche ogni secondo?

Allora controlla lasciando via tutti i delay se i secondi sono cambiati e solo in quel caso leggi i sensori e aggiorni il display.

Ciao Uwe.

Allora eliminando i 3 delay, l'orologio gira bene ma il sensore interno non si vede .
Se attivo solo il delay del sensore , l'orologio salta i secondi 2 per volta anche se l'orario e esatto.
Se attivo tutti i delay l'ora salta di 5 secondi
queste sono le prove fatte.
grazie

Nelle operazioni temporizzate non si usano i delay ma il conteggio del tempo con millis. Questo perché delay impone uno stop fisso ma tu hai delle altre operazioni che possono essere eseguite con tempi variabili per cui si possono avere dei tempi più lunghi di quelli previsti.

prova a sostituire i tuoi delay con il millis, basandoti sull'esempio che trovi nell'ide blink without delay.
oppure potresti usare looper di leo, cercalo e' una libreria

povero grazieeeeeeee

Proverò grazie