Problemi con la libreria OneWire 2.0 e il sensore DS18B20

Ciao a tutti,
ho cominciato a utilizzare Arduino Uno R3 assieme all’IDE 1.5.5 installato su un computer con Win 8 qualche mese fa. La scorsa settimana per “aumentare un po’ la difficoltà” ho provato a fare un rilevatore di temperatura con uno schermo LCD e un sensore Dallas DS18B20. Ho installa to la libreria OneWire 2.0 e la libreria DallasTemperature e poi ho creato un programma abbastanza semplice per cominciare (quello allegato), ma quando lo verifico o lo carico esce sempre lo stesso messaggio di errore, il seguente:

In file included from C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp:85:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WConstants.h:1:20: error: wiring.h: No such file or directory
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp: In constructor 'OneWire::OneWire(uint8_t)':
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp:93: error: 'digitalPinToBitMask' was not declared in this scope
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp:94: error: 'digitalPinToPort' was not declared in this scope
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp:94: error: 'portInputRegister' was not declared in this scope
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp: In member function 'uint8_t OneWire::reset()':
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp:127: error: 'delayMicroseconds' was not declared in this scope
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp:134: error: 'delayMicroseconds' was not declared in this scope
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp: In member function 'void OneWire::write_bit(uint8_t)':
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp:157: error: 'delayMicroseconds' was not declared in this scope
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp:165: error: 'delayMicroseconds' was not declared in this scope
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp: In member function 'uint8_t OneWire::read_bit()':
C:\Users\Giacomo\Documents\Arduino\libraries\OneWire\OneWire.cpp:185: error: 'delayMicroseconds' was not declared in this scope

Ho provato molte soluzioni ma nessuna ha funzionato, qualcuno potrebbe darmi un consiglio ?
Grazie

LetturaSensoreDS18B20.ino (1.82 KB)

Prima di pubblicare un quesito si legge il regolamento, poi ci si presenta ed infine si pubblica in una sezione appropriata. Nella sezione internazionale la lingua è l'inglese.

Io non conosco le librerie che stai usando, ma credo che ci siano degli errori sull utilizzo di queste ultime, perche verificando il codice sul mio computer mi da tutti errori relativi ad esse

Non so se questo puo aiutarti, a studia bene l utilizzo dlle librerie che usi =)

Federico

Molto probabilmente è la libreria non compatibile con l'IDE 1.5.5. Prova l'IDE 1.0.5. Il ramo 1.5.x è ancora in beta e tante cose non funzionano.

---Italiano---

Scusate, sono alle prime armi. Ora mi presento:
Vivo in un paesino in provincia di Padova, ho 13 anni e mi piace l'elettronica. Con il mio Arduino Uno vorrei, prima o poi, fare un piccolo robot che si auto gestisca, ma per cominciare l'ho diviso in "pezzetti" semplici da realizzare.
Leo72 non ho ben capito, mi consigli di aggiornare la libreria o di provare l'IDE 1.0.5 , giusto ?
Ho appena provato con la versione di OneWire 2.2 sull'IDE 1.5.5 e gli altri problemi si sono risolti ma mi si presenta questo altro messaggio d'errore che riguarda invece la libreria DallasTemperature:

In file included from C:\Users\Giacomo\Documents\Arduino\libraries\DallasTemperature\DallasTemperature.cpp:9:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WConstants.h:1:20: error: wiring.h: No such file or directory

L'errore del file WCostants.h, adesso che ci penso devo averlo causato io perchè seguendo un consiglio trovato in precedenza; cosa mi consigliereste di fare ?

---English (with Google Traslate)---

Sorry, I'm a beginner. Now let me introduce myself:
I live in a village in the province of Padua, I'm 13 years old and I like electronics. With my Arduino Uno I would, sooner or later, make a small robot that will self manage, but to begin with I have divided into "bits" simple to implement.
Leo72 I did not understand, I advice you to update the library or try the IDE 1.0.5, right?
I just tried with version 1.5.5 of OneWire 2.2 IDE drive and other problems have been resolved but this presents me another error message that concerns the library DallasTemperature:

In file included from C:\Users\Giacomo\Documents\Arduino\libraries\DallasTemperature\DallasTemperature.cpp:9:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WConstants.h:1:20: error: wiring.h: No such file or directory

The error file WCostants.h, now that I think I must have caused by following an advice because I found earlier, what would you advise me to do?

Scarica l'ultima libreria Dallas disponibile. E' la 3.7.2 --> http://download.milesburton.com/Arduino/MaximTemperature/DallasTemperature_372Beta.zip (da Miles Burton - Innovative engineering for pretty much anything)
Dovrebbe essere compatibile anche con la 1.5.5.
Ho visto che per la OneWire hai già l'ultima disponibile (OneWire Arduino Library, connecting 1-wire devices (DS18S20, etc) to Teensy).

Non c'è bisogno di scrivere in inglese nella sezione italiana del forum. :grin:

Benvenuto.

PaoloP:
Non c'è bisogno di scrivere in inglese nella sezione italiana del forum. :grin:

Probabilmente ha seguito i link degli spostamenti del suo thread e si è perso... per certo ha fatto 2 salti :wink:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WConstants.h:1:20: error: wiring.h: No such file or directory

questo sembra l'errore causato dalla rinomina di wiring.h in arduino.h, geniale idea, senza senso che ha solo voluto eliminare ogni riferimento all'autore originario di tutta l'idea, dalla quale e' partita la fortuna di Banzi

tecnicamente significa: metti le utime versioni e prova sia con IDE 1.0 che con 1.5

Ho appena provato con la nuova libreria DallasTemperature e … adesso funziona. :smiley:
Grazie a tutti.
PS: Ho allegato anche 3 foto del circuito funzionante e anche il programma un po’ modificato.

#include <Event.h>
#include <Timer.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

#define ONE_WIRE_BUS 9

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int inter=6;
int val=0;
int puls=8;
float val_2=0;

void setup(void)
{
  pinMode(inter, INPUT);  //dichiarazione di utilizzo di pulsante o interruttore per INPUT
  digitalWrite(inter, HIGH);
  pinMode(puls, INPUT);
  digitalWrite(puls, HIGH);
   sensors.begin();
   lcd.begin(16, 2);
}

void loop(void)
{ 
  val=digitalRead (6);
  val_2=digitalRead (8);
  if (val == 1){
    if (val_2 == 1){
      sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura
      lcd.clear();
      lcd.setCursor(0, 0); // bottom left
      lcd.print("Temperatura di: ");
      lcd.setCursor(0, 1); // bottom left
      lcd.print (sensors.getTempCByIndex(0));
      lcd.print (" C");
     }else{
      sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura
      lcd.clear();
      lcd.setCursor(0, 0); // bottom left
      lcd.print("Temperatura di: ");
      lcd.setCursor(0, 1); // bottom left
      lcd.print (sensors.getTempCByIndex(0)*1.8+32);
      lcd.print (" F");}
    }else{
     lcd.clear();
     delay(1000);
     }
}

Bravo, così si fa.
Hai il tuo primo karma :wink: