Início › Componentes › Botão
⬤ Iniciante

🔘 Botão de Pressão

Ler entradas digitais e controlar saídas com base no estado de um botão.

⏱️ Duração: 30 min
🧩 Componentes: 4× Botão + 1× LED

Como funciona um Botão?

O botão tem 4 pinos organizados em 2 pares ligados internamente. Quando pressionado, une os dois pares e fecha o circuito.

Pull-DOWN (externo)

Resistência de 10kΩ ao GND. Pino lê LOW em repouso e HIGH quando pressionado.

Pull-UP (interno)

Usa resistência interna do Arduino com INPUT_PULLUP. Pino lê HIGH em repouso e LOW quando pressionado. Sem resistências externas!

💡 Usa sempre INPUT_PULLUP neste kit — é mais simples e não precisa de resistências externas.

Exercício 1 — LED com Botão

🔌 Ligações

Arduino→Componente
Pino 2→Botão pino A
GND→Botão pino B
Pino 13→Resistência 220Ω → LED
GND→Cátodo LED
ex1_botao_led.ino
const int BTN = 2;
const int LED = 13;

void setup() {
  pinMode(BTN, INPUT_PULLUP);  // Pull-up interno
  pinMode(LED, OUTPUT);
}

void loop() {
  // Com INPUT_PULLUP: LOW = pressionado
  if (digitalRead(BTN) == LOW) {
    digitalWrite(LED, HIGH);   // Liga enquanto pressionado
  } else {
    digitalWrite(LED, LOW);    // Desliga quando solto
  }
}

Exercício 2 — Toggle (Liga/Desliga)

Cada pressão do botão alterna o estado do LED.

ex2_toggle.ino
const int BTN = 2;
const int LED = 13;
boolean estadoLed = false;
boolean ultimoEstadoBtn = HIGH;

void setup() {
  pinMode(BTN, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
}

void loop() {
  boolean estadoBtn = digitalRead(BTN);
  
  // Detetar flanco descendente (HIGH→LOW = pressão)
  if (estadoBtn == LOW && ultimoEstadoBtn == HIGH) {
    estadoLed = !estadoLed;                // Inverte
    digitalWrite(LED, estadoLed);
    delay(50);                              // Debounce
  }
  ultimoEstadoBtn = estadoBtn;
}

Exercício 3 — Múltiplos Botões

Cada botão controla um LED diferente.

ex3_multiplos_botoes.ino
int botoes[] = {2, 3, 4, 5};
int leds[]   = {9, 10, 11, 12};
int n = 4;

void setup() {
  for (int i = 0; i < n; i++) {
    pinMode(botoes[i], INPUT_PULLUP);
    pinMode(leds[i], OUTPUT);
  }
}

void loop() {
  for (int i = 0; i < n; i++) {
    if (digitalRead(botoes[i]) == LOW) {
      digitalWrite(leds[i], HIGH);
    } else {
      digitalWrite(leds[i], LOW);
    }
  }
}
🎯 Desafio: Combina os 4 botões para criar um instrumento musical — cada botão toca uma nota diferente no buzzer!
Próximo: Potenciómetro →