De la Teorie la Practica: Conectarea senzorului DHT11 la un Display LED 4x7 Segmente pentru monitorizarea temperaturii si umiditatii

De la Teorie la Practica: Conectarea senzorului DHT11 la un Display LED 4x7 Segmente pentru monitorizarea temperaturii si umiditatii
Salutare, drag pasionat de electronica! Sunt Oana de la Bitmi.ro, am pregatit pentru tine un proiect simplu si captivant, ideal chiar daca esti la inceput de drum in acest domeniu. Este conceput special pentru cei care vor sa exploreze lumea Arduino si sa experimenteze ceva nou. Sper sa iti ofere inspiratia si increderea de care ai nevoie pentru a incepe propriile tale proiecte!


Inainte de a incepe, lasa-ma sa iti explic cateva detalii despre acest proiect. Am construit un sistem de monitorizare a temperaturii si umiditatii, care afiseaza aceste valori pe un display LED 4x7 segmente de 0.56", catod comun. Acest tip de display este perfect pentru afisarea clara si usor de citit a valorilor numerice si a caracterelor simple.

Ce face acest display special?

Display-ul LED 4x7 segmente este ideal pentru proiectele care necesita afisarea datelor intr-un format vizibil si ordonat. Dimensiunea de 0.56" este potrivita pentru a vizualiza informatiile chiar si de la o distanta mai mare, iar tehnologia de catod comun faciliteaza conexiunile in proiecte cu mai multi segmenti LED. Fiecare dintre cele patru cifre poate afisa numere de la 0 la 9, iar prin ajustarea adecvata a conexiunilor, pot fi afisate si unele litere simple.

Acest display va fi folosit pentru a afisa valorile masurate de senzorul DHT11, astfel incat sa poti urmari in timp real temperaturile si umiditatea din mediul inconjurator.

Senzorul DHT11 este capabil sa masoare temperaturi de la 0°C la 50°C, cu o precizie de ±2.0°C, si umiditatea in intervalul 20% - 90%, cu o precizie de ±5%. Este important de stiut ca DHT11 are o rata de esantionare de 1Hz, ceea ce inseamna ca trebuie sa astepti cel putin o secunda intre fiecare citire a senzorului pentru a obtine valori corecte.






 


 

Despre Display LED, 4*7 segmente, 0.56", catod comun

Pinii A, B, C, D, E, F și G de la un display LED 4x7 segmente cu anod comun corespund segmentilor individuali ai fiecarei cifre afisate. Fiecare dintre acesti pini controleaza un segment specific al cifrei pentru a crea numere sau litere atunci cand segmentele respective sunt activate. Pinii D1, D2, D3 si D4 corespund celor 4 cifre individuale de pe display. 




Componente necesare

In continuare, pentru a putea construi acest tip de proiect vei avea nevoie de: 


Scheme de conectare 


 

Pentru modulul senzor de temperatura si umiditate DHT11 conecteaza pinul S la portul digital 9 Arduino, pinul din mijloc la pinul de 5V al placii de dezvoltare Arduino si ultimul pin la pinul GND al placii de dezvoltare Arduino. 

Exemplu cod

In acest proiect, vei folosi biblioteca DHT pentru senzorul de temperatura si umiditate DHT11, pe care o poti descarca de AICI.

Pentru a adauga biblioteca in mediul de dezvoltare Arduino IDE, deschide programul si mergi la meniul Sketch. Acolo, selecteaza Include Library, apoi alege Add .ZIP Library. Gaseste fisierul .zip al bibliotecii DHT si selecteaza-l. Odata ce ai deschis fisierul .zip, asteapta cateva momente, iar cand procesul de instalare se finalizeaza cu succes, vei vedea un mesaj in partea de jos a ferestrei care confirma ca biblioteca a fost adaugata.

Dupa ce ai realizat circuitul si ai descarcat cu succes biblioteca DHT, e timpul sa introduci codul furnizat mai jos! Conecteaza placa de dezvoltare compatibila Arduino Uno la computer folosind portul USB. Apoi, mergi la meniul Tools si selecteaza tipul de placa si portul serial pe care il folosesti (optiunile Board si Port).

