Étape 2: Explication générale Sketch
Si vous ne l’avez pas déjà fait, téléchargez le croquis arkanoid d’ici
Explication de l’esquisse générale :
Ce KeyChainino jeu arkanoid-like est basé sur une balle qui rebondit sur l’écran"" (matrice de LED) et d’une pagaie utilisée pour éviter les chutes de la boule dans la partie inférieure de l’écran.
Le cœur de l’esquisse est la fonction activée par le débordement du timer 1. Cette fonction est utilisée pour deux choses :
- Mettre à jour automatiquement (en arrière-plan) des valeurs de jeu, comme la position de la balle
- Mise à jour de la matrice de Charlieplexing selon une matrice programmée - appelée matrixState - qui sert à allumer ou éteindre les voyants et donc aux choses montre sur l’écran.
Je veux dépenser quelques mots sur la matrice Charlieplexing.
La matrice de Charlieplexing - selon Wikipedia - est une technique pour conduire un affichage multiplexé dont les entrées/sorties relativement peu épingles sur un microcontrôleur sont utilisées pour entraîner un tableau de LED.
En fait, avec cette technique nous sommes en mesure de conduire plus voyants que les broches e/s du micro-contrôleur.
Comment ? En connectant les LEDs d’une manière particulière - décrite dans l’article ci-dessus -, vous pouvez conduire les LEDs en changeant l’état les broches du microcontrôleur. Vous pouvez allumer une LED en tournant l’une broche haute et basse une autre tige. Les autres broches doivent être dans trois États, ce qui signifie que ces goupilles doivent être mis en entrée.
Chaque fois le temporisateur 1 contre déborde - ce qui signifie que c' est le compteur revenait à zéro - son interruption de dépassement de capacité se produit et sa fonction met à jour la matrice Charlieplexing en lisant la valeur de la matrixState 6 x 5 et mettre cette valeur (1 ou 0) à la LED spécifique.
Seulement une LED à temps est posée sur, mais alors que le dépassement de capacité est trop rapide - plus rapide que la fréquence de l’oeil lecture - nous avons le sentiment que tous les voyants sont allumés en même temps.
Cependant vous n’avez pas besoin à se soucier de cette fonction de charlieplexing, parce que vous devez seulement changer les valeurs matrixState pour activer ou désactiver les LEDs.
Ici, le matrixState. Dans ce cas tous les voyants sont éteints.
Si vous souhaitez créer un visage, vous pouvez modifier le matrixState de cette façon :
Évidemment, vous n’avez pas besoin de changer le matrixState de cette façon. Après que je vais vous montrer comment vous pouvez le faire avec des tableaux.
Découvrez ce post pour plus de détails sur Charlieplexing.