Crea sito

Sensore di temperatura e umidità DHT22 + Arduino

In questo articolo vedremo come rilevare misure di temperatura e umidità con il sensore DHT22 e Arduino.

INGREDIENTI:

– 1x Arduino UNO

– 1x Sensore DHT22

– 1x Resistenza da 10 kΩ

– 1x Bredboard

– Cavetti vari

L’utilizzo di questo sensore e molto semplice grazie alla libreria per Arduino che potete scaricare da qui.

Il circuito da realizzare è il seguente

AM2302

Lo scetch per testare il sensore:

//Creato da Mohamed Fadiga momodesine@hotmail.it
#include "DHT.h"

DHT dht(2,DHT22); //Definisco il pin al quale è collegato il sensore e il tipo

void setup()
{
  Serial.begin(9600);
  Serial.println("DHT test");
  dht.begin();
}

void loop()
{
  float h = dht.readHumidity(); // Leggo il valore di umidità
  float t = dht.readTemperature(); // Leggo il valore di temperatura
  if (isnan(t) || isnan(h)) // Se almeno uno dei due valori è NaN (Not a Number)
  {
    Serial.println("Impossibile leggere il sensore!");
  }
  else //altrimenti
  {
    Serial.print("Umidità: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperatura: ");
    Serial.print(t);
    Serial.println(" *C");
    // non è necessario mettere un dalay() perchè ci vogliono due secondi per leggere i valori, quindi il serial monitor riceverà dati ogni 2 secondi.
  }
}

