Étape 6: Programmation de l’Arduino
Maintenant que vous avez tout connecté jusqu'à une maquette, vous êtes prêt à mettre sur pied votre programme.
Ce que j’avais à faire : s’interfacer avec un écran, lisez l’entrée de deux boutons et ajuster les valeurs basées sur une molette.
Heureusement, communiquer avec l’écran a été faite rapide et simple à cause bibliothèques de Adafruit. (SSD1306 pour l’interfaçage avec le chip driver pour l’écran et leur bibliothèque GFX pour rapidement et facilement ajouter texte ou des formes à l’affichage.)
L’encodeur rotatif utilisé les interruptions externes, qui sont une fonctionnalité très utile qui l’ATMega328 a et l’IDE Arduino prend en charge. Il permet au code d’être couru uniquement lorsqu’un changement de NIP et autrement ne ralentira pas le programme principal loop() par l’interrogation avec la fonction digitalRead(). Vous pouvez en savoir plus sur cette fonctionnalité utile ici : http://playground.arduino.cc/Code/Interrupts
J’ai commencé à obtenir l’écran OLED pour travailler. Heureusement adafruit dispose d’une bibliothèque (lien) à facilement l’interface avec l’affichage que j’utilisais (le SSD1305) et adafruit a beaucoup d’informations à ce sujet ici : https://learn.adafruit.com/monochrome-oled-breakou...
Après la pose de mon texte et des numéros de rouleau et des résultats où je voulais, je l’ai fait afin que l’utilisateur pourrait être en modes de sélection différent pour modifier le nombre de dés à rouler et le nombre de côtés. J’ai utilisé une graine aléatoire du nombre de millisecondes depuis l’appareil effectuait et généré un nombre aléatoire chaque fois qu’ils ont pressé le bouton de rouleau. J’ai également eu l’écran Actualiser uniquement lorsqu’un certain nombre a été modifié, afin de réduire la surcharge du processeur inutile.
N’hésitez pas à trouver et à utiliser mon code sur mon dépôt github à: https://github.com/tedmyers/Dice_Roller
Pour ce projet, je ne voulais pas passer beaucoup de temps mise en place d’une maquette et le brancher sur un programmateur in-situ. Donc j’ai juste sauté le microcontrôleur Atmega328p dans mon Arduino Uno et placé dans mon circuit final. Si vous le faites, n’oubliez pas d’inclure un oscillateur à quartz 16MHz avec les condensateurs de 22pF nécessaires sur chaque broche.