Arduino passiva preamp med fjärrkontroll, dämparen och channel selector (6 / 7 steg)
Steg 6: kod
Jag förlorade full version av koden och detta är från testfasen men remote fungerar, det behöver bara andra dekoder konfigurerad. Jag kommer att få tillbaka den eller skriva om det asap och belasta upp den här.
Redigera: Jag hittade och laddade upp full version av koden.
Fjärrkontroll
Först importera IRremote bibliotek och initiera det:
#include //import bibliotek innan bland annat från här
byte RECV_PIN = 11;
IRrecv irrecv(RECV_PIN); initiering
decode_results resultat.
Inuti setup()
irrecv.enableIRIn(); Aktivera ir i
inuti loop()
om (irrecv.decode (& resultat)) //this kontrollerar om nya uppgifter kommit
{//inside kolla vad knappen trycktes
om (results.value == 0xCC91D36E) {//volume ner pressad
volcnt-=1; muxWrite(volcnt);
}
annat if (results.value == 0xE936013E) {//volume upp pressade
volcnt + = 1; muxWrite(volcnt);
}
Delay(100); Detta är valfritt det bara saktar ner volymförändring
irrecv.Resume(); vänta på nästa data
}
Roterande pulsgivare
Ingen ytterligare bibliotek behövs för kodare.
Setup
#define ENC_A 8
#define ENC_B 9
#define ENC_PORT PINB
Setup()
pinMode (ENC_A, indata);
pinMode (ENC_B, indata);
Loop()
tmpdata = read_encoder(); läsa nya staten sväng antingen -1 vänster, 0 ingen tur eller 1 rätt vända
om (tmpdata) {volcnt += tmpdata; muxWrite(volcnt);}
Read_encoder()
Jag hittade denna funktion någonstans på nätet
int8_t read_encoder() {
statisk int8_t enc_states [] = {0, - 1,1,0,1,0,0, -1, - 1,0,0,1,0,1,-1,0};
statisk uint8_t old_AB = 0;
old_AB << = 2; kom ihåg tidigare statliga old_AB | = (ENC_PORT & 0x03); Lägg till nuvarande tillstånd avkastning (enc_states [(old_AB & 0x0f)]);
}
Resten av koden är att styra utgångar, bara skriva låg eller hög på stift.