Étape 3: L’électronique et le programme a expliqué
Comme l’a expliqué que j’utilise un Arduino Nano (ou clone) Maj lecteur 3 * 595 enregistre et un CCF relié à l’I2C pour garder le temps. À ce stade, je vais essayer et expliquer les parties plus difficiles du code, car il n’est pas une évidence pour travailler, (bien que facile une fois que vous s’en sortir).
Le temps est fourni par l’horloge en temps réel comme secondes 0-59, minutes 0-59 et heures 0-23. Parce que l’horloge est basée sur 5 que vous devez diviser les minutes (et heures) par 5 tout d’abord ce qui vous donnera la ligne « 5 minutes » (second
un up) si vous vous entraînez ensuite le module de calcul alors que vous donne le reste qui est le 0-4 minutes (rentabilité).
c'est-à-dire de minutes = 48
48/5 = 9 (stocker en tant que minFives)
48 %5 = 3 (stocker en tant que minUnits)
9 s’allume sur la deuxième rangée pendant 45 minutes puis 3 lumières sur la rangée du bas pendant 3 minutes ajouter les deux ensemble vous donne 48.
rester avec le procès-verbal que le problème suivant est le 595 Maj s’inscrire ne détient que 8 bits et j’ai besoin d’utiliser un complètement et ensuite 3 « bits » d’un autre registre.
Donc pour faire ce coup d’oeil à la minFives (0-11) si le nombre est supérieur à 7 puis diviser la valeur en deux valeurs.
c'est-à-dire que si (minFives > 7)
Le prochain numéro doit afficher toutes les lumières et pas seulement le nombre réel, donc dans l’exemple ci-dessus (48), vous avez 3 sur la rangée du bas et 9 lumières sur la deuxième rangée. Afin de corriger cela pour la rangée du bas, vous avez besoin allumer la lumière 1 et 2 la lumière et lumière 3, ce qui signifie un nombre de 7 (total 1 + 2 + 4) doit être envoyé au registre série. Je suis sûr qu’il y a plusieurs façons de le faire, mais j’ai choisi d’exécuter une boucle pour le nombre donné et pour chaque boucle double le nombre d’index et l’ajouter au fichier. (voir ci-dessous pour la fonction pow() comme solution de rechange)
c'est-à-dire
J’espère que vous pouvez travailler ce point, mais fondamentalement vous obtiendrez le nombre correct requis des LEDs allumés pendant un nombre donné d’entrée.
c'est-à-dire 1 = 1, 2 = 3, 3 = 7, 4 = 15, 5 = 31
J’ai réalisé après que j’ai écrit ce que je pourrais utiliser la fonction pow() donc je vais faire un essai et voir si son plus efficace. exemple, entrée 6 (pow(2,6)) -1 = 63
(J’ai essayé et il n’ya vraiment pas beaucoup de différence dans le temps, les deux sont vraiment rapides. Je suppose que la fonction pow() semble plus soignée, mais j’ai coincé avec la fonction ci-dessus)