Étape 9: Modification du code
Ceci est ma version d’optimiser ce que j’ai fait. Il y a probablement de meilleures façons de le faire, mais cela fonctionne pour moi et me permet d’écrire rapidement de nouveaux effets.Dans le code précédent, j’ai couru code pour allumer chaque ligne et colonne, l’un à la fois. C’est très bien pour un test rapide et montre aux débutants comment fonctionne l’arduino. Mais comme vous obtenez plus complexes alors ses pas très efficace et la taille du programme sera grands pour tenir sur un arduino.
Pour le rendre plus facile à utiliser et développer plus tard, nous allons créer quelques nouvelles fonctions.
La première fonction est appelée resetLEDS(), lorsque cela s’appelle puis s’éteindra toutes les LED en même temps. C’est la même chose que la routine d’installation, mais nous n’avons juste pas de configurer les broches comme sorties. Cette boucle for seulement effectue une itération dans les baies et s’éteint toutes les LEDS.
void resetLEDS() {}
pour (int thisPin = 0; thisPin < 8; thisPin ++) {}
digitalWrite (col [thisPin], faible) ; Désactiver les LEDs
digitalWrite (ligne [thisPin], HIGH) ;
}
La fonction suivante, nous allons créer est à son tour sur une seule LED. Il attendra pour une période déterminée et puis il s’éteint première nous devons ajouter une nouvelle variable au-dessus de la définition de tableau. Ajoutez la ligne suivante
int delayPin 1 ; Cela retarde le code avant elle désactive la led
Puis nous ajoutons deux nouvelles fonctions
void resetLEDS() {}
pour (int thisPin = 0; thisPin < 8; thisPin ++) {}
digitalWrite (ligne [thisPin], HIGH) ;
digitalWrite (col [thisPin], faible) ;
}
}
void onLED (int colnum, int rownum) {}
digitalWrite (col [colnum], HIGH) ;
digitalWrite (ligne [rownum], faible) ;
Delay(delaypin) ;
digitalWrite (col [colnum], faible) ;
digitalWrite (ligne [rownum], HIGH) ;
}
La première fonction juste passe par chaque LED et les transforme tout au loin
La deuxième fonction fonctionne en prenant un nombre de col et le rang qui lui est passé par le code du programme principal. Le code tourne ensuite la colonne requis (anode) haut et la ligne requise (cathode) en bas qui s’allume une LED particulière pour. Un retard est ensuite appelé, puis la LED est éteint en inversant les États ci-dessus.
Avec cette fonction, nous pouvons alors changer le code de boucle à lire comme ça
onLED(0,0) ;
onLED(1,1) ;
onLED(0,1) ;
onLED(1,0) ;
onLED(6,0) ;
onLED(7,1) ;
onLED(6,1) ;
onLED(7,0) ;
onLED(3,3) ;
onLED(4,3) ;
onLED(3,2) ;
onLED(4,2) ;
onLED(0,5) ;
onLED(1,6) ;
onLED(2,7) ;
onLED(3,7) ;
onLED(4,7) ;
onLED(5,7) ;
onLED(6,6) ;
onLED(7,5) ;
Cela devrait vous donner un modèle de visage de smiley sur la matrice. Comme cette boucle s’exécute rapidement que les LEDS semble résulter de tous en permanence sur la pensée par cerveau global elle voit toutes les LED en même temps.
Pour agrandir la LED clignote, puis vous pouvez changer la fonction de boucle pour lire ce
pour (int x = 0; x < 500; x ++) ; {
onLED(0,0) ;
onLED(1,1) ;
onLED(0,1) ;
onLED(1,0) ;
onLED(6,0) ;
onLED(7,1) ;
onLED(6,1) ;
onLED(7,0) ;
onLED(3,3) ;
onLED(4,3) ;
onLED(3,2) ;
onLED(4,2) ;
onLED(0,5) ;
onLED(1,6) ;
onLED(2,7) ;
onLED(3,7) ;
onLED(4,7) ;
onLED(5,7) ;
onLED(6,6) ;
onLED(7,5) ;
}
resetLEDS() ;
Delay(500) ;
Télécharger le schéma (ChangedLEDTestFlash) ci-dessous pour voir les changements.