informazione su un lcd 16x2

allora non va bene, perchè tu lo stai leggendo come fosse un sensore analogico.
Guarda questo link e troverai anche una libreria fatto ad-hoc.
http://bildr.org/2011/07/ds18b20-arduino/

Se cerchi in rete ci sono anche pagine in italiano.

leo72:

tecnico3:
ma voi credete che sia solo quello il problema?oggi pomeriggio mi metto e lo saldo

Al 90% sì.

ok ragazzi ho saldato lcd e ora funziona...però ora anziché leggere la scritta temperatura sulla prima riga,la leggo sulla seconda.
Ho provato anche ad invertire le due righe dal programma e niente...cosa mi consigliate??cmq grazie :slight_smile: :slight_smile:

ci sara' un LCD.CURSOR(0,1) per posizionarsi nella seconda riga

ma che sketch usi, visto che dici di aver usato uno sketch per un sensore diverso ?

ci sara' un LCD.CURSOR(0,1) per posizionarsi nella seconda riga

Infatti quella riga c'è ma non c'è una riga per posizionarsi sulla prima riga.
Inserisci come prima riga un LCD.CURSOR(0,0), prima di fare il print della riga Temperatura.

superzaffo:

ci sara' un LCD.CURSOR(0,1) per posizionarsi nella seconda riga

Infatti quella riga c'è ma non c'è una riga per posizionarsi sulla prima riga.
Inserisci come prima riga un LCD.CURSOR(0,0), prima di fare il print della riga Temperatura.

ok risolto...comunque lo sketch l'ho scritto prima ed è questo(devo solo cancellare la formula della temperatura e metterne una giusta) :

#include <LiquidCrystal.h>

LiquidCrystal schermo (12, 11, 5, 4, 3, 2);
const byte RELE =  7;  //Relè
float temperatura;

void setup()  { 
  pinMode(RELE, OUTPUT);  //Impostazione PIN come uscita
  schermo.begin(16,2); //display
} 
void loop(){
  temperatura = analogRead(A0);
  temperatura = ((5 * temperatura * 100.0)/1024.0) * 0.0325;
  schermo.setCursor(0,1);
  schermo.print("temperatura:");
  schermo.setCursor(13,1);  
  schermo.print(temperatura);
 
  if (temperatura < 13)  {
    digitalWrite(RELE,HIGH);
      }
  else  {
    digitalWrite(RELE,LOW);
      }
  delay(2000);
}

edit by mod:
per favore, includi il codice usando gli appositi tag

Per usare il DS18B20 devi prima di tutto modificare il collegamento mettendo una resistenza di pull'up di 4.7Kohm al pin centrale e poi collegarlo ad un pin digitale. (il 6 o l'8 vanno benissimo)

Esempio

Poi devi scaricare una libreria apposita. Ad esempio questa --> http://download.milesburton.com/Arduino/MaximTemperature/DallasTemperature_372Beta.zip
presa qui --> MilesBurton.com

e poi testare tutto con uno sketch tipo questo:

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
}


void loop(void)
{ 
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
  
  Serial.print("Temperature for Device 1 is: ");
  Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
  
}

