/******************************************************************************* * * Projeto 58a: Sorteio de 0 a 9 - display 7 segmentos - Arduino * http://squids.com.br/arduino * *******************************************************************************/ // Variaveis liga e desliga p/ display 7 segmentos const int l = 1, d = 0; // Display 7 segmentos (catodo comum) //const int l = 0, d = 1; // Display 7 segmentos (anodo comum) byte displaySeteSeg[10][7] = { { l,l,l,l,l,l,d }, //DIGITO 0 { d,l,l,d,d,d,d }, //DIGITO 1 { l,l,d,l,l,d,l }, //DIGITO 2 { l,l,l,l,d,d,l }, //DIGITO 3 { d,l,l,d,d,l,l }, //DIGITO 4 { l,d,l,l,d,l,l }, //DIGITO 5 { l,d,l,l,l,l,l }, //DIGITO 6 { l,l,l,d,d,d,d }, //DIGITO 7 { l,l,l,l,l,l,l }, //DIGITO 8 { l,l,l,d,d,l,l } //DIGITO 9 }; byte botao=12; void setup(){ for (int i = 2; i < 10; i++) { pinMode(i, OUTPUT); // conexão pinos dos 7 segmentos + o ponto } pinMode(botao, INPUT_PULLUP); } void loop() { //Geração de numero aleatorios de 0 a 9 long n = random(0, 10); numero_display(n); delay(50); //Se o botão foi pressionado… if (!digitalRead(botao)) { digitalWrite(9, l); // acende o ponto para mostrar o número delay(500); //O processo do arduino é interrompido e o display mostra o numero sorteado. while (digitalRead(botao)) { } // loop vazio faz com que o programa interropa o processo até sair da condição, ou seja, pressionar o botão delay(400); // Delays são usados para que de tempo para a informação do botão ser lida apenas uma vez. digitalWrite(9, d); // apaga o ponto para o sorteio } } // função para mostrar número void numero_display(int m) { for (int j = 2; j < 9; j++) { digitalWrite(j, displaySeteSeg[m][j-2]); } }