Dekodér infračerveného ovládača
Zo stránky SensorWiki
Záverečný projekt predmetu MIPS / LS2023 - Ivan Jagoš
Zadanie
Infračervené ovládanie - k danému ovládaču identifikovat kódy jednotlivých tlačidiel a demonštrovat správnu funkciu. V tomto zadaní bolo povolené využitie knižnice <Infrared.h>
Riadenie Bezdrôtový infračervený ovládač s prijímačom
Literatúra:
Analýza a opis riešenia
Najprv som zapojil zariadenie podľa schemi zapojenia.
Importujeme knižnicu IRremote, ktorá nám umožní komunikovať s infrasenzorom a čítať signály. Definujeme pin pre infrasenzor a vytvoríme objekt pre prijímanie signálov. V metóde setup() inicializujeme sériovú komunikáciu a povolíme prijímanie signálov z infrasenzora. V metóde loop() kontrolujeme, či sme obdržali signál zo senzora. Ak sme obdržali signál, znamená to, že sme stlačili tlačidlo. Zapneme LED diódu tým, že nastavíme výstupný pin na HIGH. Dióda zostane zapnutá, kým tlačidlo držíme stlačené. Keď pustíme tlačidlo, metóda loop() sa opäť vykoná a zistí, že sme uvoľnili tlačidlo. Vypneme LED diódu tým, že nastavíme výstupný pin na LOW. Program sa opakuje od kroku 4, čakajúc na ďalší stlačený signál.
Algoritmus a program
Algoritmus programu je....
// importování knihovny
#include <IRremote.h>
// definování pinu přijímače
int const IRpin = 2;
IRrecv irrecv(IRpin);
// uložení signálu do proměné "results"
decode_results results;
void setup()
{
// zapnutí komunikace
Serial.begin(9600);
// start přijímače
irrecv.enableIRIn();
}
void loop()
{
// pokud obdržíš signál, tak jeho hodnotu vypiš v DEC soustavě (desítková)
if (irrecv.decode(&results))
{
Serial.println(results.value, DEC);
// obdrž další hodnotu
irrecv.resume();
// počkej 1s
delay(1000);
}
}
#include <IRremote.h>
int ledPin = 3;
bool ledState = false;
bool buttonPressed = false;
void interruptFunction()
{
buttonPressed = true;
}
void setup()
{
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
attachInterrupt(digitalPinToInterrupt(2), interruptFunction, FALLING);
}
void loop()
{
if (buttonPressed)
{
if (ledState)
{
digitalWrite(ledPin, LOW);
ledState = false;
}
else
{
digitalWrite(ledPin, HIGH);
ledState = true;
}
// Reset buttonPressed flag
buttonPressed = false;
}
}
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:
Zdrojový kód: zdrojaky.zip
Overenie
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas.
Video:
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.