Dekodér infračerveného ovládača: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
(13 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
Riadok 20: | Riadok 20: | ||
== Analýza a opis riešenia == | == Analýza a opis riešenia == | ||
Najprv som zapojil zariadenie podľa schemi zapojenia. | |||
[[ | [[Súbor:Kulpin.png|400px|thumb|center|Schéma zapojenia .]] | ||
Riadok 35: | Riadok 33: | ||
<tabs> | <tabs> | ||
<tab name=" | <tab name="Program na identifikaciju kodov tlacidiel"><source lang="c++" style="background: LightYellow;"> | ||
#include < | #include <IRremote.h> | ||
int | // definovanie pinu prijimaca | ||
int const IRpin = 2; | |||
IRrecv irrecv(IRpin); | |||
// ulozenie signalu | |||
decode_results results; | |||
void setup() | |||
{ | { | ||
// zapnutie komunikacie | |||
Serial.begin(9600); | |||
irrecv.enableIRIn(); | |||
} | |||
void loop() | |||
{ | |||
/ | // pokial dostanem signal tak jeho hodnotu vypisujem v dec sustave | ||
if (irrecv.decode(&results)) | |||
{ | |||
Serial.println(results.value, DEC); | |||
irrecv.resume(); | |||
delay(1000); | |||
} | |||
} | |||
</source></tab> | |||
<tab name="Kod na manipuláciu ledky"><source lang="c++" style="background: LightYellow;"> | |||
#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 | void loop() | ||
{ | |||
if (buttonPressed) | |||
{ | |||
if (ledState) | |||
{ | |||
digitalWrite(ledPin, LOW); | |||
ledState = false; | |||
} | |||
else | |||
{ | |||
digitalWrite(ledPin, HIGH); | |||
ledState = true; | |||
} | |||
// Reset buttonPressed flag | |||
buttonPressed = false; | |||
} | |||
} | |||
</source></tab> | </source></tab> | ||
</tabs> | </tabs> | ||
Manipulovanie ledky: | |||
Importovali sme knižnicu IRremote, ktorá nám umožnila 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 metóde loop(), čakajúc na ďalší stlačený signál. | |||
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]] | Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]] | ||
Riadok 67: | Riadok 121: | ||
=== Overenie === | === Overenie === | ||
[[Súbor: | [[Súbor:Kolobeska2.png|400px|thumb|center|Aplikácia.]] | ||
'''Video:''' | '''Video:''' | ||
https://youtube.com/shorts/3axsi2gZVc8 | |||
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte. | Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte. | ||
[[Category:AVR]] [[Category:MIPS]] | [[Category:AVR]] [[Category:MIPS]] |
Aktuálna revízia z 11:13, 7. jún 2023
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.
Algoritmus a program
Algoritmus programu je....
#include <IRremote.h>
// definovanie pinu prijimaca
int const IRpin = 2;
IRrecv irrecv(IRpin);
// ulozenie signalu
decode_results results;
void setup()
{
// zapnutie komunikacie
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop()
{
// pokial dostanem signal tak jeho hodnotu vypisujem v dec sustave
if (irrecv.decode(&results))
{
Serial.println(results.value, DEC);
irrecv.resume();
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;
}
}
Manipulovanie ledky: Importovali sme knižnicu IRremote, ktorá nám umožnila 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 metóde loop(), čakajúc na ďalší stlačený signál.
Zdrojový kód: zdrojaky.zip
Overenie
Video: https://youtube.com/shorts/3axsi2gZVc8
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.