W dzisiejszym poradniku poznasz zasadę działania protokołu IR oraz nauczysz się go wykorzystywać w swoich projektach.
IR jest to skrót od infrared czyli promieniowania podczerwonego . Prawdopodobnie korzystasz z tego protokołu na co dzień jednak może o tym nie wiesz. Prawie wszystkie piloty od telewizorów go wykorzystują.
Zaczynamy!
Pierwszym krokiem jaki musimy zrobić jest swoiste odkodowanie przycisków naszego pilota.
Podłączamy odbiornik IR
w ten sposób
Aby odkodować przyciski naszego pilota musimy użyć biblioteki IRremote. Możesz ją pobrać stąd link do pliku. Po pobraniu wgrywamy ją do folderu Arduino.
Zadaniem programu jest odczytywanie danych z odbiornika podpiętego pod 5 pin Arduino oraz wyświetlanie ich w monitorze portu szeregowego.
Jeżeli wgraliśmy kod do Arduino uruchomiliśmy monitor portu szeregowego możemy przejść do odbierania danych.
Gdy klikniemy przycisk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <IRremote.h> #define irPin 8 IRrecv irrecv(irPin); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); delay(250); irrecv.resume(); } } |
Wszystkie dane pojawią się w szeregowym monitorze
Gdy już mamy odkodowane przyciski możemy napisać program, który umożliwi nam sterowanie diodą poprzez ich naciskanie.
W miejsce <> musisz wpisać dane z portu szeregowego. Działanie programu powinieneś rozumieć bez tłumaczenia. Program ma zapalać diodę i gasić poprzez naciskanie przycisku zdefiniowanego w kodzie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <IRremote.h> #define irPin 8 IRrecv irrecv(irPin); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode(11, OUTPUT); } void loop() { if (irrecv.decode(&results)) { switch (results.value) { case <tutaj wpisz kod przycisku który ma zapalać diode>; digitalWrite(9, HIGH); break; switch (results.value) { case <tutaj wpisz kod przycisku który ma gasić diode>; digitalWrite(9, LOW); break; } irrecv.resume(); } } |
Połączenie jest prawie takie samo jak przy jednej diodzie. jednak podłączamy diodę do pinu 10,11 itd.
Kod wygląda tak samo jednak w funkcji loop kopiujesz polecenia switch.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <IRremote.h> #define irPin 8 IRrecv irrecv(irPin); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode(11, OUTPUT); } void loop() { if (irrecv.decode(&results)) { switch (results.value) { case <tutaj wpisz kod przycisku który ma zapalać diode>; digitalWrite(9, HIGH); break; switch (results.value) { case <tutaj wpisz kod przycisku który ma gasić diode>; digitalWrite(9, LOW); break; switch (results.value) { case <tutaj wpisz kod przycisku który ma zapalać drugą diode>; digitalWrite(10, HIGH); break; switch (results.value) { case <tutaj wpisz kod przycisku który ma gasić drugą diode>; digitalWrite(10, LOW); break; } irrecv.resume(); } } |
Poprzednia część kursu Następna część kursu