Etape 3: Analyser l’Init de croquis
Maintenant je vous expliquer, étape par étape, toutes les lignes de l’esquisse.
Les premières lignes #include sont utilisés pour importer le code spécifique de l’avr pour poignée, dans l’ordre :
- Bibliothèque d’interruption pour gérer l’interruption du timer 1 et boutons. Les interruptions des deux boutons servent à réveiller le microcontrôleur après qu’il se met en veille pour réduire la consommation d’énergie.
- PROGMEM bibliothèque est utilisée pour mettre la variable constante à la mémoire FLASH au lieu de la mémoire RAM. Il est utilisé car toutes les variables utilisées sur le croquis sont stockés dans la mémoire RAM du micro-contrôleur et, habituellement, le Bélier est inférieure à la mémoire FLASH.
Alors, lorsque j’utilise un grand nombre de variables constantes - comme la matrice de nombres - je dois mettre dans le FLASH pour économiser de la mémoire RAM.
Je tiens à vous informer que l’IDE d’Arduino, habituellement, ne montre pas si la mémoire RAM du microcontrôleur est pleine. Si vous avez rempli l’ensemble de la RAM, simplement le croquis va planter à un certain moment et vous serez fou parce que vous ne pas comprendre pourquoi il arrive.
Donc, si vous utilisez de grandes variables constantes, comme un tableau multidimensionnel, utilisent s’il vous plaît PROGMEM. - Bibliothèque de dormir est utilisée pour mettre le microcontrôleur dans un état de profond où il consomme d’énergie très faible.
- Bibliothèque de puissance est utilisé pour gérer la puissance des périphériques dans le microcontrôleur - comme l’ADC, timers, etc.. Lorsque nous n’avez pas besoin de ces périphériques nous fermons d’eux.
Ensuite, nous avons la valeur de constante pour la matrice, les broches et les boutons :
Dans l’ordre :
- MATRIX_ROW est le nombre de LEDs lignes. Dans ce cas 5 LEDspar ligne.
- MATRIX_COL est le nombre des LEDs cols. Dans ce cas 6 LEDs par colonne.
- PIN_NUMBER est le nombre de broches , utilisé pour la matrice de Charlieplexing 6 x 5 LEDs.
- Button_A est le nombre de broches du bouton gauche. Ce bouton déclenche l’interruption PCINT6
Bouton _B est le nombre de broches du bouton droit. Ce bouton déclenche l’interruption INT0 .
Maintenant, nous avons les variables utilisées pour la matrice de LEDs de Charlieplexing :
- pins [PIN_NUMBER] est un tableau qui stocke les 7 broches utilisées pour le Charlieplexing.
connectionMatrix [MATRIX_ROW] [MATRIX_COL] [2] est un tableau multidimensionnel qui montre la seule connexion de chaque LED dans la matrice Charlieplexing.
Le premier numéro de deux chiffres entre les accolades, est l’Anode.
Le deuxième numéro est la Cathode.matrixState [MATRIX_ROW] [MATRIX_COL] est le tableau multidimensionnel qui indique quel LEDs doivent être activées ou désactivée. Si vous modifiez un seul bit de cette matrice, la LED correspondante est en marche de l’arrêt selon laquelle bit vous insérez: 1 est activé, 0 est défini sur OFF.
Cette matrice est toujours utilisée dans le sketch, parce que pour montrer l’objet, comme le pad et le ballon, on doit être écrit dans cette matrice. Si vous devez supprimer la position précédente en mettant les coordonnées de l’objet dans le matrixState à 0, et alors vous pouvez écrire la nouvelle position en mettant 1 pour les nouvelles coordonnées. Toujours dans le matrixState.Si vous souhaitez afficher un visage dans la matrice de LED, vous devrez passer tous les bits de votre matrice de visage à la matrixState. Comme par magie les LEDs suppose votre matrice de visage ! :)
Ceci parce que la matrice Charlieplexing est automatiquement actualisée - avec interruption de débordement timer 1 - selon uniquement à la matrixState de matrice.