(cambia il pin del #define ONE_WIRE_BUS)

La temperatura appare nel Serial Monitor dell'IDE.

Infine devi unire i 2 sketch per far stampare la temperatura nel LCD.

i collegamenti già li avevo fatti.
Ora mi da un solo problema; cioè quando vado a caricare il programma, non me lo carica perchè mi dice che c'è un errore qui:
#define ONE_WIRE_BUS 2
(per provare, ho preso lo sketch che mi hai dato tu)

no scusate è qui che mi da un errore:
OneWire oneWire(ONE_WIRE_BUS);

tecnico3:
no scusate è qui che mi da un errore:
OneWire oneWire(ONE_WIRE_BUS);

Copia-e-incolla l'errore

non cambia nulla

tecnico3:
non cambia nulla

Se vuoi il nostro aiuto, se ti chiediamo di pubblicare l'errore per favore pubblicalo. Scrivendo:

tecnico3:
no scusate è qui che mi da un errore:
OneWire oneWire(ONE_WIRE_BUS);

non dai nessuna informazione utile per capire dov'è che sbagli.

mi viene in mente quella volta che dissi a un mio allievo che stava lavorando su un programma..

Mi esci per favore....

Si alzo' e usci' dalla stanza....

questo è il programma che ho copiato:
#include <OneWire.h>
#include <DallasTemperature.h>
define ONE_WIRE_BUS 2 //qui mi da l'errore
OneWire oneWire (ONE_WIRE_BUS); //e anche qui
DallasTemperature sensors(&oneWire);

void setup(){
serial.begin(9600);
serial.println("Dallas Temperature IC Control Library Demo");
sensor.begin();
}
void loop(){
Serial.print("Requesting temperatures...");
sensors.requestTemperatures();
Serial.println("DONE");

Serial.print("temperature for Device 1 is: ");
Serial.print(sensors.getTempCByIndex(0));
}

@tecnico3:
Regolamento
Art.11: Suggerimenti per ottenere il massimo aiuto dalla vostra richiesta

  • Se ottenete un errore, pubblicatelo (copia-e-incolla). Non scrivete semplicemente "mi dà errore".

Art. 13: Etichetta del forum
Le persone stanno cercando di aiutarvi
Se qualcuno vi risponde chiedendovi maggiori dettagli, probabilmente sta cercando di capire cosa state cercando di fare. Non confondetelo con risposte del tipo "non è importante": più dettagli del vostro progetto fornite, maggior aiuto potete ottenere.

ok scusate...allora mettiamo ordine.
Come detto precedentemente, io sto creando un programma in cui ho: Arduino 1, lcd 16x2,rele,sensore di temperatura digitale(DS18B20). Inizialmente,stavo usando il sensore di temperatura digitale come uno analogico. Notato l'errore, mi stavo documentando su come far funzionare tale dispositivo nel modo corretto e mi si sono dati questi dati:

PaoloP:
Per usare il DS18B20 devi prima di tutto modificare il collegamento mettendo una resistenza di pull'up di 4.7Kohm al pin centrale e poi collegarlo ad un pin digitale. (il 6 o l'8 vanno benissimo)

Esempio

Poi devi scaricare una libreria apposita. Ad esempio questa --> http://download.milesburton.com/Arduino/MaximTemperature/DallasTemperature_372Beta.zip
presa qui --> MilesBurton.com

e poi testare tutto con uno sketch tipo questo:

#include <OneWire.h>

#include <DallasTemperature.h>

// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");

// Start up the library
sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
}

void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");

Serial.print("Temperature for Device 1 is: ");
Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire

}



(**cambia il pin del #define ONE_WIRE_BUS**)

La temperatura appare nel Serial Monitor dell'IDE.

Infine devi unire i 2 sketch per far stampare la temperatura nel LCD.

@tecnico3:
:cold_sweat:
allora... ricominciamo... hai detto che ricevevi un errore...

tecnico3:
no scusate è qui che mi da un errore:
OneWire oneWire(ONE_WIRE_BUS);

Vorresti per favore copiare il messaggio di errore che ricevi nell'IDE di Arduino e pubblicarlo qui, è inutile che copi il codice, vogliamo il messaggio di errore... :sweat_smile: :sweat_smile:

sketch_mar04a:11 error: ' OneWire' does not name a type
sketch_mar04a:14 error: 'DallasTemperature' does not nome a type
sketch_mar04a.ino: In function ' void setup()' :
sketch_mar04a:22 error: 'sensors' was not declared in this scope
sketch_mar04a.ino : in function 'void loop()':
sketch_mar04a:30 error: 'sensors' was not declared in this scope
sketch_mar04a:36 error: expected ' } ' at end of input

(scusatemi per prima)

Ok. Perfetto.
Cominciano con un precedente errore:

define ONE_WIRE_BUS 2                                      //qui mi da l'errore

Qui ti serve scrivere #define (con il cancelletto prima di define)

#define ONE_WIRE_BUS 2                                      //qui mi da l'errore

Adesso gli altri errori che ricevi sembrano imputabili al fatto che non abbia caricato le librerie OneWire e DallasTemperature visto che non riesce ad istanziarle.
Dov'è che le hai scompattate?
Di solito si mettono in /Documenti/Arduino/libraries oppure ~/sketchbook/libraries (a seconda del sistema operativo usato).

pizza che errore scemo!!grazie
ho scaricato la libreria one wire da qui
http://download.milesburton.com/Arduino/MaximTemperature/DallasTemperature_372Beta.zip
presa qui --> MilesBurton.com
e le ho scompattate in documenti/arduino/librerie
Ora mi dice errore in: sensors.begin(); nell'IDE esce scritto: 'sensors' was not declared in this scope

sensor o sensors?
Tu prima hai messo questo:

DallasTemperature sensors(&oneWire);
....
sensor.begin();

Lo dichiari con "sensors" poi lo usi come "sensor"....