Hola a todos
sono nuovo su arduino ma qualcosa con i PIC in basic l'ho fatto (non conosco i vari dialetti del C )
ho collegato il sensore dht11 sul pin A0 e messo la resistenza di pull up da 4.7K
ho scaricato 3 programmi e relative librerie
http://arduino.cc/playground/Main/DHT11Libhttp://www.dfrobot.com/index.php?route=product/product&filter_name=dht11&product_id=174http://www.ladyada.net/learn/sensors/dht.htmll'unico che mi funziona ( con le opportune modifiche del pin e del sensore da usare) è l'ultimo
MA non mi da i valori decimali ho solo valori "interi"
ad esempio 46.00 % e 22.00 *C
come mai? non mi pare sia una limitazione del sensore...
spulciando nel codice dell'esempio e poi nella libreria dht.cpp
ho trovato la funzione
float DHT::readTemperature(void) {
float f;
if (read()) {
switch (_type) {
case DHT11:
f = data[2];
return f;
case DHT22:
case DHT21:
f = data[2] & 0x7F;
f *= 256;
f += data[3];
f /= 10;
if (data[2] & 0x80)
f *= -1;
return f;
}
}
Serial.print("Read fail");
return NAN;
}
mi pare di capire che dopo la lettura dei byte inviati dal sensore con il CASE testa il tipo di sensore e nel caso del DHT11 mette solo la parte numerica intera "data[2]" nel valore di ritorno della funzione
mentre negli altri modelli mette anche la parte decimale
ma mi sfugge (non sono afferrato in C) cosa faccia con la parte di codice
f = data[2] & 0x7F;
f *= 256;
f += data[3];
f /= 10;
if (data[2] & 0x80)
f *= -1;
ed ancora cosa sono f* oppure f+ f/
grazie e scusate delle domande banali....
stefano