RGB LED Strip Controller (3 / 13 steg)
Steg 3: Avkodning fjärrkontrollen
PÅ, AV
- 882, 438
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 52
- 56, 162
- 56, 162
- 56, 162
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 4010
- 882, 218
Det fanns inget utrymme för att spara tidsinställningarna för 24 knappar på AVR, så var tvungen att hitta ett mönster i signalerna. Efter mycket experimenterande lyckades jag att avkoda signalen kodning mönster för fjärrkontrollen. Eftersom detta är ganska generisk, är chanserna din remote RGB kan ha samma signaler. Om inte, måste du ändra readIR() och decodeIR() funktioner i koden.
För att avkoda signalerna, märkte jag att endast värden på 18-22 och 26-30 ändrar för olika knappar. Värden i intervallet 18-22 finns också, alltid samma som 26-30. Så läser någon en spänna är nog. Jag valde att läsa båda och jämför för att vara 100% säker. Enskilda värden i intervallet är antingen nära 52 eller 164. Så antog jag tidsignal i närhet av 52 som 0 och 164 som 1. Sedan avkodas deras värden i binär. Jag har knapparna kan jämställas med 6 x 4 matrix och namn på knappar därefter från [0] [0] (vänster överkant) [5] [3](bottom right).
Knappen position | [0][0] B+ | [0][1] B- | [0] [2] av | [0] [3] på | [1][0] – R | [1][1] – G | [1][2] – B | [1][3] – W | [2][0] | [2][1] | [2][2] | [2][3] | [3][0] | [3][1] | [3][2] | [3][3] | [4][0] | [4][1] | [4][2] | [4][3] | [5][0] | [5][1] | [5][2] | [5][3] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Timing position 18 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Timing position 19 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
Timing position 20 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
Timing position 21 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Timing position 22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Avkodas decimalvärde | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
Obs: för att förbättra hastighet, jag hård kodade längd tidsvärden i koden. Också, jag använde avbrott-baserade IR signal läser ja andra funktioner, som bleknar effekt, kan fungera parallellt och maxhastighet.