PROJETO 01

Controle de LED por Botão

(FASE 1)

Desenvolver um projeto utilizando três botões; cada botão pressionado deve acender um LED específico. Quando os três LEDs estiverem acesos, o programa deverá disparar um alarme.

Componentes

Qtd Descrição
01 Arduino Mega 2560
01 Protoboard
03 Push-Button
01 Buzzer
03 LEDs ( 01 Vermelho – 01 Amarelo – 01 Verde)
03 Resistores 10KΩ para os Push-Button
03 Resistores 220Ω para os Leds
- Jumpers

Instruções

  • Push-button nas portas digitais (2, 3 e 4)
  • LEDs nas portas digitais (10, 11 e 12)
  • Buzzer na porta digital (8)

Conhecimentos Requeridos

Observações Técnicas

Os resistores serão utilizados como limitadores de corrente.

Diagrama de Blocos

Diagrama de Blocos

Protótipo do Circuito

Protótipo do Circuito

Código do Projeto

Baixar .INO

// Projeto Buz_Led_Push
// Neste exemplo utilizamos somente portas digitais.
int ledVermelho = 10; 
int ledAmarelo  = 11;
int ledVerde    = 12;
int botaoVermelho = 2;  
int botaoAmarelo = 3;
int botaoVerde = 4;
int buzzer = 8;
void setup() {
  // put your setup code here, to run once:
  pinMode(ledVermelho, OUTPUT);
  pinMode(botaoVermelho, INPUT);
  pinMode(ledAmarelo, OUTPUT);
  pinMode(botaoAmarelo, INPUT);
  pinMode(ledVerde, OUTPUT);
  pinMode(botaoVerde, INPUT);
  pinMode(buzzer, OUTPUT);
}
void loop() {
  if ((digitalRead(botaoVermelho) == HIGH) && (digitalRead(ledVermelho) == LOW)) {
     digitalWrite(ledVermelho,  HIGH);  
     delay(500);
  }
  if ((digitalRead(botaoVermelho) == HIGH) && (digitalRead(ledVermelho) == HIGH)) {
     digitalWrite(ledVermelho,  LOW);  
     delay(500);        
   }
 
  if ((digitalRead(botaoAmarelo) == HIGH) && (digitalRead(ledAmarelo) == LOW)) {
     digitalWrite(ledAmarelo,  HIGH);    
     delay(500);
  }
  if ((digitalRead(botaoAmarelo) == HIGH) && (digitalRead(ledAmarelo) == HIGH)) {
     digitalWrite(ledAmarelo,  LOW);  
     delay(500);        
   }
 
  if ((digitalRead(botaoVerde) == HIGH) && (digitalRead(ledVerde) == LOW)) {
     digitalWrite(ledVerde,  HIGH);  
     delay(500);
  }
  if ((digitalRead(botaoVerde) == HIGH) && (digitalRead(ledVerde) == HIGH)) {
     digitalWrite(ledVerde,  LOW);  
     delay(500);        
   }
  if ( (digitalRead(ledVermelho)==HIGH) &&
       (digitalRead(ledAmarelo)==HIGH)  &&
       (digitalRead(ledVerde)==HIGH)) {
        digitalWrite(buzzer,HIGH);
       }
 
  if ( (digitalRead(ledVermelho)==LOW) ||
       (digitalRead(ledAmarelo)==LOW)  ||
       (digitalRead(ledVerde)==LOW)) {
        digitalWrite(buzzer,LOW);
       }
}
                    

Comentários sobre o Código

Entenda o que cada linha de comando faz dentro do cérebro do seu Arduino:

Declaração de Variáveis

int ledVermelho = 10;

Nesta linha, criamos uma variável do tipo int (inteiro) e atribuímos o valor 10. A partir de agora, o Arduino entende que "ledVermelho" se refere ao pino físico número 10.

pinMode(pin, modo)

Configura o pino especificado para se comportar como uma entrada (INPUT) ou uma saída (OUTPUT).

  • pinMode(ledVermelho, OUTPUT); -> Define o pino 10 como saída de energia (para o LED).
  • pinMode(botaoVermelho, INPUT); -> Define o pino 2 como entrada de sinal (para o botão).
Sintaxe: pinMode(pino, MODO);

digitalWrite(pin, valor)

Envia um sinal de 5V (HIGH) ou 0V (LOW) para um pino configurado como saída.

  • HIGH: O LED liga (recebe 5V).
  • LOW: O LED desliga (0V/Terra).
Sintaxe: digitalWrite(pino, HIGH/LOW);

digitalRead(pin)

Lê se o pino digital está recebendo energia (HIGH) ou se está conectado ao terra (LOW).

Exemplo: valPino = digitalRead(10); (Lê o estado do pino 10 e guarda na variável valPino).

delay(tempo)

Pausa a execução do programa por um determinado tempo medido em milissegundos.

Dica: 1000 milissegundos equivalem a exatos 1 segundo.

void setup()

Executada uma única vez quando o Arduino liga. Serve para as configurações iniciais do projeto.

void loop()

Executada infinitamente. Após chegar na última linha, o Arduino volta para a primeira linha do loop automaticamente.

Ambiente de Simulação

Protótipo Digital