This is an old revision of the document!
Acest proiect utilizează un senzor de CO2 pentru a măsura nivelul de dioxid de carbon dintr-un mediu și afișează aceste valori pe un ecran LCD de 2 linii și 16 caractere. De asemenea, proiectul include și un semnal acustic și o lumină LED care se declanșează când nivelul de CO2 depășește un anumit prag. De asemenea, sunt create două caractere personalizate, o față zâmbitoare și o față tristă, pentru a indica starea mediului. Ecranul LCD funcționează cu ajutorul protocolului I2C.
În ceea ce privește utilitatea proiectului, acesta poate fi folosit în diferite medii, cum ar fi locuințe, birouri, școli sau alte spații închise unde calitatea aerului poate fi o problemă. Nivelurile ridicate de CO2 pot indica faptul că spațiul nu este suficient de ventilat, ceea ce poate avea un impact negativ asupra sănătății și confortului. Prin monitorizarea nivelului de CO2 și indicarea acestuia utilizatorului, proiectul poate ajuta la îmbunătățirea calității aerului și la crearea unui mediu mai sănătos.
În plus, acest proiect poate fi un instrument educativ pentru cei interesați de programare și de construirea de dispozitive electronice. Este o modalitate bună de a învăța cum să utilizezi senzori, biblioteci și ecrane LCD, precum și cum să interacționezi cu acestea folosind un microcontroller Arduino. În general, proiectul este util pentru cei care doresc să-și îmbunătățească calitatea aerului dintr-o cameră sau să învețe mai multe despre programare și electronice.
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); const int buzzer = 13; const int CO2A0 = A0; const int led = 12; int CO2value = 0; // Definim matricile pentru caractere personalizate byte smiley[8] = { 0b00000, 0b01010, 0b01010, 0b00000, 0b00000, 0b10001, 0b01110, 0b00000 }; byte sad[8] = { 0b00000, 0b01010, 0b01010, 0b00000, 0b00000, 0b01110, 0b10001, 0b00000 }; void setup() { lcd.init(); // initiate the lcd lcd.backlight(); Serial.begin(9600); pinMode(buzzer, OUTPUT); pinMode(led, OUTPUT); // Cream caracterele personalizate lcd.createChar(1, smiley); lcd.createChar(2, sad); lcd.setCursor(0,0); lcd.print("Initializing... "); // initializare cu mesajul "Initializing... " lcd.setCursor(0,1); lcd.print(" "); // curatare rand 2 for(int i=1; i<=100; i++){ // afișează procentajul de la 1 la 100 lcd.setCursor(12, 1); lcd.print(i); lcd.print("% "); delay(150); } delay(2000); } void loop() { int analogSensor = analogRead(CO2A0); CO2value = map(analogSensor, 0, 1023, 0, 100); //CO2 module sensitivity lcd.setCursor(0,0); lcd.print("CO2 Level:"); lcd.setCursor(11,0); lcd.print(CO2value); lcd.print("% "); // Checks if it has reached the threshold value if (CO2value >= 20) { //CO2 percentage alert lcd.setCursor(0,1); lcd.print("DANGER!"); tone(buzzer, 2000, 10000); digitalWrite(led, HIGH); lcd.print(" "); // adaugam un spatiu liber lcd.write(2); // afisam fata trista } else if (CO2value >= 15 && CO2value < 20 ) { lcd.setCursor(0,1); lcd.print("BAD!"); noTone(buzzer); digitalWrite(led, LOW); lcd.print(" "); // adaugam un spatiu liber lcd.write(2); // afisam fata trista } else { lcd.setCursor(0,1); lcd.print("NORMAL"); noTone(buzzer); digitalWrite(led, LOW); lcd.print(" "); // adaugam un spatiu liber lcd.write(1); // afisam fata zambitoare } delay(500); lcd.clear(); }
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.