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(); } } |
Jednak zapalanie diody przy pomocy pilota to nie wszystko możesz na przykład podłączyć cztery diody i zapalać je na przemian. Kod jest troszkę trudniejszy jednak jeżeli wszystko sobie zaplanujesz poradzisz sobie, ja Cię tylko teraz troszkę naprowadzę.
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(); } } |
Dzięki protokołowi IR możemy praktycznie wszystkim, ogranicza nas jedynie wyobraźnia. Mój pierwszy prototyp robota był sterowany poprzez protokół IR. Jednak pamiętaj że podczerwień jest bardzo niestabilna, oraz ma mały zasięg co wyklucza go z wielu projektów.
[su_button url=”https://roboblog.eu/2016/02/10/arduino-poradnik-5/” size=”7″]Poprzednia część kursu[/su_button]
[su_button url=”https://roboblog.eu/2016/03/12/nrf24l01/” size=”7″]Następna część kursu[/su_button]