Ao pressionar o botão um número é sorteado e exibido em um display de leds.
É possível com pequenas alterações utilizar um display de mais dígitos para exibição de valores maiores.
Pode-se também alterar apenas o código fonte para exibição de valores entre 1 e 6, como alternativa aos projetos Dado Eletrônico com Attiny85 e Dado Eletrônico.
Utilizei um Arduino Nano, um display de 7 segmentos com catodo comum, um botão tipo push-button, e 7 resistores de 220 ohms.
Segue o esquema elétrico do display, do circuito, e o código fonte com comentários para entendimento.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | /*--------------------------------------------------------- Programa : SORTEIO DIGITAL Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 04/11/2018 ---------------------------------------------------------*/ #define BUTTON 9 int displayLed[7] = {2, 3, 4, 5, 6, 7, 8}; //Portas dos segmentos do display (A, B, C, D, E, F, G) void setup() { //Configura as portas utilizadas no display como saída for (int i = 0; i < 7; i++) { pinMode(displayLed[i], OUTPUT); } //Configura as portas utilizada no botão como entrada com pull-up pinMode(BUTTON, INPUT_PULLUP); //Configura a inicilização do random através de valores aleatórios para não repetir sequencias randomSeed(analogRead(0)); //Inicia somente com o segmento 'g' digitalWrite(displayLed[6], HIGH); } void loop() { //Botão foi pressionado if (digitalRead(BUTTON) == LOW) { DisplayOff(); //Enquanto o botão estiver pressionado, mantém o display exibindo as voltas while (digitalRead(BUTTON) == LOW) { DisplayTurns(50); } //Acelera as voltas no display for (int i = 50; i >= 20; i -= 2) { DisplayTurns(i); } //Seleciona um número aleatório e exibe no display int n = random(10); //Números de 0 a 9 DisplayNumber(n); delay(500); for (int i = 0; i < 6; i++) { DisplayOff(); delay(100); DisplayNumber(n); delay(200); } } } void DisplayNumber(int num) { int number[10][7] = { //Catodo comum {1, 1, 1, 1, 1, 1, 0}, //ZERO {0, 1, 1, 0, 0, 0, 0}, //UM {1, 1, 0, 1, 1, 0, 1}, //DOIS {1, 1, 1, 1, 0, 0, 1}, //TRES {0, 1, 1, 0, 0, 1, 1}, //QUATRO {1, 0, 1, 1, 0, 1, 1}, //CINCO {0, 0, 1, 1, 1, 1, 1}, //SEIS {1, 1, 1, 0, 0, 0, 0}, //SETE {1, 1, 1, 1, 1, 1, 1}, //OITO {1, 1, 1, 0, 0, 1, 1} //NOVE }; if (num > 9) num = 0; for (int i = 0; i < 7; i++) { //Apaga todos os segmentos digitalWrite(displayLed[i], LOW); } for (int i = 0; i < 7; i++) { //Acende os segmentos do display referente ao digito digitalWrite(displayLed[i], number[num][i]); } } void DisplayTurns(int delaySpeed) { digitalWrite(displayLed[6], LOW); for (int i = 0; i < 6; i++) { digitalWrite(displayLed[i], HIGH); delay(delaySpeed); digitalWrite(displayLed[i], LOW); } } void DisplayOff() { for (int i = 0; i < 7; i++) { //Apaga todos os segmentos digitalWrite(displayLed[i], LOW); } } |
Tem como fazer números combinados para fazer apostas,, marcar os números para sair mais vezes
ResponderExcluirBoa tarde! Sim, mas deixaria de ser aleatório...
ExcluirComo nessas máquinas de ganhar celular ou pegar bichinhos de pelúcia que tem nos shoppings, o sistema é preparado para só deixar ganhar após contabilizar "x" vezes o valor dos produtos... Não é sorte e habilidade que faz parecer ser.
É possível programar para, por exemplo, após 10 números aleatórios, exibir alguma sequencia de números "supostamente sorteado".
Lembrando que utilizar isso para ludibriar gerando enriquecimento pode ser considerado crime.