Mindannyian ismerjük a kockákat, és gyakran játszottunk LUDO vagy SANP SIDI (Snake & Ladders) játékot kocka használatával. A kocka egy osztag típusú szilárd doboz, amelynek minden oldalán 6 különböző szám található. Dobunk egy kockára egy kockát, hogy véletlenszerű számot kapjunk játék közben. Ebben a projektben megpróbáltuk megismételni egy digitális kockával az arduino uno tábla segítségével. A kocka dobása helyett itt egy gombot kell megnyomnunk, hogy véletlenszerű számot kapjunk 0 és 6 között.
Szükséges alkatrészek
- Arduino UNO
- Hét szegmenses kijelző (közös anód)
- Nyomógombok
- Csatlakozó vezetékek
- Kenyérlap
- 1 k ellenállás
- Tápegység
Áramkör diagram és magyarázat
Amint az a fenti digitális kocka áramkörben látható, az arduino-t használják a folyamat egészének vezérlésére. Két nyomógombot használnak az áramkörben - az egyik a kocka elindításához, a másik pedig a kocka alaphelyzetbe állításához. Arduino elolvassa ezt a két gombot, és végrehajtja a műveletet. Hét szegmenses kijelző jelenik meg a kocka eredmény megjelenítéséhez.
Az Arduino folyamatosan végrehajtja a rand () függvényt, és értékét egy ideiglenes változóba tárolja. A kocka gomb megnyomásakor a tárolt érték kiszámításra kerül és hét szegmensben jelenik meg a megfelelő módszerrel (lásd a cikk programozási részét).
Ebben a kockaáramkörben egy közös anód hét szegmenses kijelzőt használnak a kockaszámok megjelenítésére, amely közvetlenül kapcsolódik az arduino digitális 6, 5, 4, 3, 2, 1, 0 digitális PIN-kódokhoz. +5 voltos 220 Ohmos ellenállással csatlakozik. Két nyomógomb is csatlakozik, nevezetesen a dobókocka és a visszaállító gomb, amelyek a földhöz viszonyítva csatlakoznak a 14 (A0) és a 15 (A1) digitális csaphoz.
Kód Magyarázat
A projekt programozási része nagyon fontos szerepet játszik a véletlenszerű digitális dobókockaszám megjelenítésében hét szegmenses kijelzőn. Az Arduino nem tartalmaz könyvtárat hét szegmenses megjelenítéshez. így egész kódot hoztunk létre könyvtár nélkül.
Először a digitális tűt választjuk a hét szegmenses kijelzőhöz.
int pin = {6,5,4,3,2,1,0};
Utána létrehozunk egy tömböt 6 számjegyű kockából, nevezetesen 1, 2, 3, 4, 5 és 6.
char számjegy = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Most utasítást adtunk arra, hogy kimenetként használjuk az arduino pin-t.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (kocka, INPUT); pinMode (resett, INPUT); digitalWrite (kocka, HIGH); digitalWrite (resett, HIGH);
Alapértelmezés szerint egy kódot küldünk a nulla megjelenítésére hét szegmenses kijelzőn.
int temp = 0x40; mert (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Most egy rand () függvényt futtatunk, hogy véletlenszerű számot kapjunk.
int temp = rand ();
És amikor megnyomjuk a dobókocka gombot, a program először feltérképezi ezt a véletlenszerű számot, majd bit-bölcs operátor segítségével hét szegmens megjelenítésre küldi a számot.
if (digitalRead (kocka) == 0) {int k = temp% 6; temp = számjegy; várjon(); mert (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } késleltetés (200); }
És ugyanaz a reset gomb.
Ebben a programban egyszerre egyetlen bitet küldünk. Itt egy for ciklust alkalmazunk, amely 7-szer fut, hogy az egyes szegmensekhez egyenként adatokat küldjön.