Hur man gör en elektronisk tärning Roller (6 / 10 steg)
Steg 6: Programmera Arduino
Nu när du har fått allt kopplad till en skärbräda, är du redo att sätta ditt program tillsammans.
Vad jag behövde göra: gränssnitt med en skärm, läsa indata från två knappar och justera värden utifrån en rotationsencoder.
Lyckligtvis, kommunicera med skärmen gjordes snabbt och enkelt på grund av Adafruits bibliotek. (SSD1306 för gränssnitt med drivrutinen chip för skärmen och deras GFX bibliotek för snabbt och enkelt lägga till text eller former på displayen.)
Rotary encoder används extern avbrott, som är en mycket användbar funktion som ATMega328 har och Arduino IDE har stöd för. Det gör att kod för att vara sprang bara när en PIN-kod ändras, och annars kommer inte sakta ner programmet huvudsakliga loop() av vallokalerna med funktionen digitalRead(). Du kan läsa mer om den här användbara funktionen här: http://playground.arduino.cc/Code/Interrupts
Jag började med att få den OLED displayen att arbeta. Lyckligtvis adafruit har ett bibliotek (länk) till enkelt gränssnitt med displayen jag använde (SSD1305) och adafruit har en hel del information om det här: https://learn.adafruit.com/monochrome-oled-breakou...
Efter att lägga ut min text och rulle siffror och resultat där jag ville, gjorde jag det så att användaren kan vara i olika urval lägen att ändra antalet tärningarna rulla och antalet sidor. Jag använde en random utsäde av antalet millisekunder sedan enheten var på, och genereras ett slumptal varje gång de tryckte på knappen för rulle. Jag hade också skärmen uppdateras endast när ett nummer har ändrats, för att minska onödig processorkraft.
Känn dig fri att hitta och använda min kod på min github databas på: https://github.com/tedmyers/Dice_Roller
För detta projekt ville jag inte spendera mycket tid att inrätta en skärbräda och koppla in en i-system programmerare. Så jag bara hoppat ur Atmega328p mikrokontroller i min Arduino Uno och placerade den i min slutliga krets. Om du gör detta, kom ihåg att inkludera en 16MHz kristalloscillator med nödvändiga 22pF kondensatorerna på varje stift.