Oct 25

kockaČeprav je že pozna ura, sem se odločil, da na hitro predstavim enega svojih prvih projektov – izzivov, ki sem se jih lotil na arduino-tu.

Začelo se je z idejo, ki je prerasla v izziv, če sem sposoben napisat program, ki bi kar se da naključno generiral številke 1-6 in jih v obliki kocke izrisoval s prižiganjem led diod. Sila preprosto za koga, a mi je vseeno vzelo kar nekaj časa.

Najprej sem napisal funkcije za utripanje številk, vsako posebej, vse od 1 do 6. Potem pa je sledilo kar nekaj razmišljanja, moral sem zagotoviti, da goljufanje ne bi bilo mogoče in da bi imelo pritiskanje čim manj vpliva na sam program. Na koncu sem problem rešil zelo preprosto – grdo, tako da se pač številke ves čas “vrtijo” okoli, vsakič ko se krog obrne pa se tudi žreba nova vrednost.

Za generiranje naključnih vrednosti ima Arduino sicer že vgrajeno funkcijo randomSeed(); a ima svoje pomankljivosti. Predvsem to, da se naključne vrednosti po vsakem “rebootu” ponavljajo, v istem vrstnem redu. Tako da je bilo treba fukncijo nekako prilagoditi in na misel mi ni prišlo nič drugega, kot da vsakič iščem naključje okoli druge vrednosti:

eeprom=EEPROM.read(0);
eeprom+=1;
EEPROM.write(0, eeprom);
randomSeed(eeprom);

Za konec sem moral samo še poskrbeti za počasno “ustavljanje” in projektič je že skoraj pri koncu. Samo še uvodna “animacija” in ohoho testiranja in preverjanja delovanja, preko com-porta. Končni izdelek sem zapakiral v kocko iz pleksi stekla, zunanjih dimenzij 6 x 6 x 4 cm, delovanje pa si poglejte v kratkem filmčku.

Končana kodo pa si lahko ogledate tule, lahko pa si pogledate tudi vezje v Eaglu.

Summary (for international viewers):

In a few short words, I have programed an electronic dice. It simply calculates a “random” number, displaying it with 7 bright LEDs. I wrote a separate function for each state (so 6 states all in all, 1 – 6). The program circulates from one to another producing a rolling efect. It does this until the button is released and then slowly stops at a number. That’s kinda it, just for fun. You can see the whole source code here and I also include Eagle files.

Lp

Leave a Reply

Categories 

Donate 

 
preload preload preload