Stap 6: Programmeren van de Arduino
Nu dat je alles verbonden tot een breadboard hebt, ben je klaar om je programma samen te stellen.
Wat ik nodig had om te doen: interface met een scherm, de input van de twee knoppen leest en aanpassen van waarden op basis van een rotatie-encoder.
Gelukkig, communiceren met het scherm gedaan snel en eenvoudig vanwege Adafruit van bibliotheken. (SSD1306 voor interfacing met de driver chip voor het scherm, en hun GFX bibliotheek voor het snel en eenvoudig toevoegen van tekst of shapes aan de weergave.)
Het roterende coderingsprogramma gebruikt externe interrupts, die een zeer nuttige eigenschap die de ATMega328 heeft en de Arduino IDE heeft ondersteuning voor. Het laat code te worden liep alleen wanneer een pin wordt gewijzigd, en anders zal niet zacht waas naar de belangrijkste loop programma door polling met de digitalRead() functie. U kunt meer lezen over deze handige functie hier: http://playground.arduino.cc/Code/Interrupts
Ik ben begonnen met de OLED weergave te werken krijgen. Gelukkig adafruit beschikt over een bibliotheek (de verwijzing) om gemakkelijk de interface met de vertoning was ik met behulp van (de SSD1305) en adafruit heeft een heleboel informatie over het hier: https://learn.adafruit.com/monochrome-oled-breakou...
Na het indelen van mijn tekst en roll cijfers en resultaten waar ik wilde, maakte ik het zodat de gebruiker kan zich in verschillende selectie modi wijzigen van het aantal dobbelstenen rollen en het aantal zijden. Ik gebruikte een willekeurige zaad van het aantal milliseconden sinds het apparaat was op, en een willekeurig getal gegenereerd telkens wanneer die ze de roll-knop ingedrukt. Ik had ook het scherm vernieuwen alleen bij een aantal werd veranderd, om geen onnodige CPU-overhead.
Voel je vrij kunt vinden en gebruiken van mijn code op mijn github repository op: https://github.com/tedmyers/Dice_Roller
Voor dit project wilde ik niet besteden veel tijd het opzetten van een breadboard en inpluggen in een programmeur in-systeem. Dus ik gewoon schoot uit de Atmega328p microcontroller in mijn Arduino Uno, en plaatste de Codex in mijn slotcircuit. Als u dit doet, vergeet niet om een 16MHz kristal oscillator met de nodige 22pF condensatoren op elke pin.