Pages: [1]   Go Down
Author Topic: Aiutino su questo Sketch  (Read 930 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  

Code:
#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
« Last Edit: February 07, 2013, 01:23:34 pm by UweFederer » Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 266
Posts: 21646
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per favore spiegati meglio; cosa significa
Quote
solo che non riesco a visualizzare in sincronia data,temperatura intera, ed quella estera -
Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
#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
« Last Edit: February 07, 2013, 04:08:53 pm by UweFederer » Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 266
Posts: 21646
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: February 07, 2013, 04:16:48 pm by uwefed » Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22800
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5895
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Newbie
*
Karma: 1
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

povero grazieeeeeeee
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Proverò grazie
Logged

Pages: [1]   Go Up
Jump to: