Stap 6: Code
Ik heb volledige versie van de code verloren en dit is van testfase maar extern werkt, het vergt enkel tweede decoder geconfigureerd. Ik zal herstellen of herschrijven asap en uploaden op hiernaartoe.
Bewerken: Ik vond en geüpload van de volledige versie van de code.
Afstandsbediening
Importeer eerst IRremote bibliotheek en het initialiseren:
#include //import bibliotheek voor onder meer vanuit hier
byte RECV_PIN = 11;
IRrecv irrecv(RECV_PIN); initialisatie
decode_results resultaten;
Inside Setup
irrecv.enableIRIn(); inschakelen van de ir in
binnen loop
Als (irrecv.decode (& resultaten)) //this controleert of er nieuwe gegevens aangekomen
{//inside controleren welke knop is ingedrukt
Als (results.value == 0xCC91D36E) {//volume omlaag ingedrukt
volcnt-=1; muxWrite(volcnt);
}
else if (results.value == 0xE936013E) {//volume omhoog geperst
volcnt += 1; muxWrite(volcnt);
}
delay(100); Dit is optioneel dat het gewoon vertraagt volumeverandering
irrecv.resume(); wachten op de volgende gegevens
}
Rotary encoders
Geen extra bibliotheek is nodig voor encoders.
Setup
#define ENC_A 8
#define ENC_B 9
#define ENC_PORT PINB
Setup
pinMode (ENC_A, INPUT);
pinMode (ENC_B, INPUT);
Loop
tmpdata = read_encoder(); Lees nieuwe staat zetten ofwel -1 links, 0 geen beurt of 1 rechts zet
Als (tmpdata) {volcnt += tmpdata; muxWrite(volcnt);}
Read_encoder()
Ik vond deze functie ergens online
int8_t read_encoder() {}
statische int8_t enc_states [] = {0, - 1,1,0,1,0,0, -1, - 1,0,0,1,0,1,-1,0};
statische uint8_t old_AB = 0;
old_AB << = 2; herinner me vorige staat old_AB | = (ENC_PORT & 0x03); huidige status terug toevoegen (enc_states [(old_AB & 0x0f)]);
}
Rest van de code controleren uitgangen, laag of hoog gewoon te schrijven op pennen.