Me kaikki tunnemme noppat ja pelasimme usein LUDO- tai SANP SIDI (Snake & Ladders) -peliä noppien avulla. Noppa on squire-tyyppinen kiinteä laatikko, joka sisältää 6 eri numeroa kaikilla sivuillaan. Heitämme noppaa pinnalle saadaksemme satunnaisluvun pelaamisen aikana. Tässä projektissa olemme yrittäneet kopioida sen digitaalisella nopalla käyttämällä arduino uno -levyä. Nopan heittämisen sijasta meidän on painettava painiketta saadaksesi satunnaisluvun välillä 0-6.
Vaaditut komponentit
- Arduino UNO
- Seitsemän segmentin näyttö (yhteinen anodi)
- Painikkeet
- Johtojen liittäminen
- Leipälauta
- 1 k vastus
- Virtalähde
Piirikaavio ja selitys
Kuten yllä olevassa digitaalisessa noppapiirissä on esitetty, arduinoa käytetään koko prosessin ohjaamiseen. Piirissä käytetään kahta painonappia - toista noppien aloittamiseen ja toista noppien nollaamiseen. Arduino lukee nämä kaksi painiketta ja suorittaa toiminnon. Seitsemän segmentin näyttöä käytetään noppatuloksen näyttämiseen.
Arduino suorittaa jatkuvasti rand () -funktiota ja tallensi arvon väliaikaiseen muuttujaan. Kun noppapainiketta painetaan, tallennettu arvo lasketaan ja näytetään seitsemällä segmentillä sopivalla tavalla (katso artikkelin ohjelmointiosa).
Tässä tässä nopanpiirissä noppanumeroiden näyttämiseen käytetään yhteistä anodiseitsemän segmentin näyttöä, joka on kytketty suoraan arduinon digitaalisiin pin-numeroihin 6, 5, 4, 3, 2, 1, 0. Ja seitsemän segmentin yhteinen anoditappi on kytketty +5 voltin 220 ohmin vastuksella. Kaksi painonappia on myös kytketty, nimittäin noppapainike ja nollauspainike, jotka on kytketty digitaalisiin nastoihin 14 (A0) ja 15 (A1) maan suhteen.
Koodin selitys
Tämän projektin ohjelmointiosalla on erittäin tärkeä rooli satunnaisen digitaalisen nopanumeron näyttämisessä seitsemän segmentin näytössä. Arduino ei sisällä kirjastoa seitsemän segmentin näyttöä varten. joten loimme koko koodin käyttämättä kirjastoa.
Ensinnäkin valitaan digitaalinen tappi seitsemän segmentin näyttöä varten.
int tappi = {6,5,4,3,2,1,0};
Sen jälkeen luomme joukon 6 numeroa noppaa, nimittäin 1, 2, 3, 4, 5 ja 6.
merkkiluku = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Nyt annoimme ohjeet käyttää arduino-nastaa lähtöön.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (nopat, INPUT); pinMode (nollaus, INPUT); digitalWrite (nopat, HIGH); digitalWrite (nollaus, HIGH);
Lähetämme koodin nollan näyttämiseksi seitsemän segmentin näytössä oletusarvoisesti.
int lämpötila = 0x40; varten (int i = 0; i <7; i ++) {int temp1 = lämpötila & 0x01; digitalWrite (tappi, temp1); lämpötila = lämpötila >> 1; }
Nyt suoritamme rand () -funktion saadaksesi satunnaisluvun.
int lämpötila = rand ();
Ja kun painamme noppapainiketta, kartta ensin kartoittaa tämän satunnaisluvun ja lähettää sitten numeron seitsemän segmentin näyttöön bittiälykästä operaattoria käyttämällä.
if (digitalRead (nopat) == 0) {int k = lämpötila% 6; temp = numero; odota(); varten (int i = 0; i <7; i ++) {int temp1 = lämpötila & 0x01; digitalWrite (tappi, temp1); lämpötila = lämpötila >> 1; } viive (200); }
Ja sama palautuspainikkeelle.
Tässä ohjelmassa lähetämme yhden bitin kerrallaan. Tässä sovellamme for for -silmukkaa, joka suorittaa 7 kertaa tietojen lähettämisen kullekin segmentille yksitellen.