Básico - Hub 004

Um botão e 3 leds (leds acendem por tempo que o botão fica pressionado)

 

Sugerido por: Raphael Zappacosta 

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 - Calcular Resistor ou use a Tabela Resistor para Leds

Push Button

Push button 6X6X5mm

1  
Arduino UNO R3 Arduino UNO 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

Código do Projeto (Sketch)

Faça o dowload e abra o arquivo hub004.ino no IDE do Arduino:

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

Desafios

Com base neste projeto, resolva o seguinte desafio:

Compartilhe:

Doações

Contribua pra manter o site online :)

Inscreva-se no canal Squids

Squids Arduino News

Básico - Projeto 98 Módulo Matriz de Led rítmico - MAX7219 Objetivo O objetivo deste projeto é criar um circuito para fazer com que os leds de uma matriz de leds pisquem de acordo com o ritmo d...

Básico - Projeto 97 Leds piscam de acordo com o som Objetivo O objetivo deste projeto é criar um circuito para fazer piscar vários leds de acordo com o ritmo de uma música. Para isso, vamos uti...

Desafio 89 - Projeto I13 Dez efeitos de iluminação com controle remoto Com base no projeto I13 - Como usar o Controle Remoto Infravermelho com Arduino resolva o seguinte desafio: 1. Com base...

Intermediário - Projeto 13 Usando o Controle Remoto IR com Arduino com leds Objetivo Utilizar o Controle Remoto Infravermelho junto com o Arduino e um fotorreceptor IR para controlar 6 leds de ...

Desafio 88 - Projeto I12 Cronômetro contador de voltas com sensor infravermelho Com base no projeto I12 - Cronômetro com pause controlado por leds infravermelhos - Arduino resolva os seguintes ...

Outros artigos

Mais: Projetos Básicos Desafios Projetos Intermediários Básico

Você está preparado?

Topo