Étape 4: Le Code
Ce code est assez fortement modifié de ce qui JonBush d’abord publiés. Des changements majeurs sont :
- Éliminé l’utilisation de la fonction delay(). Dans le premier code le temps entre chaque coupe (changement de l’éclairage) fut consacré à un État delay(). Cela provoque un problème de lecture des capteurs (pots et bouton) depuis l’Arduino ne détecte des événements ou des changements jusqu'à ce que le delay() expire. Il n’est pas un problème pour les pots, mais pour le bouton, vous devrez maintenir enfoncée pendant 4 secondes, puis il s’est repris. Copiez le code suivant passe tout son temps en boucle aussi vite que possible à la recherche d’évolution de capteurs ou de compteurs de temps.
- Utilisé la fonction de multiMAP() (à partir de rob.tillaart pour convertir la distribution linéaire générée par la fonction random() en autre chose. J’ai essayé plusieurs distributions : gaussien, suivant une loi lognormale et certains je viens de faire vers le haut. J’ai laissé tous les y dans les commentaires. En fin de compte, je ne suis pas sûr qu’une d'entre elles fait beaucoup de différence, linéaire a été probablement très bien.
- Ajouté une minuterie pour mettre fin à l’émission de lumière après un certain laps de temps. Contrôlée par un pot.
- Ajouté un multiplicateur de vitesse de coupe, contrôlé par un pot.
- Ajouté un abandon lightshow, contrôlé par le bouton poussoir.
- Ajout d’une fonction de redémarrage doux après 24 heures (86,400,000 ms). Ce qui provoque tous les compteurs et le spectacle de lumière pour remettre en marche en même temps tous les jours.
- Ajouté un voyant d’activité sur la broche 13.
- Initialisé tous les différents paramètres de programme à des valeurs raisonnables afin que tout ou partie des pots et le commutateur, peuvent être éliminés.
- La routine softReset() force un saut de programme à l’adresse 0. Cela a pour effet de réinitialiser tous les compteurs et le redémarrage du code dès le début. C’est un truc pour simuler en poussant le bouton de réinitialisation. Il ne serait pas compiler pour le bijou, mais fonctionne sur le bijou Pro et Uno. Je ne sais pas quelles autres Arduinos il peut ou peut ne pas fonctionner sur.
- Fondu au noir. Ce que j’ai jamais eu le temps de mise en œuvre. En cas d’échec.
J’ai également commenté le code assez complètement, donc Lisez-le si vous avez des questions.