Menu
CoddyTech

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 = piscando

Divida 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.

challenge icon

Desafio

Fácil

O botão verde está no pino 2 e o vermelho no pino 3.

  • o verde define mode como 1, o vermelho define como 0
  • quando mode é 1, o LED no pino 13 pisca com millis(), 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
}
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