Î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(); }
Senzorul afiseaza pe LSD procentajul de dioxid de carbon din incapere. Cand acest procent este mai mic de 15% pe ecran se va afisa “Bun”. Cand procentajul este mai mare ca 20% buzzerul va incepe sa functioneze, ledul se va aprinde iar pe ecran va fi afisat mesajul “Rau”. Cand procentajul este cuprins intre 15% si 20%, pe ecran este afisat messajul “Danger” pana cand procentajul va scadea sub 20%. (Becul si buzzerul vor functiona fara oprire pana cand procentajul va scadea). Pentru a declansa etapa de “Danger”, spre senzor am suflat fum (CO2).