// Definição de constantes para identificar os pinos (evita "números mágicos")
const int PINO_BOTAO = 2; // Entrada digital onde o botão está ligado
const int PINO_LED = 13; // Saída digital (LED integrado na maioria das placas)
// Variável para armazenar o estado de leitura do botão
int estadoBotao = 0;
void setup() {
// Configura a taxa de transmissão da porta série em bits por segundo (baud rate)
Serial.begin(9600);
// Configura o pino do LED como SAÍDA
pinMode(PINO_LED, OUTPUT);
/* Configura o pino do botão com o resistor de PULL-UP interno ativado.
Isto garante o nível lógico ALTO (5V) quando solto e BAIXO (GND) quando pressionado,
eliminando flutuações e a necessidade de um resistor externo na breadboard. */
pinMode(PINO_BOTAO, INPUT);
}
void loop() {
// Lê o valor digital presente no pino 2 (retorna HIGH ou LOW)
estadoBotao = digitalRead(PINO_BOTAO);
/* Como usamos INPUT_PULLUP, a lógica é invertida:
LOW -> Botão pressionado (ligado ao GND)
HIGH -> Botão solto (manter a 5V pelo resistor interno) */
if (estadoBotao == HIGH) {
digitalWrite(PINO_LED, HIGH); // Liga o LED
Serial.println("Botao pressionado -> LED LIGADO");
} else {
digitalWrite(PINO_LED, LOW); // Desliga o LED
Serial.println("Botao solto -> LED DESLIGADO");
}
// Pequeno atraso para estabilizar as leituras e evitar mensagens excessivas na porta série
delay(100);
}