Lembre-se do Modo
Parte da seção Temporização sem delay do Journey de Arduino da Coddy. Lição 7 de 18.
O pressionamento de um botão dura uma fração de segundo, mas o que ele inicia pode durar muito mais. Para continuar depois que o botão é solto, o sketch precisa se lembrar do que está fazendo. Uma variável para isso é chamada de estado ou modo:
int mode = 0; // 0 = desligado, 1 = piscandoDivida loop() em duas partes. Primeiro, as entradas apenas alteram o modo. Depois, o restante do loop faz o que o modo determina:
// 1. as entradas mudam o modo
if (digitalRead(blinkButton) == LOW) {
mode = 1;
}
// 2. o modo determina o que acontece
if (mode == 1) {
// pisca com millis()
} else {
digitalWrite(ledPin, LOW);
}Cada número representa uma coisa que o sketch pode estar fazendo. Escreva em um comentário o que cada número significa. Um sketch pode ter quantos modos forem necessários: 0, 1, 2, 3 e mais.
Desafio
FácilO botão verde está no pino 2 e o vermelho no pino 3.
- o verde define
modecomo 1, o vermelho define como 0 - quando
modeé 1, o LED no pino 13 pisca commillis(), 500 ms ligado e 500 ms desligado - quando
modeé 0, o LED fica apagado
Pressione Run, pressione o botão verde, solte-o e então pressione o vermelho. Depois, Check.
Experimente você mesmo
const int ledPin = 13;
const int blinkButton = 2; // verde
const int offButton = 3; // vermelho
int mode = 0; // 0 = desligado, 1 = piscando
unsigned long previousMillis = 0;
int ledState = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(blinkButton, INPUT_PULLUP);
pinMode(offButton, INPUT_PULLUP);
}
void loop() {
// 1. os botões apenas alteram o modo
// 2. depois, faça o que o modo determina
}
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