Étape 5: Écriture du Code
Le programme se compose de trois parties principales :
1) Code IR mise en mémoire tampon
2) interprétation de Code IR
3) commande de PWM (couleur RVB fixes, décoloration des couleurs et le mode lumière blanche).
Code IR mise en mémoire tampon :
En utilisant le procédé décrit à l’étape 4 - « Hacking the Remote » j’ai appris que la longueur de 0, 1, commencer à impulsion, et impulsions répétées ont été toutes les valeurs uniques ou répétables. Chaque fois que le commandant de bord a senti un front descendant sur pin 17 (Interrupt-sur-changement) elle enregistre le temps depuis le dernier front descendant et puis comparez cette valeur à une série de temps « windows » pour déterminer le type d’impulsion juste est venu en. Vous pouvez voir un diagramme de flux brut de ce processus dans les images ci-dessous. Le code de comparaison de fenêtre n’est pas original, je l’ai trouvé sur l’excellent site PICLIST (http://www.piclist.org/techref/piclist/index.htm). Si la longueur ne tombe pas dans n’importe quelle fenêtre, j’ai mis un drapeau mauvais Code (BC) et tout ignorer jusqu'à ce que la prochaine impulsion.
Interprétation du Code IR :
Chaque fois qu’un 1 ou un 0 est détecté, le commandant de bord pousse cette valeur dans un registre FIFO de 8 bits. Même si le train d’impulsions de la télécommande n’est plus de 8 bits, nous nous retrouvons toujours avec les 8 dernières dans le registre, ce qui arrive à contenir une valeur unique pour chaque clé d’intérêt. J’ai comparer ce code à la valeur numérique connue pour chaque clé (ceux-ci ont été mesurés sur l’oscilloscope à l’étape 4) pour déterminer quel bouton a été activé et les mesures à prendre (lumière blanche mode, mode RVB, augmenter la vitesse de Fader, etc.). Cette valeur de 8-bit est enregistrée dans un registre secondaire afin que si l’impulsion de répétition se présente, nous saurons quelle commande se répète.
Commande PWM :
Le PIC 16F1829 a 4 registres PWM de 10-bit matériel qui le rend idéal pour le contrôle de couleur de RVB. En utilisant les modules PWM hardware le PIC est libre de faire d’autres choses alors que le PWM se passe en arrière-plan.
L’intensité de chaque couleur est contrôlée par 10 bits. Lorsque la lampe est allumée, chaque valeur soit au maximum pour donner la lumière blanche. Lorsque la touche « CONV », une boucle de 3-la partie commence dans le logiciel.
Partie 1) décrémentation rouge, vert, incrémentation, bleu = 0
Partie 2) vert décrémentation, incrémentation de bleu, rouge = 0
Partie 3) bleu décrémentation, rouge incrémentation, vert = 0
Le programme continue de parcourir ces trois parties lorsqu’un blanc lumineux mode est sélectionné, ou la touche « Statique » pour suspendre la lampe sur la couleur actuelle.