Étape 3: Prototype sur maquette + programme de test
Bien sûr, je voulais savoir si c’est tout cela est possible, alors j’ai dû essayer quelques choses. Tout d’abord, programmation l’ATmega sans l’horloge ; et Deuxièmement, tester le multiplexage de LED 3 x 8.
Pour commencer, j’ai vérifié le guide sur le site d’Arduino sur comment programmer un standalone ATmega qui est assez complet et travaille la plupart du temps. Il y a 2 grandes étapes : en utilisant un Arduino en tant que programmeur brûler le bootloader et ensuite télécharger le programme. Il y a un hic, cependant, c’est si vous avez une puce ATmega qui était déjà configurée pour utiliser une horloge externe (par exemple sortie un Arduino), la seule façon de programmer cette puce est de fournir un signal d’horloge externe sur XTAL1. Même si vous souhaitez configurer la puce pour utiliser l’horloge interne par la suite, c’est une étape nécessaire avant de pouvoir effectuer quoi que ce soit. Il y a deux options : Connectez un cristal à l’ATmega ; ou si vous n’avez pas un cristal, vous pouvez également utiliser le programme ArduinoISP2 par Adafruit qui va en fait générer un signal d’horloge sur la broche 9. En fin de compte, j’ai choisi cette option, parce que je n’avais pas un cristal de rechange que je pourrais utiliser. Après avoir configuré la puce pour utiliser l’horloge interne, il peut être programmé sans avoir besoin d’un cristal externe, fait que brûler le bootloader définit également les fusibles appropriés.
Après que le processus a fonctionné, j’ai construit un petit prototype sur maquette avec seulement 12 LED, juste pour voir comment fonctionnerait le multiplexage. Tout d’abord j’ai essayé en utilisant la fonction digitalWrite() , mais il s’est avéré pour être trop lent, donc j’ai dû changer et définissez les registres broche directement. C’est un peu plus lourd, mais heureusement, il est très bien documentée sur le site d’Arduino.
Tout d’abord, quelques variables globales devraient être définis :
Et un tableau pour stocker les valeurs de luminosité des LED :
Puis dans la boucle principale, le loopCounter est incrémentée à chaque itération, et sa reste par 50 est comparée à chaque élément du tableau de valeur , qui déterminera si la LED est allumée ou éteinte pour cette itération. J’ai choisi 50, parce qu’il travaillait encore sans scintillement et a déjà donné une résolution assez fine pour ce que j’avais besoin.
À ce stade, j’ai juste essayé le programme en écrivant des valeurs fixes de la baie de val pour voir si cela fonctionne sans aucun problème, et quand j’étais heureux avec elle, j’ai commencé la conception de circuits imprimés, parce que je savais fabrication prendrait du temps et j’ai pu terminer le reste du programme ensuite.