Buat Sendiri Game Roulette 37 LED dengan Arduino Nano
Komponen dan Perlengkapan
Arduino Nano R3
×
1
IC Register Pergeseran 74HC595
×
5
LED (generic)
×
37
Buzzer
×
1
Transistor NPN Umum
×
1
Tombol Push, Sementara
×
1
Alat dan Mesin yang Diperlukan
Pengolok (generic)
Aplikasi dan Layanan Online
Arduino IDE
Tentang Proyek Ini
Roulette adalah game kasino yang bernama dari kata Prancis yang berarti roda kecil. Dalam game, pemain dapat memilih untuk memasang taruhan pada satu nomor, berbagai pengelompokan nomor, warna merah atau hitam, apakah nomor ganjil atau genap, atau apakah nomor tinggi (19–36) atau rendah (1–18).
Seringkali Anda dapat menemukan proyek game roulette dengan 10 LED, jadi saya memutuskan untuk membuatnya dengan 37 LED seperti roda asli. Mengikuti prinsip game Roulette asli, gerakan LED mensimulasikan bola yang kecepatannya secara bertahap menurun hingga berhenti pada nomor yang dihasilkan secara acak. Konstruksi sangat disederhanakan dengan penggunaan mikrokontroler Arduino. Perangkat relatif mudah untuk dibuat dan terdiri dari beberapa komponen:
- Mikrokontroler Arduino Nano
- 74HC595 register pergeseran 5 buah
- 37 LED
- Transistor NPN
- 2 Resistor
- dan Buzzer
Ini adalah tata letak gaya Eropa dan terdiri dari satu nol, dan 36 nomor lainnya. Dengan menekan tombol kita sebenarnya melempar bola virtual, di mana rotasi disimulasikan oleh penerangan LED berikutnya. Rotasi LED diiringi oleh efek suara yang sesuai, yang memberikan nuansa realistis pada game. Kecepatan rotasi serta waktu dapat dengan mudah disesuaikan dalam kode.
Akhirnya, perangkat ditempatkan dalam kotak yang terbuat dari plastik PVC dan dilapisi dengan dinding kain berwarna.
Kode
Kode
KodeC/C++
int SER_Pin = 8; //pin 14 on the 75HC595 int RCLK_Pin = 9; //pin 12 on the 75HC595 int SRCLK_Pin = 10; //pin 11 on the 75HC595 //How many of the shift registers - change this #define number_of_74hc595s 5 //do not touch #define numOfRegisterPins number_of_74hc595s * 8 boolean registers[numOfRegisterPins]; int Randomwaarde; int del = 5 ; void setup(){ pinMode(SER_Pin, OUTPUT); pinMode(RCLK_Pin, OUTPUT); pinMode(SRCLK_Pin, OUTPUT); //reset all register pins clearRegisters(); writeRegisters(); randomSeed(analogRead(3)); Randomwaarde = random(190, 210); Serial.println(Randomwaarde); } //set all register pins to LOW void clearRegisters(){ for(int i = numOfRegisterPins - 1; i >= 0; i--){ registers[i] = LOW; } } //Set and display registers //Only call AFTER all values are set how you would like (slow otherwise) void writeRegisters(){ digitalWrite(RCLK_Pin, LOW); for(int i = numOfRegisterPins - 1; i >= 0; i--){ digitalWrite(SRCLK_Pin, LOW); int val = registers[i]; digitalWrite(SER_Pin, val); digitalWrite(SRCLK_Pin, HIGH); } digitalWrite(RCLK_Pin, HIGH); } //set an individual pin HIGH or LOW void setRegisterPin(int index, int value){ registers[index] = value; } void loop(){ for (int x=0; x<=36; x++) { if (del <= Randomwaarde) { setRegisterPin(x, HIGH); writeRegisters(); delay(del); setRegisterPin(x, LOW); writeRegisters(); del = del +1; } else { setRegisterPin(x, HIGH); writeRegisters(); delay(10000); setRegisterPin(x, LOW); writeRegisters(); del = 5; } } }