Início
/
Projetos Arduino
/
Squids Hub
/
Básico
/
Hub 004 - Um botão para acender 3 leds em tempos diferentes - Arduino
Hub 004 - Um botão para acender 3 leds em tempos diferentes - Arduino
Angelo Luis Ferreira | 13/04/2020
Acessos: 16.838
Básico - Hub 004
Um botão e 3 leds (leds acendem por tempo que o botão fica pressionado)
Sugerido por: Raphael Zappacosta ENVIAR SUGESTÃO
Objetivo
Tenho 1 botão (push button) e 3 LEDs. Se eu pressionar o botão, acende o LED 1. Se eu manter pressionado o botão por 3 segundos, acende o LED 2 e se manter pressionado por 5 segundos, acende o LED 3. Ao soltar o botão todos os LEDs se apagam.
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, 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
|
3 |
|
3 Resistores 150Ω (ou superiores)
Se precisar usar outros valores, calcule o resistor apropriado para o led utilizado
|
Push Button |
Push button 6X6X5mm
|
1 |
|
|
Arduino UNO |
Arduino UNO R3 |
1 |
|
Você poderá utilizar uma placa Arduino UNO original ou similar
|
Montagem do Circuito
Referências
Projeto 02b - Led apaga com push button pressionado (pull-up interno do Arduino)
Funções temporizadoras - millis() - Documentação de Referência do Arduino
Como usar temporizadores no Arduino
Código do Projeto (Sketch)
Faça o dowload e abra o arquivo hub004.ino no IDE do Arduino: DOWNLOAD - hb004.ino
Ou se preferir, copie e cole o código abaixo no IDE do Arduino:
/*******************************************************************************
*
* HB 04 - Três leds e um botão
* Sugerido por Raphael
* Autor: Angelo Luis Ferreira
* http://squids.com.br/arduino
*
*******************************************************************************/
const byte led[] = {3, 5, 7};
const byte button = 9;
uint32_t startPress;
uint32_t lastPress;
uint32_t serialTimer;
boolean control = 0;
boolean state;
void setup(void) {
for(byte i=0; i<3; i++) {
pinMode(led[i], OUTPUT);
}
pinMode(button, INPUT_PULLUP);
Serial.begin(9600);
} // end setup
void loop(){
state = digitalRead(button); // lê o estado do botão
// verifica se o botão foi pressionado com todos leds apagados
if (!state && control) {
startPress = millis();
control = !control;
}
//verifica se o botão permanece pressionado
if (!state && !control) {
lastPress = millis() - startPress;
digitalWrite(led[0], HIGH);
if (lastPress >= 3000) digitalWrite(led[1], HIGH);
if (lastPress >=5000) digitalWrite(led[2], HIGH);
} else {
for (byte i=0; i<3; i++) digitalWrite(led[i], LOW);
startPress = millis();
lastPress = 0, control = 0;
}
// mostra valores no monitor serial (opcional)
if (millis() - serialTimer >= 500) {
Serial.print(state);
Serial.print(" | ");
Serial.print(control);
Serial.print(" | ");
Serial.println(lastPress);
serialTimer = millis();
}
} // end loop
Obs. Ao abrir o monitor serial do IDE do Arduino visualizaremos os valores das variáveis "state", "controle" e "lastPress":
Vídeo
O anúncio abaixo ajuda a manter o Squids Arduino funcionando
Comentários