| ConfiguraΓ§Γ£o | BotΓ£o solto β lΓͺ | BotΓ£o premido β lΓͺ | ResistΓͺncia |
|---|---|---|---|
| Pull-up externo (10kΞ© β VCC) | HIGH (5V) | LOW (0V, vai a GND) | Entre pino e 5V |
| Pull-up interno (INPUT_PULLUP) | HIGH | LOW | Interna ao Arduino (~20β50kΞ©) |
| Pull-down (10kΞ© β GND) | LOW (0V) | HIGH (5V, vai a VCC) | Entre pino e GND |
pinMode(pino, INPUT_PULLUP). Isto elimina a necessidade de resistΓͺncia externa e Γ© a abordagem mais simples para botΓ΅es.Insere o botΓ£o na breadboard. Conecta um terminal ao pino D2 do header. Conecta o outro terminal ao GND.
No cΓ³digo usa pinMode(2, INPUT_PULLUP) β activa a resistΓͺncia pull-up interna. NΓ£o precisas de resistΓͺncia externa.
Fio D13 β 220Ξ© β LED β GND. O LED alterna de estado a cada pressΓ£o.
// SEM DEBOUNCE β conta mΓΊltiplas pressΓ΅es por toque
#define BTN_PIN 2
int cont = 0;
bool estado = false;
void setup() {
pinMode(BTN_PIN, INPUT_PULLUP);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (digitalRead(BTN_PIN) == LOW) { // Premido
estado = !estado;
digitalWrite(13, estado);
cont++;
Serial.println(cont); // VΓͺs nΓΊmeros a saltar?
}
}#define BTN_PIN 2
#define DEBOUNCE_MS 50 // 50 ms de debounce
bool ledState = false;
bool lastBtnState = HIGH;
unsigned long lastDebounce = 0;
bool reading = HIGH;
void setup() {
pinMode(BTN_PIN, INPUT_PULLUP);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool current = digitalRead(BTN_PIN);
if (current != lastBtnState) {
lastDebounce = millis(); // Reinicia temporizador
}
if ((millis() - lastDebounce) > DEBOUNCE_MS) {
if (current == LOW && reading == HIGH) {
ledState = !ledState;
digitalWrite(13, ledState);
Serial.println(ledState ? "ON" : "OFF");
}
reading = current;
}
lastBtnState = current;
}