Ho appena inizato a cimentarmi nel mondo di arduino. Ho preso uno starter kit e ho iniziato a giocare.
Ho collegato il sensore DHT11 con le relative librerie e tutto sembra funzionare.
Il problema è che la lettura impazzisce.... continua a saltare dalla lettura corretta a dei valori nettamente più bassi dell'errore del sensore... salta da umidtà 39 a 23 e temp da 26 a 20 e poi torna a quelli corretti....
Potrebbe essere un problema del sensore difettoso?
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:
ok... posto lo schema (è il primo che faccio quindi sarà sicuramente orribile e in più non sapevo come collegare lcd!!!) Lcd è collegato tramite il PCF8574AT. Funziona tutto correttamente. però ogni tanto inizia a fare dele letture sistematiche errate del tipo: H%41 t°27 poi salta a H%27 t°23 poi ritorna al valore iniziale e continua a fare questo ciclo finchè non riavvio il programma.
#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 8
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup(){
Serial.begin(9600);
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
pinMode(13,OUTPUT);
lcd.begin(16,2);
}
void loop(){
int chk;
Serial.print("DHT11, \t");
chk = DHT.read(DHT11_PIN); // READ DATA
switch (chk){
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
// DISPLAT DATA
Serial.print(DHT.humidity,1);
Serial.print(",\t");
Serial.println(DHT.temperature,1);
delay(1000);
lcd.setCursor(2,0); //Start at character 4 on line 0
lcd.print(DHT.humidity);
lcd.setCursor(2,1);
lcd.print(DHT.temperature);
if (DHT.humidity>=43&&DHT.humidity<=45){
digitalWrite(13,HIGH);
}
else{
digitalWrite(13,LOW);
}
}
Hai sbagliato a collegare il sensore.
Il piedino che hai collegato a GND va lasciato libero e quello che hai lasciato libero va collegato a GND.
Ti consiglio di evitare di usare un solo colore per i collegamenti, fai solo confusione, usa il rosso per VCC+, il nero per GND (rispetta le convenzioni)
Attilio, grazie della risposta... ho schematizzato con il sensore che c'era dentro al sw. Il mio sensore ha 3 piedini xchè è montato su una basetta. Allego foto!!! cmq stamattina non ha mai fatto lo scherzo di saltare i valori
Potrebbe essere anche un falso contatto sui collegamenti, con i cavetti volanti sulle breadboard e sui pin di arduino può succedere.
Mi permetto di darti un altro consiglio: quando scrivi sul forum evita le abbreviazioni da sms o da chat :D, tipo "xchè" al posto di perchè o "cmq" al posto di comunque