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 some 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, 4x7 segmente, 0.56", catod comun
Pinii A, B, C, D, E, F si 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:
- 1 x placa de dezvoltare compatibila Arduino Uno R3
- 1 x modul senzor de temperatura si umiditate DHT11
- 1 x Display LED, 4x7 segmente, 0.56", catod comun
- 18 x fire Dupont tata - tata
- 1 x Breadboard 830 puncte MB-102
- 4 x rezistori de 220Ω
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 finaleaza 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 (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"\n\n// Definire pinii senzorului DHT11\n#define DHTPIN 9\n#define DHTTYPE DHT11\nDHT dht(DHTPIN, DHTTYPE);\n\n// Definire pinii pentru segmentele display-ului LED\nint a = 2; // Segmentul A\nint b = 3; // Segmentul B\nint c = 4; // Segmentul C\nint d = 5; // Segmentul D\nint e = 6; // Segmentul E\nint f = 7; // Segmentul F\nint g = 8; // Segmentul G\n\n// Pinii pentru digiti (D1, D2, D3, D4)\nint digitPins[] = {13, 12, 11, 10};\n\nvoid setup() {\n // Initializeaza pinii pentru segmente si digiti\n pinMode(a, OUTPUT);\n pinMode(b, OUTPUT);\n pinMode(c, OUTPUT);\n pinMode(d, OUTPUT);\n pinMode(e, OUTPUT);\n pinMode(f, OUTPUT);\n pinMode(g, OUTPUT);\n\n for (int i = 0; i < 4; i++) {\n pinMode(digitPins[i], OUTPUT);\n }\n\n // Initializeaza senzorul DHT\n dht.begin();\n}\n\n// Functie simpla pentru a afisa o cifra pe 7 segmente\nvoid displayDigit(int digit) {\n switch (digit) {\n case 0:\n digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH);\n digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH);\n digitalWrite(g, LOW);\n break;\n case 1:\n digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH);\n digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW);\n digitalWrite(g, LOW);\n break;\n case 2:\n digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, LOW);\n digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW);\n digitalWrite(g, HIGH);\n break;\n case 3:\n digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH);\n digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, LOW);\n digitalWrite(g, HIGH);\n break;\n case 4:\n digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH);\n digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH);\n digitalWrite(g, HIGH);\n break;\n case 5:\n digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH);\n digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH);\n digitalWrite(g, HIGH);\n break;\n case 6:\n digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH);\n digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH);\n digitalWrite(g, HIGH);\n break;\n case 7:\n digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH);\n digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW);\n digitalWrite(g, LOW);\n break;\n case 8:\n digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH);\n digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH);\n digitalWrite(g, HIGH);\n break;\n case 9:\n digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH);\n digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH);\n digitalWrite(g, HIGH);\n break;\n }\n}\n\nvoid loop() {\n // Citeste temperatura si umiditatea\n float temperature = dht.readTemperature();\n float humidity = dht.readHumidity();\n\n // Verifica daca citirile sunt valide\n if (isnan(temperature) || isnan(humidity)) {\n // Daca este o eroare, stinge display-ul\n for (int i = 0; i < 4; i++) {\n digitalWrite(digitPins[i], HIGH); // Opreste toti digiti\n }\n return;\n }\n\n // Extrage cifrele pentru temperatura si umiditatea\n int tempInt = (int)temperature;\n int humInt = (int)humidity;\n\n int digits[] = {tempInt / 10, tempInt % 10, humInt / 10, humInt % 10}; // Extrage fiecare cifra\n\n // Afiseaza cifrele timp de 5 secunde\n for (int t = 0; t < 500; t++) {\n for (int i = 0; i < 4; i++) {\n // Dezactiveaza toti digiti\n for (int j = 0; j < 4; j++) {\n digitalWrite(digitPins[j], HIGH); // Opreste digiti\n }\n\n // Afiseaza cifra corespunzatoare\n displayDigit(digits[i]);\n\n // Activeaza digitul curent\n digitalWrite(digitPins[i], LOW);\n delay(5); // Pauza scurta pentru multiplexare\n }\n }\n\n // Opreste display-ul pentru 1 secunda\n for (int i = 0; i < 4; i++) {\n digitalWrite(digitPins[i], HIGH); // Opreste toti digiti\n }\n delay(1000); // Stinge display-ul pentru 1 secunda\n}
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!