#2 Projekt Arduino – zapalanie i gaszenie lampki na podstawie danych z czujnika światła

By | 2 maja 2016

Drugim dużo praktyczniejszym projektem będzie wykorzystanie czujnika światła, do sterowania przekaźnikiem, a co za tym idzie stworzenie mechanizmu zapalania lampki o zmroku. W moim projekcie jest mowa o lampce, ale w zasadzie możemy sterować przepływem prądu do innych urządzeń, które zaczynają działać natychmiast po podaniu na nie zasilania. Tak więc jeżeli masz taką potrzebę, to możesz na podstawie tego projektu zrobić np. system zasuwania rolet okiennych, jeżeli masz rolety, które są sterowane elektrycznie. Artykuł ma pokazać możliwość wykorzystania przekaźnika i czujnika światła, a twoja inwencja może wybiegać dużo dalej (zachęcam do dzielenia się pomysłami w komentarzu).

Co potrzebujemy?

Schemat podłączenia modułów do Arduino

Schemat podłączenia Arduino uno czujnik swiatla przekaznik

Program odczytujący wartości oświetlenia

[csharp]int PinAnalogSignal = A0; // (1)

void setup() {
Serial.begin(9600); // (2)
}

void loop() {
int sensorValue = analogRead(PinAnalogSignal); // (3)

Serial.println(sensorValue); // (4)

delay(1000);
}[/csharp]

Wyjaśnienie działania kodu

(1) zmienna PinAnalogSignal przechochowuje teraz adres do wejścia Analogowego na płytce Arduino do którego podłączony jest czujnik oświetlenia;

(2) w tej linijce tworzę możliwość komunikacji Arduino z komputerem poprzez kabel USB;

(3) za pomocą funkcji analogRead możemy zczytać wartość z sensora światła (może to być wartość od 0 do 1023);

(4) funkcja println wysyła wartość, która została odczytana w linijce (3) do komputera. Na podstawie tych danych określimy kiedy lampa ma się zapalać a kiedy gasić.

Dodatkowo w ostatniej linii dodałem delay, który spowalnia działanie programu i dzięki temu liczba wyników pokazujących się na ekranie w jednej chwili nie przytłacza i bez problemu można wybrać odpowiednie wartości.

Odczytywanie wartości oświetlenia na komputerze

Po kompilacji i pomyślnym wgraniu sketcha na Arduino, można uruchomić monitor szeregowy, który będzie wyświetlał informacje przesłane z Arduino.

monitor szeregowywartości oświetlenia

Gdy już widzimy wyniki w czasie rzeczywistym, to możemy przystąpić do określania wartości przy której chcielibyśmy żeby żarówka zapalała się i gasła. W moim przypadku wartość oświetlenia przy której chciałbym żeby zapalała się to 300 wzwyż, a gasła poniżej wartości 200.

Kod sterujący lampą na podstawie danych z czujnika oświetlenia

[csharp]int PinAnalogSignal = A0;
int relayPin = 2;

void setup() {
  Serial.begin(9600);
  pinMode(relayPin, OUTPUT);
}

void loop() {
  int sensorValue = analogRead(PinAnalogSignal);

  if(sensorValue > 300) // (1)
  {
    digitalWrite(relayPin, LOW); // (2)
  }
  else if (sensorValue < 200)
  {
    digitalWrite(relayPin, HIGH);
  }

  delay(1000);
}[/csharp]

Wyjaśnienie działania kodu

(1) gdy wartość oświetlenia będzie większa od 300 to żarówka zostanie zgaszona, a w drugim ifie sprawdzamy czy wartość jest mniejsza niż 200 i zapalamy żarówkę;

(2) gdy warunek się spełni, to port do którego jest podłączony przekaźnik będzie miał wartość low, a to w przypadku przekaźnika oznacza, że przekaźnik przepuści prąd i dzięki temu żarówka zapali się.

UWAGA! Wartości pomiędzy 200 a 300 stanowią bufor pomiędzy stanem zapalenia a gaszenia żarówki, bo wartości na czujniku światła cały czas delikatnie drgają i przez to mogłyby doprowadzić do częstego gaszenia i zapalania żarówki, a co za tym idzie do jej przepalenia.

Efekt

Zapalanie lampki gdy oświetlenie w pokoju zostanie zgaszone.

One thought on “#2 Projekt Arduino – zapalanie i gaszenie lampki na podstawie danych z czujnika światła

  1. Pingback: Co to jest Arduino i jak rozpocząć przygodę z mikrokontrolerami? - Poradnik informatyka

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *