Stap 3: Decoderen van de afstandsbediening
UITGESCHAKELD
- 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
Er was geen ruimte voor het opslaan van tijdsinstellingen voor 24 knoppen op de AVR, dus moest een patroon in de signalen te zoeken. Na veel experimenten slaagde ik te decoderen van het signaal codering patroon voor de afstandsbediening. Aangezien dit vrij algemene, zijn de kansen dat uw externe RGB wellicht dezelfde signalen. Als dat niet het geval is, moet u de functies van de readIR() en decodeIR() in de code wijzigen.
Om de signalen te decoderen, merkte ik dat alleen waarden op positie 18-22 en 26-30 voor verschillende knoppen veranderen. Ook zijn de waarden in het bereik van 18-22 altijd hetzelfde als 26-30. Zo lezen elke één bereik is genoeg. Ik koos om beide Lees en vergelijk om 100% zeker. De afzonderlijke waarden in het bereik zijn ofwel in de buurt van 52 of artikel 164. Dus nam ik een tijdsignaal in nabijheid van 52 als 0 en 164 als 1. Vervolgens gedecodeerd hun waarden in binaire. Ik heb behandeld de knoppen als 6 x 4 matrix en de knoppen dienovereenkomstig met de naam van [0] [0] (links boven) tot en met [5] [3](bottom right).
Knop positie | [0][0] B+ | [0][1] B- | [0] [2] uit | [0] [3] ON | [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 positie 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 positie 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 positie 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 positie 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 positie 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 |
Gedecodeerd decimale waarde | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
Opmerking: ter verbetering van snelheid, ik hard gecodeerd de waarden van de duur van tijd in de code. Ook ik gebruikte interrupt-gebaseerde IR signaal lezen zodat andere functies, zoals fade-effect, in parallel functioneren kunnen en ik krijg maximumsnelheid.