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.
- 1 Arduino Uno
- Jumpers Macho-Macho
- 1 Protoboard
- 1 Display 7 Segmentos 1 Dígito
- 1 Chave Táctil Push Button
- 8 Resistores 300 Ohms
- 1 Resistor 10K Ohms
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);
}
}
//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