Menu
CoddyTech

Piscar enquanto um botão alterna

Parte da seção Temporização sem delay do Journey de Arduino da Coddy. Lição 5 de 18.

Um sketch que nunca espera pode monitorar um botão e executar uma piscada ao mesmo tempo. Cada loop leva alguns microssegundos, então a placa verifica o botão milhares de vezes por segundo e detecta até mesmo um toque muito curto.

A piscada segue o padrão de millis(). O botão usa a verificação de borda da seção Inputs: aja quando o botão estiver pressionado agora e não estava pressionado no loop anterior. ! significa "não", então !wasPressed significa "não estava pressionado".

bool wasPressed = false;

void loop() {
  // o piscar: if (now - previous >= 500) { ... }

  bool pressed = digitalRead(buttonPin) == LOW;
  if (pressed && !wasPressed) {
    // o botão acabou de ser pressionado
  }
  wasPressed = pressed;
}

Coloque as duas partes em loop(), uma depois da outra, e não use delay() em nenhuma delas. Se a piscada esperasse 500 ms, um toque que começasse e terminasse durante a espera nunca seria detectado.

challenge icon

Desafio

Médio

Faça a placa executar duas ações ao mesmo tempo:

  • o LED vermelho no pino 13 alterna a cada 500 ms, cronometrado com millis()
  • cada vez que o botão é pressionado, o LED amarelo no pino 12 alterna: aceso, depois apagado, depois aceso

Um toque rápido deve funcionar a qualquer momento, e manter o botão pressionado alterna o LED amarelo apenas uma vez. Pressione Run, toque no botão e, em seguida, pressione Check.

Experimente você mesmo

const int redLed = 13;
const int yellowLed = 12;
const int buttonPin = 2;

void setup() {
  pinMode(redLed, OUTPUT);
  pinMode(yellowLed, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  // 1. alterne o estado do LED vermelho a cada 500 ms, usando millis()

  // 2. cada pressionamento do botão liga ou desliga o LED amarelo
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Temporização sem delay

Pratique por conta própria: Playground de Arduino