Básico - Hub 002
Três leds e 4 botões (push buttons)
Sugerido por: Sara Manoelle Santos Silva ENVIAR SUGESTÃO
Objetivo
Tenho 4 botões e 3 LEDs, preciso que ao pressionar qualquer um dos 4 botões um LED acenda (no nosso exemplo o led vermelho), ao pressionar dois dos 4 botões outro LED acenda (no nosso exemplo o led amarelo) e ao pressionar três dos 4 botões o terceiro LED acenda (no nosso exemplo o led verde). Finalmente, ao pressionar os 4 botões ao mesmo tempo, todos leds acendem.
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
|
3 |
|
No projeto utilizamos 1 led vermelho, 1 led amarelo e 1 led verde.
Você também poderá utilizar LEDs de 5 ou 3 mm nas cores que desejar, alto brilho ou difuso.
|
Resistor |
Resistor
|
3 |
|
1 Resistor 100Ω e 2 Resistores 150Ω (ou superiores)
Se precisar usar outros valores, calcule o resistor apropriado para o led utilizado
|
Push Button |
Push button 6X6X5mm
|
4 |
|
|
Arduino UNO |
Arduino UNO R3 |
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 hub001.ino no IDE do Arduino: DOWNLOAD - hb002.ino
Ou se preferir, copie e cole o código abaixo no IDE do Arduino:
/*******************************************************************************
*
* HB 02 - Ascendendo leds com 4 botões
* Sugerido por Sara Manoelle Santos Silva
* http://squids.com.br/arduino
*
*******************************************************************************/
byte led[3] = {3, 4, 5}; // define os pinos Arduino para os leds
byte button[4] = {8, 9, 10, 11}; //define os pinos Arduino para os botões
byte x, y;
void setup(void) {
Serial.begin(9600);
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<3;i++) {
pinMode(led[i], OUTPUT);
}
}
void loop(){
x = 0, y = 0;
for (byte j=0;j<4;j++) {
x = digitalRead(button[j]); // define o valor de x (0 se pressionado e 1 se desligado)
y = y + x; // soma os valores de x para os 4 botões
}
Serial.println(y); // mostra o valor de x no monitor serial
delay(100);
acenderLeds(y); // chama a função acenderLeds e passa o valor de y
}
void acenderLeds(byte seletor) {
// apaga todos leds
for (byte k=0;k<3;k++) {
digitalWrite(led[k],LOW); // apaga todos os leds
}
//seleciona qual led irá acender
switch (seletor) {
case 3: // 1 botão acionado
digitalWrite(led[0],HIGH); // acende o led vermelho
break;
case 2: // 2 botões acionados
digitalWrite(led[1],HIGH); // acende o led amarelo
break;
case 1: // 3 botões acionados
digitalWrite(led[2],HIGH); // acende o led verde
break;
case 0: // 4 botões acionados
for (byte k=0;k<3;k++) {
digitalWrite(led[k],HIGH); //acende todos leds
}
break;
}
}
Observação: Acesso o monitor serial do IDE do Arduino para verificar os valores de y quando você pressionar 1 ou mais botões. Isto é importante para você entender bem o sketch utilizado.
Demonstração
Desafios
Com base neste projeto, resolva o seguinte desafio: Desafio 44
O anúncio abaixo ajuda a manter o Squids Arduino funcionando
Comentários