Loading...
Pages: 1 [2] 3   Go Down
Author Topic: arduino rileva umidità e temperatura 5 minuti poi non più  (Read 865 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 2
Posts: 466
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Praticamente devi scaricare la libreria, la scompatti, ti crea una cartella DHT, questa cartella la copy nella cartella "libreries" della tua installazione dell' ide.
Fai eseguire l' ide (o lo riavvii) e a questo punto puoi utilizzare l' empio/i che trovo in file/esempi/dht.
Se mastichi un po' di inglese, prova seguire quel link che ti ho dato, così potrai capire un pò di cose su quel sensore.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa sono tonto ma non ho capito come devo costruire la cartella e le sottocartelle smiley-roll-blue

Ho scaricato lo zip dal sito, ora scompattando tutto trovo i seguenti file: DHT.h - DHT.cpp - DHTtester.pde

Mi puoi strutturare come mettere il tutto per poter caricare su arduino il file .pde, grazie

Ho risolto, grazie ora provo.

Dimenticavo ho portato l'alimentazione a 9 ma il problema persiste il display ora impazzisce pure, compaiomo anche tutti simboli strani dopo che funziona un pò
« Last Edit: February 18, 2013, 08:37:59 am by parapaolo » Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 466
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora motivo in più per fare una prova con il dht11 solo e visualizzare la temp. via seriale...
Poi passiamo al display.
Logged

ivrea (to)
Offline Offline
God Member
*****
Karma: 10
Posts: 624
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Controlla meglio. Di solito gli zip contenenti le librerie contengono ANCHE i percorsi dei file.

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok dopo 2 ore sul monitor seriale ancora scorrono i valori senza intoppi e il sensore rileva esattamente le variazioni, adesso come mi muovo per applicarlo ad un display?
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 386
Posts: 10248
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il displsy è uno strumento di visualizzazione alternativo al serial monitor; per funzionare ha bisogno di una libreria specifica (che devi integrare nello sketch), di una dichiarazione dei pin collegati ad Arduino (ti servono al minimo 6 fili per i segnali + l'alimentazione), poi al posto dei comandi normali del Serial Monitor metti quelli specifici per il display.
Visto che hai risolto il problema del sensore ti basta seguire quanto scritto nel PlayGround a proposito del display LCD (va benissimo la versione a 4 bit) e completi rapidamente.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Forum Moderator
Italy
Online Online
Brattain Member
*****
Karma: 219
Posts: 16460
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nel Reference trovi la spiegazione della libreria LiquidCrystal:
http://arduino.cc/en/Reference/LiquidCrystal

Aprendo i vari link trovi anche lo schema di collegamento del display.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok ho collegato il display e funziona dato che i test del displaiy caricati funzionano tutti, ora il problema è fondere insieme il tutto, ossia la libreria DHT che legge dal sensore e la LiquidCrystal  smiley-eek-blue

Un esempio funzionante con magari le spiegazioni è chiedere troppo?
Logged

Forum Moderator
Italy
Online Online
Brattain Member
*****
Karma: 219
Posts: 16460
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, è chiedere troppo perché internet è pieno di esempi e basta cercarli...  ]smiley
tipo questo:
http://www.geeetech.com/wiki/index.php/Electric_thermometer_by_using_DHT11_sensor_module
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, è chiedere troppo perché internet è pieno di esempi e basta cercarli...  ]smiley
tipo questo:
http://www.geeetech.com/wiki/index.php/Electric_thermometer_by_using_DHT11_sensor_module

Ok non lo faccio più smiley-zipper

Allora ho provato a fondere insieme le due librerie ragionando come mi avete detto sopra e mi è venuto fuori questo codice

Code:
// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 8     // what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT11   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
 lcd.begin(16, 2);
  dht.begin();
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
     lcd.setCursor(0,0);
  lcd.print("Temp= ");
  lcd.print(t);
  lcd.print(" *C");
  lcd.setCursor(0,1);
  lcd.print("Humidity= ");
  lcd.print(h);
  lcd.print("% ");
  }
}

E sono 10 minuti che gira e sembra funzionare anche  smiley-lol
Solo una cosa mi restituisce i valori con il punto decimale esempio Temp= 21.00 dato che il DHT11 non rileva tale valore decimale come faccio a toglierlo sia dalla temperatura che dall'umidità?
Mi sembra di aver letto chè si possa specificare il valore decimale delle risposte ma non ho capito bene come sul codice, grazie
« Last Edit: February 18, 2013, 05:48:57 pm by parapaolo » Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 386
Posts: 10248
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bravo, complimenti! Come vedi riuscire a risolvere i problemi da solo dà maggiori soddisfazioni ed aiuta ad imparare smiley-wink
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Cagliari
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3011
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Siccome h e t sono definiti come float, puoi usare lcd.print(t,0) e lcd.print(h,0) per non far visualizzare i decimali.

Reference --> http://arduino.cc/en/Serial/Print
Quote
Syntax
Serial.print(val)
Serial.print(val, format)

Parameters
val: the value to print - any data type
format: specifies the number base (for integral data types) or number of decimal places (for floating point types)
« Last Edit: February 18, 2013, 06:05:54 pm by PaoloP » Logged


Offline Offline
Sr. Member
****
Karma: 2
Posts: 466
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi associo ai complimenti di Michele.
Altra cosa.. Non togliere tutti e due i decimali. Perchè Il DHT11 e come il DHT22 ha un decimale di precisione, quindi modifica il comando in questo modo: lcd.print(t,1) e lcd.print(h,1)

Ciao
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao, nel mio caso il decimale è presente ma sempre pari a zero anche modificando lo sketch come suddetto.
 Qualcuno in rete sostiene che con il DHT11 non funziona il decimale ma in un video su Youtube c'è un termometro LCD con DHT11 che il decimale lo visualizza sul display.
Com'è la faccenda? smiley-roll
Logged

Cagliari
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3011
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dal datasheet risulta che il DHT11 ha la risoluzione dell'1% quindi non ha decimale.
Si può però effettuare un campionamento di n letture e poi fare la media che avrò almeno una cifra decimale significativa.
Logged


Pages: 1 [2] 3   Go Up
Print
 
Jump to: