Hub 003 - Quem bater primeiro o botão acende o led - Arduino
- Detalhes
- angelo
- Acessos: 812
Básico - Hub 003
Quem pressionar primeiro o botão responde (4 participantes)
Sugerido por: Eduardo Leal
Objetivo
Quero realizar uma competição entre 4 equipes (lvermelho, amarelo, verde e laranja) com perguntas e respostas . Cada equipe teria o seu botão. Quando ao termino da pergunta a equipe que apertar primeiro o botão e ascender seu LED impede as demais de fazerem isso. E um botão de reset para que ao termino de cada rodada voltasse ao estado inicial para a próxima rodada de pergunta.
Componentes necessários
Referência |
Componente |
Quantidade |
Imagem |
Observação |
Protoboard | Protoboard 830 pontos | 1 | ![]() |
No mínimo utilizar protoboard com 830 pontos |
Jumpers | Kit cabos ligação macho / macho | 1 | ||
Led 5mm |
LED 5mm |
4 |
No projeto utilizamos 1 led vermelho, 1 led amarelo, 1 led verde e 1 led laranja Você também poderá utilizar LEDs de 5 ou 3 mm nas cores que desejar, alto brilho ou difuso. |
|
Resistor |
Resistor |
4 |
4 Resistores 150Ω (ou superiores) Se precisar usar outros valores, calcule o resistor apropriado para o led utilizado - Calcular Resistor ou use a Tabela Resistor para Leds |
|
Push Button |
Push button 6X6X5mm |
5 | ||
Arduino UNO R3 | Arduino UNO | 1 | ![]() |
Você poderá utilizar uma placa Arduino UNO original ou similar |
Montagem do Circuito
Referência
Projeto 02b - Led apaga com push button pressionado (pull-up interno do Arduino)
Código do Projeto (Sketch)
Faça o dowload e abra o arquivo hub003.ino no IDE do Arduino:
Ou se preferir, copie e cole o código abaixo no IDE do Arduino:
/*******************************************************************************
*
* HB 03 - Quem bater primeiro
* Sugerido por Eduardo Leal
* http://squids.com.br/arduino
*
*******************************************************************************/
byte led[4] = {3, 4, 5, 6}; // define os pinos Arduino para os leds
byte button[4] = {8, 9, 10, 11}; //define os pinos Arduino para os botões competição
byte resetButton = 12; // define o botão do reset
void setup(void) {
for (byte i=0;i<4;i++) {
pinMode(button[i], INPUT_PULLUP); // define os botões como pull up interno
}
for (byte i=0;i<4;i++) {
pinMode(led[i], OUTPUT); // define os leds como saída
}
pinMode(resetButton, INPUT_PULLUP); // define o botão reset como pull up interno
}
void loop(){
for (byte j=0;j<4;j++) {
if (!digitalRead(button[j])) {
delay(100);
acenderLeds(j); // chama a função acenderLeds() e passa o valor de j
resetar(); // chama a função resetar()
}
}
}
void acenderLeds(byte seletor) {
//seleciona qual led irá acender
switch (seletor) {
case 0: // jogador 1
digitalWrite(led[seletor],HIGH); // acende o led vermelho
break;
case 1: // jogador 2
digitalWrite(led[seletor],HIGH); // acende o led amarelo
break;
case 2: // jogador 3
digitalWrite(led[seletor],HIGH); // acende o led verde
break;
case 3: // jogador 4
digitalWrite(led[seletor],HIGH); // acende o led laranja
break;
}
}
void resetar() {
// loop vazio faz com que o programa interropa o processo até sair da condição, ou seja, pressionar o botão reset
while (digitalRead(resetButton)) {
}
// apaga todos leds após pressionar o botão reset
for (byte k=0;k<4;k++) {
digitalWrite(led[k], LOW);
}
}
Demonstração