Läs/emulera fjärrkontroller med Arduino och Raspberry Pi (6 / 12 steg)
Steg 6: Avkodning värde med hjälp av Arduino kod
Använd den bifogade uppförandekoden för att avkoda värdet i ditt program. Några ändringar måste göras i variabler på toppen.
DATA_LOC: anger detta till 0 om datavärdena (som vi markerade i fetstil) är off lista, annars 1 för listan
LOW_VAL: värdet som du tar som 0 för avkodning
HIGH_VAL: på samma sätt värdet du tar som 1 för avkodning
START_ON: värdet för start koden under ON
START_OFF: på samma sätt värdet för starten kod under OFF
RANGE1_START: var du ska börja läsa värden för avkodning för det första intervallet. Använd inte excel radnumret. Den första raden är 0, nästa är 1 och så vidare...
RANGE1_END: på samma sätt, varifrån det sista värdet för avkodning liefor intervallet 1?
RANGE2_START: om dina värden dubbleras, då var de duplicerade värdena börjar?
RANGE1_END: på samma sätt där de avslutar?
RANGE2_INVERTED: är de duplicerade värdena i intervallet 2 ett komplement av värden i intervallet 1?
IR-DEFINITIONER
#define IRpin_PIN PIND / / stift för IR-sensorn (ändra inte)
#define IRpin 2 / / Pin-kod för IR-sensorn (ändra inte)
#define DATA_LOC 0 / / Data ligger i vilken lista? 0: AV, 1: ON
#define LOW_VAL 550 / / värde för att tolka som 0
#define HIGH_VAL 1560 / / värde för att tolka som 1
#define START_ON 8500 / / Start ON kodvärde
#define START_OFF 4200 / / Start OFF kodvärde
#define RANGE1_START 17 / / från vilken index att starta avkodningen?
#define RANGE1_END 24 / / Till var man kan avkoda?
#define RANGE2_START 25 / / kommentera denna #define om du inte har upprepade data
#define RANGE2_END 32 / / kommentera denna #define om du inte har upprepade data
#define RANGE2_INVERTED 1 / / är range2 inversen/komplement till range1? 1: Ja, 0: ingen
#define MAXPULSE 65000 / / maximala puls ska vi lyssna till - 65 ms
#define MAX_PULSE_PAIRS 60 / / maximalt antal puls par för att lagra
#define FUZZINESS 5 / / vad procent variation är tillåtna: 2 = 50%, 3 = 33,3%, 4 = 25%. 5 = 20%
Varför använder vi 2 spänner om de är det samma, eller bara komplementet till varandra? Det är bara en extra kontroll för att se om båda matcher. Kommentera ut #define för RANGE2_START om du inte har en rad 2 eller inte vill använda den extra kontrollen.
När du trycker på en knapp på fjärrkontrollen, ger det avkodade värdet för att knappen i följetong monitor.
Nu kan din Arduino veta vilken knapp trycks. Nu kan du tilldela olika uppgifter till olika knappar, till exempel slå en LED på och av med strömbrytaren, öka/minska ljusstyrka med volymknappar, fortkörning upp/bromsa blinkningshastighet med kanal upp/ned knapparna, etc.