segunda-feira, 15 de maio de 2017

Projeto do Kit Iniciante - Roleta Eletrônica com Display de 7 segmentos







Esse projeto é bem simples, mas bastante divertido. Utilizando um display de 7 Segmentos você vai construir uma roleta eletrônica para sorteio de 10 números.
A roleta eletrônica faz um sorteio de números entre 1 e 10 (neste caso, o '0' representa o número '10') mostrados no display. O sorteio do numero se dá ao pressionar o botão. Enquanto o botão não é pressionado, o display fica passando todos os números do sorteio.




Para esse projeto você vai precisar dos seguintes itens.

A montagem do projeto na protoboard é mostrada na figura acima. É importante lembrar que o código que mostramos aqui funciona para displays de 7 segmentos de cátodo comum. Esse display faz parte do kit iniciante NMK
Após fazer a montagem em sua protoboard, copie o código abaixo e cole no ambiente de programação do Arduino. Conecte sua placa Arduino e carrege seu código. É hora de testar!


//Matriz de acionamento do display de 7 segmentos.
//Cada linha represente quais segmentos devem ser ligados, no caso, 1 é ligado e 0 é desligado
int disp[10][8] = { { 0, 1, 1, 1, 1, 1, 1, 0 }, // = Digito 0 crescente
  { 0, 1, 0, 0, 1, 0, 0, 0 }, // = Digito 1
  { 0, 0, 1, 1, 1, 1, 0, 1 }, // = Digito 2
  { 0, 1, 1, 0, 1, 1, 0, 1 }, // = Digito 3
  { 0, 1, 0, 0, 1, 0, 1, 1 }, // = Digito 4
  { 0, 1, 1, 0, 0, 1, 1, 1 }, // = Digito 5
  { 0, 1, 1, 1, 0, 1, 1, 1 }, // = Digito 6
  { 0, 1, 0, 0, 1, 1, 0, 0 }, // = Digito 7
  { 0, 1, 1, 1, 1, 1, 1, 1 }, // = Digito 8
  { 0, 1, 1, 0, 1, 1, 1, 1 }
};   // = Digito 9

//Definição da porta que o botão ira usar
byte botao=13;

//Função para imprimir um numero no display de 7 segmentos.
//A matriz disp deve ser construida de acordo com a montagem do display
void numero_display(int m) {

  for (int j = 2; j < 10; j++) {
    digitalWrite(j, disp[m][j - 2]);
  }

}

void setup() {

  //inialização da função randomica para calculos de numeros aleatorios.
  randomSeed(analogRead(0));
  for (int i = 2; i < 11; i++)
  {
    pinMode(i, OUTPUT);
  }
  pinMode(11, INPUT);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  //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) == HIGH) {
    delay(500);
    //O processo do arduino é interrompido e o display mostra o numero sorteado.
    //O sortei volta rodar quando o botão é pressionado mais uma vez.
    while (digitalRead(botao) == LOW) {

    }
    //Delays são usados para que a informação do botão seja lida apenas uma vez. 
    delay(400);
  }


}








Nenhum comentário:

Postar um comentário