DIY 37 LED Roulette Game
Componentes e suprimentos
| × | 1 | ||||
| × | 5 | ||||
| × | 37 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
|
Aplicativos e serviços online
|
Sobre este projeto
Roleta é um jogo de cassino que leva o nome da palavra francesa que significa roda pequena. No jogo, os jogadores podem escolher fazer apostas em um único número, vários grupos de números, as cores vermelho ou preto, se o número é ímpar ou par, ou se os números são altos (19-36) ou baixos (1 –18).
Na maioria das vezes você pode encontrar um projeto de um jogo de roleta com 10 LEDs, então decidi fazer com 37 LEDs como na roda original. Seguindo o princípio do jogo Roleta original, o movimento do LED simula uma bola cuja velocidade diminui gradativamente até parar em um número gerado aleatoriamente. A construção é bastante simplificada com o uso de um microcontrolador Arduino. O dispositivo é relativamente simples de construir e consiste em alguns componentes:
- Microcontrolador Arduino Nano
- 74HC595 shift register 5 pisces
- 37 leds
- transistor NPN
- 2 resistores
- e campainha
Este é o layout de estilo europeu e consiste em um único zero e 36 outros números. Ao premir o botão, lançamos de facto a bola virtual, onde a rotação é simulada pela subsequente iluminação dos LEDs. A rotação dos LEDs é acompanhada por um efeito sonoro apropriado, que dá uma sensação realista ao jogo. A velocidade de rotação, bem como o tempo, podem ser facilmente ajustados no código.
Por fim, o dispositivo é colocado em uma caixa adequada de plástico PVC e revestida com papel de parede colorido.
Código
- Código
Código C / C ++
int SER_Pin =8; // pino 14 no 75HC595int RCLK_Pin =9; // pino 12 no 75HC595int SRCLK_Pin =10; // pino 11 no 75HC595 // Quantos dos registradores de deslocamento - altere isso # define number_of_74hc595s 5 // não toque em # define numOfRegisterPins number_of_74hc595s * 8boolean registradores [numOfRegisterPins]; int Randomwaarde; int del =5; configuração void () {pinMode (SER_Pin, OUTPUT); pinMode (RCLK_Pin, OUTPUT); pinMode (SRCLK_Pin, OUTPUT); // redefine todos os pinos de registro clearRegisters (); writeRegisters (); randomSeed (analogRead (3)); Randomwaarde =aleatório (190, 210); Serial.println (Randomwaarde);} // definir todos os pinos de registro para LOWvoid clearRegisters () {for (int i =numOfRegisterPins - 1; i> =0; i -) {registradores [i] =LOW; }} // Definir e exibir registradores // Chame apenas APÓS todos os valores serem definidos como você gostaria (lento, caso contrário) void writeRegisters () {digitalWrite (RCLK_Pin, LOW); para (int i =numOfRegisterPins - 1; i> =0; i -) {digitalWrite (SRCLK_Pin, LOW); int val =registradores [i]; digitalWrite (SER_Pin, val); digitalWrite (SRCLK_Pin, HIGH); } digitalWrite (RCLK_Pin, HIGH);} // define um pino individual HIGH ou LOWvoid setRegisterPin (índice interno, valor interno) {registradores [índice] =valor;} void loop () {para (int x =0; x <=36; x ++) {if (del <=Randomwaarde) {setRegisterPin (x, HIGH); writeRegisters (); atraso (del); setRegisterPin (x, LOW); writeRegisters (); del =del +1; } else {setRegisterPin (x, HIGH); writeRegisters (); atraso (10000); setRegisterPin (x, LOW); writeRegisters (); del =5; }}}
Esquemas
Processo de manufatura