Termometro DS18B20 con mega 2560

Finalmente è arrivata la mega2560 ordinata qualche tempo fa. Dopo le prime normali prove OK, vorrei provare dei sensori di temperatura DS18B20 già in mio possesso e utilizzati con successo con i microcontrollori PIC.

Cosa mi consigliate per le prime prove con questi dispositivi?

Ho provato questa libreria, ma quanti problemi. http://www.pjrc.com/teensy/td_libs_OneWire.html

Qualcuno l'ha utilizzata?

Esiste qualcosa di diverso e più comprensibile come prima prova?

Grazie.

Saluti Carlo.

Per usi standard questa e' la piu semplice http://www.milesburton.com/?title=Dallas_Temperature_Control_Library

Il mio primo post di “aiuto” :slight_smile:
Seguendo questo tutorial

Ho messo su due sensori DS18B20 in cinque minuti :slight_smile:

Nel primo sketch , quello per trovare gli indirizzi, c’è un piccolo errore.
Manca #include <OneWire.h> .
Nello sketch finale devi, ovviamente, rimuovere i riferimenti al sensore di umidità ma è roba semplice :slight_smile:

Io sono con il 2009, ma suppongo non cambi nulla con mega 2560

Grazie per i suggerimenti ricevuti.

Questo è il messaggio che ricevo durante la compilazione, vedi allegato.

Per la verità gli stessi errori li ricevo anche con il codice in questo indirizzo:
http://www.pjrc.com/teensy/td_libs_OneWire.html

La libreria è sempre la stessa: #include <OneWire.h>

Saranno le mie impostazioni non so quali oppure la libreria?

Ciao Carlo

Errore OneWire.jpg

Ma dove hai scompattato la libreria OneWire? Come la istanzi? Possiamo vedere il codice?

Dal codice che mi ha proposto DanielaES prelevata da:

http://www.settorezero.com/wordpress/ ... /protocollo-1-wire/

che a sua volta indica questo link:

http://www.pjrc.com/teensy/td_libs_OneWire.html

si fa uso della libreira

OneWire.h

che ha queste definizioni e funzioni:

define ONEWIRE_SEARCH 1

define ONEWIRE_CRC 1

define ONEWIRE_CRC8_TABLE 1

define ONEWIRE_CRC16 1

ecc.

poi OneWire( uint8_t pin); uint8_t reset(void); void select( uint8_t rom[8]); void skip(void); void write(uint8_t v, uint8_t power = 0); void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0); uint8_t read(void); void read_bytes(uint8_t *buf, uint16_t count); ecc.

Negli esempi invede si usa ad esempio:

ONE_WIRE_BUS.reset(); ONE_WIRE_BUS.select(address); e altre.

Come si vede sopra queste funzioni non sono state definite da nessuna parte.

Dove sbaglio?

Grazie carletto.

non per sminuire il link fornitoti, ma quello che ti ho dato io non solo include la versione OneWire2, ma include una libreria appositamente scritta per la temperatura, la dallas mi miles. come vedi il listato di esempio si riduce a poche righe.

la onewire da sola e' generale, in quanto serve alla gestione del protocollo onewire, non di una determnata applicazione

Carletto, mi sorge spontanea una domanda... Hai scaricato la libreria, sistemandola opportunamente decompressa nell'apposita cartella?

Per il resto, probabilmente i link di testato sono migliori :) Quelli che ti ho indicato io sono comodi perché la spiegazione è più dettagliata e più adatta a noi principianti, il codice è inoltre bello pronto. In pochi minuti fai tutto. Btw proverò più avanti anche io a sostituire il mio codice con quello di testato, che risparmiare righe è sempre buona cosa :)

Grazie ragazzi, ma sono nel pallone. Comunque DanielaES, ho scaricato il tutto compresa la libreria OneWire.h da settore zero che ho piazzato in qusto punto:

C:\arduino-0023\arduino-0023\hardware\tools\avr\avr\include\ LO MESSA QUI.

Il codice che ho provato per ultimo è uno dei 2 indicati da DanielaES di settore zero, trova_indirizzo_DS1820.pde.

Ora se tolgo la libreria da quel posto il compilatore segnala che non l'ha trova mentre se c'è mi ritorna degli errori come ho indicato qualche thread fa.

Ma il compilatore ha bisogno di qualche installazione particolare? Alcune prove con LED ecc. sono andate bene. Nella libreria OneWire.h c'è il comando class che non ho mai utilizzato prima. Nel compilatore che utilizzo con i PIC non esiste o almeno io non ho mai avuto modo di usare. Comunque esiste da qualche parte un tutorial dove poter trovare anche questi comandi? Grazie Carletto.

Io ho l'IDE 22 sotto windows XP, non specifichi il tuo OS... ed a meno che non sia cambiato qualcosa la libreria dovrebbe andare in: arduino-0022\libraries

Una volta estratto il file zip, troveremo una cartella nominata “OneWire” all’interno della quale ci sono i files OneWire.cpp, OneWire.h e un’ulteriore cartella “Examples”. Trasportiamo la cartella OneWire, con tutto il suo contenuto, nella cartella di Arduino destinata alle librerie (libraries), in maniera da averla disponibile nell’IDE di Arduino.

OK, la compilazione funziona.

Grazie DanielaES.

Pensavo che le librerie con estensione (.h) andassero messe nella cartella include.

Saluti.

Prendete l'abitudine di mettere le librerie di terze parti in /libraries sotto la cartella dei vostri sketch. Su Linux quindi in /sketchbook/libraries, con Windows in /arduino/libraries (se /libraries non c'è createla). Così terrete le librerie non distribuite con Arduino fuori dall'IDE di Arduino ed ai cambi di versione del software non dovrete rimetterle tutte.