Wszyscy znamy kości i często graliśmy w LUDO lub SANP SIDI (Snake & Ladders) za pomocą kości. Kości to solidne pudełko typu giermka, które zawiera 6 różnych liczb na wszystkich bokach. Rzucamy kostką na powierzchnię, aby podczas gry uzyskać losową liczbę. W tym projekcie próbowaliśmy odtworzyć to za pomocą cyfrowej kostki przy użyciu planszy arduino uno. Zamiast rzucać kostką, musimy tutaj wcisnąć przycisk, aby uzyskać losową liczbę od 0 do 6.
Wymagane komponenty
- Arduino UNO
- Wyświetlacz siedmiosegmentowy (wspólna anoda)
- Wciskać przyciski
- Przewody łączące
- Deska do chleba
- Rezystor 1 k
- Zasilacz
Schemat obwodu i wyjaśnienie
Jak pokazano na powyższym cyfrowym obwodzie kości, arduino służy do sterowania całym procesem. W obwodzie używane są dwa przyciski - jeden do uruchamiania kości, a drugi do resetowania kości. Arduino odczytuje te dwa przyciski i wykonuje operację. Siedmiosegmentowy wyświetlacz służy do wyświetlania wyniku kostki.
Arduino w sposób ciągły wykonuje funkcję rand () i zapisuje jej wartość w zmiennej tymczasowej. Po naciśnięciu przycisku kości zapisana wartość obliczona i wyświetlona na siedmiu segmentach przy użyciu odpowiedniej metody (patrz część artykułu dotycząca programowania).
Tutaj, w tym obwodzie kości, do wyświetlania numerów kostek używany jest wspólny wyświetlacz anody z siedmioma segmentami, który jest bezpośrednio połączony z cyfrowym pinem arduino o numerach 6, 5, 4, 3, 2, 1, 0. I wspólny pin anody z siedmioma segmentami jest połączony z rezystorem +5 V 220 Ohm. Połączone są również dwa przyciski, a mianowicie przycisk kości i przycisk resetowania, które są połączone z cyfrowym pinem 14 (A0) i 15 (A1) względem masy.
Objaśnienie kodu
Część programistyczna tego projektu odgrywa bardzo ważną rolę w wyświetlaniu losowej liczby cyfrowych kości na siedmiosegmentowym wyświetlaczu. Arduino nie zawiera żadnej biblioteki dla siedmiosegmentowego wyświetlacza. więc stworzyliśmy cały kod bez użycia żadnej biblioteki.
Przede wszystkim wybieramy cyfrowy pin dla siedmiosegmentowego wyświetlacza.
int pin = {6,5,4,3,2,1,0};
Następnie tworzymy tablicę 6 cyfr kości, czyli 1, 2, 3, 4, 5 i 6.
cyfra znaku = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Teraz daliśmy kierunek używania pinów arduino jako wyjścia.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (kostka, INPUT); pinMode (resetuj, INPUT); digitalWrite (kostka, WYSOKA); digitalWrite (zeruj, WYSOKI);
Wysyłamy kod domyślnie wyświetlający zero na wyświetlaczu siedmiosegmentowym.
int temp = 0x40; for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Teraz uruchamiamy funkcję rand (), aby uzyskać liczbę losową.
int temp = rand ();
A kiedy naciskamy przycisk kości, program najpierw mapuje tę liczbę losową, a następnie wysyła liczbę do siedmiosegmentowego wyświetlacza za pomocą operatora bit mądry.
if (digitalRead (kostki) == 0) {int k = temp% 6; temp = cyfra; czekać(); for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } opóźnienie (200); }
To samo dotyczy przycisku resetowania.
W tym programie wysyłamy pojedynczo. Tutaj stosujemy pętlę for, która działa 7 razy, aby wysłać dane do każdego segmentu jeden po drugim.