[PROJEKT] Czujnik jakości powietrza – Air quality sensor v1.3 oraz KAmduino UNO
Teraz należy przerobić program tak, aby w przypadku wykrycia dużego stężenia niebezpiecznego gazu w powietrzu świeciła czerwona dioda LED. Zmodyfikowany program został umieszczony poniżej (pliki projektowe znajdują się również w sekcji do pobrania na koniec artykułu).
/*
* AirQuality Demo V1.0.
* connect to A0 to start testing. it will needs about 20s to start
* By: http://www.seeedstudio.com
*
* Modyfikacje: Patryk Mądry
* Mikrokontroler 2017 r.
*/
#include"AirQuality.h"
#include"Arduino.h"
AirQuality airqualitysensor;
int current_quality =-1;
void setup()
{
Serial.begin(9600);
airqualitysensor.init(14);
pinMode(2, OUTPUT); // Dioda
}
void loop()
{
current_quality=airqualitysensor.slope();
if (current_quality >= 0)// if a valid data returned.
{
if (current_quality==0)
{
Serial.println("High pollution! Force signal active");
digitalWrite(2, HIGH); // Ustawienie pinu 2 na stan wysoki - zaświecenie diody LED
}
else if (current_quality==1)
{
Serial.println("High pollution!");
digitalWrite(2, HIGH); // Ustawienie pinu 2 na stan wysoki - zaświecenie diody LED
}
else if (current_quality==2)
{
Serial.println("Low pollution!");
digitalWrite(2, LOW); // Ustawienie pinu 2 na stan niski - zgaszenie diody LED
}
else if (current_quality ==3)
{
Serial.println("Fresh air");
digitalWrite(2, LOW); // Ustawienie pinu 2 na stan niski - zgaszenie diody LED
}
}
}
ISR(TIMER1_OVF_vect)
{
if(airqualitysensor.counter==61)//set 2 seconds as a detected duty
{
airqualitysensor.last_vol=airqualitysensor.first_vol;
airqualitysensor.first_vol=analogRead(A0);
airqualitysensor.counter=0;
airqualitysensor.timer_index=1;
PORTB=PORTB^0x20;
}
else
{
airqualitysensor.counter++;
}
}
W pętli głównej programu do zmiennej current_quality jest przypisywana wartość od 0 do 3, gdzie wartość równa 0 lub 1 informują o dużej ilości cząsteczek w powietrzu, wartość 2 o niskiej ilości cząsteczek gazu w powietrzu, a 3 bardzo małej ilości lub ich braku). Następnie sprawdzana jest wartość tej zmiennej i wyświetlona wartość z czujnika oraz komunikat o ilości cząsteczek w wokół czujnika.
void loop()
{
current_quality=airqualitysensor.slope();
if (current_quality >= 0)// if a valid data returned.
{
if (current_quality==0)
{
Serial.println("High pollution! Force signal active");
digitalWrite(2, HIGH); // Ustawienie pinu 2 na stan wysoki - zaświecenie diody LED
}
else if (current_quality==1)
{
Serial.println("High pollution!");
digitalWrite(2, HIGH); // Ustawienie pinu 2 na stan wysoki - zaświecenie diody LED
}
Gdy zmienna current_quality jest równa 0 lub 1, stężenie gazu w powietrzu jest wysokie i musi zapalić się dioda ostrzegające przed tym zjawiskiem. Aby program funkcjonował w ten sposób należy dodać kod, który spowoduje zaświecenie naszej czerwonej diody LED w warunku dla wartości 0 i 1. Kod do realizacji tego zadania wygląda następująco:
digitalWrite(2, HIGH); // Ustawienie pinu 2 na stan wysoki - zaświecenie diody LED
Gdy czujnik wykrył niewielkie stężenie cząsteczek lub nie wykrył ich wcale, zmienna current_quality przyjmuje wartości 2 lub 3. Wtedy dioda LED musi być zgaszona. Należy więc dodać linijkę kodu, która spowoduje ustawienie stanu niskiego na pinie 2 w warunku dla wartości 2 oraz 3:
digitalWrite(2, LOW); // Ustawienie pinu 2 na stan niski - zgaszenie diody LED
Diodę można zastąpić np. buzzerem, który będzie informować o wysokim stężeniu niebezpiecznego gazu w postaci dźwiękowej.
Działanie programu zostało zaprezentowane na poniższym wideo:

Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć
Fotorezystor, czyli czujnik światła dwojakiego działania. Przykład innowacji w automatyce i elektronice możliwej dzięki technologii fotooporników 



