Hub 004 - Um botão para acender 3 leds em tempos diferentes - Arduino

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 Resultado de imagem para protoboard 830v

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

×

Infomações do site / SEO








×

Adicionar Marcadores