Ciao trentatre
dopo un po di ricerca ho trovato l'esempio a cui Ti riferivi.
Si trova sulla pagina da Te indicata in basso nel paccchetto della libreria sotto esempi.
http://www.nuelectronics.com/download/projects/etherShield.ziphai trovato questo:
// initialize DS18B20 datapin
digitalWrite(TEMP_PIN, LOW);
pinMode(TEMP_PIN, INPUT);
allora cerchi dove viene definito la variabile TEMP_PIN
In alto trovi:
#define TEMP_PIN 3
e poi in basso c' é la funzione che legge il valore dal sensore
void getCurrentTemp(char *temp)
{
int HighByte, LowByte, TReading, Tc_100, sign, whole, fract;
OneWireReset(TEMP_PIN);
OneWireOutByte(TEMP_PIN, 0xcc);
OneWireOutByte(TEMP_PIN, 0x44); // perform temperature conversion, strong pullup for one sec
OneWireReset(TEMP_PIN);
OneWireOutByte(TEMP_PIN, 0xcc);
OneWireOutByte(TEMP_PIN, 0xbe);
LowByte = OneWireInByte(TEMP_PIN);
HighByte = OneWireInByte(TEMP_PIN);
poi elabora i dati letti per ricavare un valore numerico dccimale con il segno + o -
TReading = (HighByte << 8) + LowByte;
sign = TReading & 0x8000; // test most sig bit
if (sign) // negative
{
TReading = (TReading ^ 0xffff) + 1; // 2's comp
}
Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25
whole = Tc_100 / 100; // separate off the whole and fractional portions
fract = Tc_100 % 100;
if(sign)
temp[0]='-';
else
temp[0]='+';
if(whole/100==0)
temp[1] =' ';
else
temp[1]= whole/100+'0';
temp[2]= (whole-(whole/100)*100)/10 +'0' ;
temp[3]= whole-(whole/10)*10 +'0';
temp[4]='.';
temp[5]=fract/10 +'0';
temp[6]=fract-(fract/10)*10 +'0';
temp[7] = '\0';
}
Comunque non sono tanto d' accordo col stile di programmazione.
Non ha senso scrivere qualcosa su un pin e solo dopo definirlo come entrata.
Se vuoi attivare la resistenza di pullup interna lo fai dipo che hai definito il pin come entrata scrivendo un HIGH.
Altra cosa un po inaspettata per chi non conosce un po meglio il C é che la funzione non da valore di ritorno ma riceve come valore di entata un puntatore a una stringa che nella funzione modifica il la stringa e poi il programma chiamante userá la stringa perché prenderá i dati a cui punta il puntatore.
Per capirne di piú dovresti leggerti un po una spiegazione del C dove spiegnao i puntatori.
ritornando al sensore:
é collegato al pin 3 e come collegamento guarda pag 6 di
http://milesburton.com/wiki/index.php?title=Dallas_Temperature_Control_Libraryhttp://milesburton.com/wiki/index.php?title=Dallas_Temperature_Control_Librarye
http://www.arduino.cc/playground/Learning/OneWireSpero di averti potuto fare capire come funziona il codice.
Ciao Uwe