64 thoughts on “Sensore di temperatura e umidità DHT22 + Arduino

    Tutto molto chiaro, grazie dell’articolo.
    Sara

      Noobs
      on said:

      Grazie per il commento 🙂

      Sei un’appassionata di Arduino?

        Non sono nè esperto nè pratico, ma mi piace la programmazione Arduino. Ho copiato ed incollato tutti dati dello sketch; carico e si ferma, evidenziando con colore giallo, sulla seguente scrittura: Serial.println(“Impossibile leggere il sensore!”), mentre a fondo pagina dello sketch c’è scritto: stray ‘\’ in program e sotto segnala i seguenti errori: sketch_dec30a.ino:2:17: error: DHT.h: No such file or directory
        sketch_dec30a:19: error: stray ‘\’ in program
        sketch_dec30a:19: error: stray ‘\’ in program
        sketch_dec30a:4: error: ‘DHT’ does not name a type
        sketch_dec30a.ino: In function ‘void setup()’:
        sketch_dec30a:10: error: ‘dht’ was not declared in this scope
        sketch_dec30a.ino: In function ‘void loop()’:
        sketch_dec30a:15: error: ‘dht’ was not declared in this scope
        sketch_dec30a:19: error: ‘u201cImpossibile’ was not declared in this scope . Ho anche cambiato sensore, ma è tutto uguale.

          Ho dimenticato di dire che lavoro su Mac Book air. Potete aiutarmi, magari con un linguaggio e guide semplici? Grazie

            Gaetano Persico
            on said:

            Sempre in riferimento al sensore dht22, su riportato, ho installato arduino su un pc con windows 7, ho ricaricato la libreria di questa stessa pagina e mi evidenzia in giallo la seguente stringa: Serial.println(“Impossibile leggere il sensore!”); ho due sensori uguali, anche sostituendo l’uno con l’altro, la situazione non cambia.

            Noobs
            on said:

            Ciao,

            i primi errori derivavano dal fatto che non avevi scaricato la libreria.
            Gli errori di compilazione ti dicono che ci sono delle variabili che non sono definite nel tuo scketch, che infatti sono definite nella libreria.
            Trovi il link per scaricarla nell’articolo, ma te lo rimetto: https://github.com/nethoncho/Arduino-DHT22
            il secondo errore invece, deriva da un problema delle virgolette.
            Se noti, le virgolette di quella riga non sono semplici come le altre, ma c’è virgoletta aperta e virgoletta chiusa “”. Arduino vuole due virgolette semplici “”.
            cancellale e riscrivile e vedrei che verranno fuori virgolette semplici.
            Il problema è colpa del sito, che nonostante gli dica che è una parte di codice, a volte me lo vede come testo normale, e quindi mi cambia le virgolette.
            Comunque ho provveduto a sistemarlo, grazie per la segnalazione.
            Vorrei farti un appunto, quando hai un errore di compilazione non può ma essere colpa di Arduino o di sensori collegati ad esso. quando il programma non compila, vuol dire che non è nemmeno stato possibile caricarlo su Arduino!
            Quindi prima di controllare l’hardware, controlla il codice e prova ad interpretare gli errori di compilazione.
            la prima riga dice: sketch_dec30a.ino:2:17: error: DHT.h: No such file or directory
            questo significa che non trova il file della libreria, quindi devi aggiungerlo.
            di conseguenza, non essendoci la libreria, non riconosce le variabili dichiarate in essa:
            sketch_dec30a:4: error: ‘DHT’ does not name a type
            sketch_dec30a:10: error: ‘dht’ was not declared in this scope

            l’erore: sketch_dec30a:19: error: ‘u201cImpossibile’ was not declared in this scope si riferisce alla virgoletta aperta.

            Spero di esserti stato d’aiuto.

            Buone Feste.

    pluto
    on said:

    Come mai caricando lo sketch mi da errore Arduino:1.5.8 (Windows 7), Scheda:”Arduino Uno”

    sketch_nov18b.ino:1:17: fatal error: DHT.h: No such file or directory
    compilation terminated.
    Errore durante la compilazione

    Questo report potrebbe essere più ricco
    di informazioni con
    “Mostra un output dettagliato durante la compilazione”
    abilitato in “File > Impostazioni”
    #include “DHT.h”
    #include

    DHT dsht(2, DHT11); //Imposta il modello di sensore e il pin di Arduino a cui è collegato
    LiquidCrystal lcd(3,4, 5,6,7,8); //Imposta i pin di Arduino a quali sono collegati in pin del display (Rs,E,DB4,DB5,DB6,DB7)

    Gaetano Persico
    on said:

    Grazie Noobs per la risposta; già questa mi ha rassicurato. Mi accorgo dalle tue spiegazioni che hai compreso tutto il problema e mi hai salvato da pensieri di nuovi riacquisti tra Arduino e sensori. Ti prego, però, se hai tempo, se mi puoi fare una sorta di sequenza del lavoro puntuale che hai definito, dall’aprire le librerie fino a salvare lo sketch; poichè le librerie che mi hai indicato le ho aperte tutte e incollate, una alla volta (non tutte insieme) nello sketch. Da quello che dici ho sbagliato e non capisco dove scaricare le librerie e aggiungere i file, per far si che lo sketch le trovi! Ci vorrebbe, per i principianti iniziali, una guida puntuale con le immagini. Comunque, grazie tanto delle tue spiegazioni e, durante questi gioni, studierò smanettando. Certo che avere contatti con gli esperti di pc e programmi è come avere un medico in casa, cioè rassicurante. Grazie e anche a te buone feste.

      C’è una guida sulla rete su come scaricare le librerie Arduino?

        Scusate l’insistenza, ma il fatto che mi trovo, apparentemente, di essere ad un passo dalla “verità” del funzionamento del mio circuito di rilevamento di temperatura, mi rende irrequieto e non faccio altro che smanettare in tutta la rete, senza trovare una soluzione soddisfacente. Sullo sketch incollo prima il programma di Noobs che è in questa stessa pagina e poi qual è la procedura successiva? incollare, allegare, importare o aggiungere file dal menù sketch??? Ho capito bene che per scaricare la libreria del sensore si clicca il download zip, nella pagina, a destra, del sito https://github.com/nethoncho/Arduino-DHT22??? Mi mancano ancora degli altri passaggi… Potete aiutarmi o chiedo troppo?

          Noobs
          on said:

          tranquillo, se oggi trovo il tempo, altrimenti domani faccio una guida su come caricare le librerie, la metto sul sito e ti do il link.
          Non preoccuparti di commentare più volte se hai dei dubbi.
          può capitare che non controlli i commenti tutti i giorni, ma appena entro, rispondo volentieri a tutti.

            Gaetano Persico
            on said:

            Grazie, Forse ho capito come introdurre la libreria sullo sketch, ma non ho capito come inserirla, per esempio, rispetto al tuo programma (forse mi ripeto… ah l’ansia del compito!!!) le righe della libreria vanno prima, durante o dopo il tuo programma? devo copiarle tutte intere o prendere solo una stringa? intanto sto sudiando il linguaggio C per capire qualcosa in più e risparmiare domande “stupide”. Grazie e resto in attesa del tuo link.

          Noobs
          on said:

          Ciao,
          qui http://wooo.altervista.org/aggiungere-librerie-arduino/ trovi la guida su come aggiungere una nuova libreria.
          ho usato come esempio la libreria del DHT22 😉
          devo ringraziarti perché grazie a te ho scoperto che hanno cambiato la libreria a qui puntava il link in questo articolo.
          l’ho cambiato e ho messo un link che punta alla libreria corretta, ma te lo rimetto anche qui https://github.com/adafruit/DHT-sensor-library
          In caso di dubbi, sono sempre a disposizione.

    Gaetano Persico
    on said:

    Allora, ho caricato la libreria che hai indicato, ho aperto uno sketch nuovo e ho inserito prima il file della libreria da te indicatami, con la procedura SKETCH -> IMPORTA LIBRERIA e mi inserisce questo file: #include Poi incollo il tuo programma subito dopo il precedente. Come risposta viene fuori la scritta: “Caricamento terminato” e sotto compare la seguente scrittura (capisco che non è in sincronia?)
    Dimensione del file binario dello sketch: 5.860 bytes (su un massimo di 32.256 bytes)
    avrdude: stk500_getsync(): not in sync: resp=0x00
    Che faccio?

      Noobs
      on said:

      Non serve importare la libreria, visto che l’ho già fatto io scrivendo
      #include “DHT.h”

      se lo fai, non crea errore di compilazione, perchè nelle librerie c’è una parte di codice che impedisce che vengano copiate più volte anche quando vengono incluse più volte.

      riguardo al tuo errore, hai selezionato la scheda arduino corretta e la porta seriale corretta?

      la scheda la selezioni su Strumenti->Tipo di Arduino
      la porta seriale la imposti su Strumenti->Porta Seriale

        Gaetano Persico
        on said:

        Ho copiato ed incollato il tuo programma dall’esempio riportato in Libreria. Arduino che ho è UNO ed è quello indicato negli strumenti, la porta seriale indica COM1; come faccio a sapere se è quella giusta? provo tutte le altre porte?

          Gaetano Persico
          on said:

          Ho dimenticato di dire che non ho ancora salvato il progetto. Forse è questo che non permette il sincronismo?

            Gaetano Persico
            on said:

            EVVIVA!!!! Ho cambiato la porta COM4 e mi dà i seguenti valori: Humidity: 44.70 (va tra i 44 e 45.90) e Temperature: 18.20 *C 64.76 *F Heat index: 78.93 *F
            A cosa si riferisce il valore 64.76?
            Grazie tantissimo, Noobs…

            Gaetano Persico
            on said:

            Ora mi aspetta un’altra impresa: quella di inserire lo schermo LCD ed il tuo progetto. Speriamo bene!!!

    Gaetano Persico
    on said:

    C’è un problemino. Ho chiuso lo sketch, poi l’ho riaperto e, dopo ricaricato, mi dice: La porta seriale ‘COM4’ è già in uso. Provate a chiudere i programmi che potrebbero usarla. Sotto riporta la seguente scrittura: processing.app.SerialException: La porta seriale ‘COM4’ è già in uso. Provate a chiudere i programmi che potrebbero usarla.
    at processing.app.Serial.(Serial.java:171)
    at processing.app.Serial.(Serial.java:92)
    at processing.app.SerialMonitor.openSerialPort(SerialMonitor.java:207)
    at processing.app.Editor.handleSerial(Editor.java:2483)
    at processing.app.EditorToolbar.mousePressed(EditorToolbar.java:353)
    at java.awt.Component.processMouseEvent(Component.java:6260)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4235)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2475)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

    Ma io ho aperto solo varie finestre di internet e basta… almeno credo!!!

      Gaetano Persico
      on said:

      Ho spento il pc, l’ho riacceso e va tutto bene: rileva di nuovo l’umidità e la temperatura. Questo pc ha windows 7. Forse, anche se chiudo lo sketch, la porta com4 rimane sempre attiva!?
      L’altro quesito che mi piacerebbe capire è a cosa si riferiscano le due colonne a fianco alla temperatura: Humidity: 42.80 # (si modifica tra 80 e 60), Temperature: 19.90 *C (si modifica tra 19 e20) fino a qui tutto comprensibile; poi, la colonna successiva alla temperatura, riporta i valori tra 67.82 e 68.00 *F e subito vicino: Heat index i valori che si muovono tra 77.47 e 77.48; questi ultimi vanno al contrario dei precedenti: aumentano o diminuiscono i valori. A cosa si riferiscono?

        Gaetano Persico
        on said:

        Forse ho trovato l’errore della porta sempre aperta. In pratica, questa volta, dopo attivato tutto, sketch e Monitor seriale, rilevato alcune misure, ho chiuso direttamente lo sketch, al contrario di prima che avevo chiuso prima il monitor seriale. Ho riacceso e tutto va bene, per due volte di seguito.

          Noobs
          on said:

          Strano, questo errore capita di solito quando apri più di un IDE e uno usa la porta seriale.
          comunque scollegando l’USB, riavviando l’IDE e ricollegando l’USB dovrebbe risolvere il problema.

        Noobs
        on said:

        A quanto pare hanno aggiornato la libraria, perchè non c’erano tutte queste cose quando ho fatto questo articolo…..dovrò aggiornarlo.
        comunque Temperature e Humidity sono la temperatura in gradi Celsius e l’umidità percentuale.
        Il valore con la F è la temperatura in gradi Farenight, mentre lo Heat index rappresenta la temperatura percepita da una persona.
        Viene calcolato (in questo caso dentro la libreria) da una formula che utilizza la temperatura e l’umidità.
        purtroppo la formula ha bisogno della temperatura in gradi Farenight, per questo ti ritrovi valori così elevati.
        puoi convertirlo in celsius con la formula gradi_celsius = (5/9) × (gradi_farenight – 32)

          Grazie, ci provo.

            Gaetano Persico
            on said:

            Per regola di domande, riporto questa richiesta fatta all’altro schema con il display. Lo sketch funziona benissimo. Non ho ancora capito come e dove si inserisce la stringa di trasformazione da Farenight a Celsius, così come mi hai suggerito. Se hai pazienza a confrontarti con allievi inesperti, ti ringrazio tanto.

            Noobs
            on said:

            ciao,
            sotto alla riga: float hi = dht.computeHeatIndex(f, h);
            scrivi:
            float c_hi = (5/9)*(hi-32);
            poi sostituisci a riga Serial.print(hi);
            con Serial.print(c_hi);
            e nell’ultimo print scrivi C al posto di F per indicare che si tratta di gradi celsius

    Gaetano Persico
    on said:

    Ho cambiato le righe… è strano, ma mi dice: ‘DHT’ does not name a type, colorando in giallo: DHT dht(DHTPIN, DHTTYPE); e con i relativi riferimenti sottostanti:
    Sensore_DHT22_NOOBS.ino:4:17: error: DHT.h: No such file or directory
    Sensore_DHT22_NOOBS:21: error: ‘DHT’ does not name a type
    Sensore_DHT22_NOOBS.ino: In function ‘void setup()’:
    Sensore_DHT22_NOOBS:35: error: ‘dht’ was not declared in this scope
    Sensore_DHT22_NOOBS.ino: In function ‘void loop()’:
    Sensore_DHT22_NOOBS:44: error: ‘dht’ was not declared in this scope

    Dalla precedente esperienza, sembra che si ripresenti lo stesso errore che non riconosce la directory? ma io sto usando il file salvato precedentemente e che andava bene!!! Forse devo togliere i collegamenti del display, anche se non ho proprio toccato il circuito sensore-arduino?!?! Misteri dell’elettronica (e della mia ignoranza al linguaggio C)!!!…

      Noobs
      on said:

      hai installato la libreria anche sul Mac? perchè non è insieme allo sketch il file, ma viene salvata nell’IDE! quindi se usi un’altro PC, devi assicurarti che abbia la libreria installata.

    Gaetano Persico
    on said:

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

    #include “DHT.h”

    #define DHTPIN 2 // what pin we’re connected to

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

    // Connect pin 1 (on the left) of the sensor to +5V
    // NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
    // to 3.3V instead of 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

    // Initialize DHT sensor for normal 16mhz Arduino
    DHT dht(DHTPIN, DHTTYPE);
    // NOTE: For working with a faster chip, like an Arduino Due or Teensy, you
    // might need to increase the threshold for cycle counts considered a 1 or 0.
    // You can do this by passing a 3rd parameter for this threshold. It’s a bit
    // of fiddling to find the right value, but in general the faster the CPU the
    // higher the value. The default for a 16mhz AVR is a value of 6. For an
    // Arduino Due that runs at 84mhz a value of 30 works.
    // Example to initialize DHT sensor for Arduino Due:
    //DHT dht(DHTPIN, DHTTYPE, 30);

    void setup() {
    Serial.begin(9600);
    Serial.println(“DHTxx test!”);

    dht.begin();
    }

    void loop() {
    // Wait a few seconds between measurements.
    delay(2000);

    // 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();
    // Read temperature as Celsius
    float t = dht.readTemperature();
    // Read temperature as Fahrenheit
    float f = dht.readTemperature(true);

    // Check if any reads failed and exit early (to try again).
    if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(“Failed to read from DHT sensor!”);
    return;
    }

    // Compute heat index
    // Must send in temp in Fahrenheit!
    float hi = dht.computeHeatIndex(f, h);
    float c_hi = (5/9)*(hi-32);

    Serial.print(“Humidity: “);
    Serial.print(h);
    Serial.print(” %\t”);
    Serial.print(“Temperature: “);
    Serial.print(t);
    Serial.print(” *C “);
    Serial.print(f);
    Serial.print(” *F\t”);
    Serial.print(“Heat index: “);
    Serial.print(c_hi);
    Serial.println(” *C”);
    }

      Gaetano Persico
      on said:

      Tutto da ridiscutere. Sono passato dal MacBook Air al pc con windows 7, ove avevo in memoria lo stesso sketch è funziona a meraviglia. Ora provo a cambiare le righe che mi hai suggerito e ti faccio sapere.

    Gaetano Persico
    on said:

    Ci sono cambiamenti, ma non come speravo! Humidity: 47.20 Temperature: 20.50 *C 68.90 *F e Heat index: 0.00 *C
    Questi sono i dati che ho cambiato:
    // Compute heat index
    // Must send in temp in Fahrenheit!
    float hi = dht.computeHeatIndex(f, h);
    float c_hi = (5/9)*(hi-32);

    Serial.print(“Humidity: “);
    Serial.print(h);
    Serial.print(” %\t”);
    Serial.print(“Temperature: “);
    Serial.print(t);
    Serial.print(” *C “);
    Serial.print(f);
    Serial.print(” *F\t”);
    Serial.print(“Heat index: “);
    Serial.print(c_hi);
    Serial.println(” *C”);

      Noobs
      on said:

      scusami, l’errore è mio!

      piccola lezione di programmazione:
      una divisione tra interi, da come risultato un intero (int), anche se lo salvi in un tipo irrazionale (float).
      5/9 fa 0.56, ma essendo il risultato di una divisione tra interi, la parte decimale viene persa e il risultato diventa 0.
      per evitare questo problema basta scrivere (5.00/9)*(hi-32).
      adesso la prima divisione è tra un intero e uno razionale, quindi il risultato sarà razionale.

        Gaetano Persico
        on said:

        Grazie della pazienza. Ho provato a cambiare, questa è la stringa modificata float c_hi = (5,00/9)*(hi-32); (dopo il 5 è una virgola, lo preciso perchè avevo messo il punto e non dava cambiamenti), ma non è cambiato niente; i dati sono sempre gli stessi: Humidity: 48.90, temp.:20.00 *C, 68.00*F, Heat index: 0.00 *C. Anche il codice CAPTCHA mi dà sempre 3 o 4 errori, poi, tra ripetizione e cambiamenti, finalmente va…

    domenico
    on said:

    ho scaricato da (qui) sonda dht 22
    ho estratto i file e le ho messe in una cartella di cui all’interno si trovano dht .h e ccp
    le ho messe sotto lalibrary di arduino
    il problema è che mi da sempre questo errore:
    sketch_my17a.ino:3:17: fatal error:dht.h: No such file or directory.

    ho fatto copia e incolla della tua pagina sensore di temperatura
    ti ringrazio per l’aiuto

    come mai le stringhe di errore di compilazione sono tutte in inglese.grazie per la risposta

    nella library mi fa vedere dht .all’interno ci sono tutti ifile
    quello che carico su arduino è demo ,per tanto:sul serial monitor mi da questi merrori :

    Requesing data…polled to quick
    requesting data …no present
    requesting data…BUS Hung (come posso ovviare questo problema .visto che sono alle prime armi.
    grazie ancora

      Prova a controllare se il sensore è collegato correttamente, i messaggi dicono praticamente che non è collegato.
      Poi nel mio esempio su questa pagina, il sensore è collegato al pin due, mentre nel esempio che usi tu, lo devi collegare al pin 7.

    ho collegato al pin 7 ed ho caricato .però continua darmi un solo errore Requesting data ….ACK time out.ti ringrazio per l’aiuto

      ti volevo ricordare che ho il sensore di umidità quello con due forcelle da mettere nel terreno.non so se può servire come aiuto.ciao

        ciao,

        stai usando il dht22? è quello bianco
        dht22

        se invece stai usando il dht11, quello azzurro

        dht11

        nel mio esempio, devi sostituire la riga

        DHT dht(2,DHT22);

        con

        DHT dht(2,DHT11);

        poi, potresti mettermi il link della libreria che usi? perché in quella che uso io, non c’è il tuo esempio.

    non è uguale .mi hanno venduto dht 2 però non penso che sia lui (comq.sono andato a vedere le sonde sui siti ed ho visto qual’è e è quello che ha la sonda separata modello con due forcelle ed un trimmer di regolazione.probabilmente per questo non va .

    ti faccio una domanda se mi puoi aiutare .come posso misurare l’umidità di un pavimento ,per poi mettere il legno .sempre naturalmente con arduino uno.ti ringrazio

      scusami non lo inserito prima ( dovrei leggere l’umidità con un crystal liquid due righe da sedici caratteri.grazie ancora

        qui c’è la guida per stampare i valori letti dal sensore usato in questo esempio su un LCD 16×2.
        Per quanto riguarda il fatto di metterci il legno sopra, devi riuscire tu a far uscire i piedini.
        Poi se a te interessa solo l’umidità, esistono sensori più piccoli di questo.

    si a me serve solo umidità. dove potri trovarli quelli più picooli. cmq ti ringrazio molto gentile

      I sensori della serie DHTxxx sono quelli più usati, perché misurano sia umidità che temperatura.
      Se ti serve solo l’umidità puoi usare un sensore lineare come questo per esempio.
      ti basterà leggere su un pin analogico la tensione in uscita dal sensore, e fare un semplice proporzione, in base a quello che c’è scritto sul datasheet.
      se per esempio sul datasheet c’è scritto che 0V corrisponde a 0% di umidità percentuale, e 4V a 100%, mappi il valore letto dalla porta analogica in quell’intervallo.
      se invece prendi un sensore non lineare, nel datasheet trovi comunque la formula per calcolare il valore di umidità.

    per adesso .Gentilissimo

    con arduino uno ,posso usuffruire di tutte le uscite e di tutte le entrate contemporaneamente?
    inviando tutti gli sketch naturalmente .oppure non si può.penso che sia una domanda da profano.visto che sono alle prime armi.

      Non ho capito cosa intendi con “inviando tutti gli sketch”.
      Comunque in teoria no, ma in pratica si.
      I vari pin vengono letti uno dopo l’altro, ma alle velocità a cui avviene, dall’esterno è come se venissero letti contemporaneamente.

    non mi sono spiegato bene ,volevo sapere riguardo i pin (per tutti i pin hanno 40 ma,oppure 40 ma ogni uno. ti ringrazio.

    Mettiamo il caso di poter usare tutti i pin contemporaneamente . cke assorbimenti di corrente avremmo . perchè su arduino uno rev 3 mi sembra di aver letto che può erogare al massimo 40 mA.questi 40 ma sono in totale complessivo dei pin oppure per ogni uno.
    non so se mi sono spiegato bene.ripeto sono alle prime armi.grazie

      In anzi tutto bisogna vedere se devi leggere sensori o controllare qualcosa da i pin di Arduino. se devi leggere dei sensori, e li alimenti da Arduino stesso, puoi usarli tutti contemporaneamente. Gli ingressi di Arduino poi sono ad alta impedenza, quindi necessitano di poca corrente.
      Se invece devi far uscire corrente dai pin, il massimo è 40mA ad ogni pin, per un massimo di 150mA. Quindi in pratica puoi avere al massimo 3 pin che erogano la massima corrente contemporaneamente.
      Questo però non è un problema, perchè raramente c’è bisogno di così tanta corrente direttamente da un pin, anzi è sconsigliatissimo.
      In questi casi si usano dei transistor.

    visto che in pratica avrei al massimo 3 pin che erogano la massima corrente.contemporeaneamente. vuol dire che sia per i pin digitali, che quelli analogici.

    ti ringrazio per la pazienza

    domenico
    on said:

    Ti ringrazio per la pazienza.

    Gabriele
    on said:

    Ciao!
    complimenti per i tutorial, chiaro e conciso! sono riuscito a fare quello con il sensore alla prima e senza problemi.
    Ora volevo aggiungere il display..potresti gentilmente linkarmi dove poter comprare il display e il potenziometro? magari su amazon, ebay o qualsiasi altro sito dove non costi troppo 🙂
    Grazie in anticipo!

    Michele
    on said:

    Ciao
    Io ho un problema..
    Sto applicando il dht22 per una serra automatizzata dove si chiude il telo quando cè freddo e viceversa
    Però siccome il dht22 legge i dati ogni due secondi.. ogni due secondi mi blocca il motore passo passo
    Come posso fare?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

*