Pentru a incarca codul pe placa, apasa butonul Upload Upload (simbolul cu sageata spre dreapta). In partea de jos a ferestrei, vei putea urmari mesajele de stare: Compiling Sketch, Uploading si Done. Odata ce incarcarea s-a finalizat cu succes, placa Arduino va incepe sa ruleze codul pe care l-ai incarcat.

 

#include "DHT.h"

 

// Definire pinii senzorului DHT11

#define DHTPIN 9

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

 

// Definire pinii pentru segmentele display-ului LED

int a = 2;  // Segmentul A

int b = 3;  // Segmentul B

int c = 4;  // Segmentul C

int d = 5;  // Segmentul D

int e = 6;  // Segmentul E

int f = 7;  // Segmentul F

int g = 8;  // Segmentul G

 

// Pinii pentru digiti (D1, D2, D3, D4)

int digitPins[] = {13, 12, 11, 10};

 

void setup() {

  // Inițializează pinii pentru segmente și digiti

  pinMode(a, OUTPUT);

  pinMode(b, OUTPUT);

  pinMode(c, OUTPUT);

  pinMode(d, OUTPUT);

  pinMode(e, OUTPUT);

  pinMode(f, OUTPUT);

  pinMode(g, OUTPUT);

 

  for (int i = 0; i < 4; i++) {

    pinMode(digitPins[i], OUTPUT);

  }

 

  // Inițializează senzorul DHT

  dht.begin();

}

 

// Funcție simplă pentru a afișa o cifră pe 7 segmente

void displayDigit(int digit) {

  switch (digit) {

    case 0: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); break;

    case 1: digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); break;

    case 2: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, HIGH); break;

    case 3: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, HIGH); break;

    case 4: digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break;

    case 5: digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break;

    case 6: digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break;

    case 7: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); break;

    case 8: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break;

    case 9: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break;

  }

}

 

void loop() {

  // Citește temperatura și umiditatea

  float temperature = dht.readTemperature();

  float humidity = dht.readHumidity();

 

  // Verifică dacă citirile sunt valide

  if (isnan(temperature) || isnan(humidity)) {

    // Dacă este o eroare, stinge display-ul

    for (int i = 0; i < 4; i++) {

      digitalWrite(digitPins[i], HIGH);  // Oprește toți digiti

    }

    return;

  }

 

  // Extrage cifrele pentru temperatura și umiditatea

  int tempInt = (int)temperature;

  int humInt = (int)humidity;

 

  int digits[] = {tempInt / 10, tempInt % 10, humInt / 10, humInt % 10};  // Extrage fiecare cifră

 

  // Afișează cifrele timp de 5 secunde

  for (int t = 0; t < 500; t++) {

    for (int i = 0; i < 4; i++) {

      // Dezactivează toți digiti

      for (int j = 0; j < 4; j++) {

        digitalWrite(digitPins[j], HIGH);  // Oprește digiti

      }

 

      // Afișează cifra corespunzătoare

      displayDigit(digits[i]);

 

      // Activează digitul curent

      digitalWrite(digitPins[i], LOW);

      delay(5);  // Pauză scurtă pentru multiplexare

    }

  }

 

  // Oprește display-ul pentru 1 secundă

  for (int i = 0; i < 4; i++) {

    digitalWrite(digitPins[i], HIGH);  // Oprește toți digiti

  }

  delay(1000);  // Stinge display-ul pentru 1 secundă

}

  

Daca aveti intrebari sau nelamuriri, nu ezitati sa ma contactati la adresa de e-mail electronica@bitmi.ro si voi raspunde cu drag. De asemenea, astept cu nerabdare sa primesc poze sau videoclipuri cu proiectele voastre la aceeasi adresa.
Sper ca acest proiect v-a inspirat si ca v-ati bucurat de procesul de construire! Toate componentele utilizate pot fi gasite si achizitionate de mai jos.
👇


 

Compara produse

Trebuie sa mai adaugi cel putin un produs pentru a compara produse.

A fost adaugat la favorite!

A fost sters din favorite!