Menu
CoddyTech

Escolhendo com switch

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

Quando uma variável pode ter vários valores e cada valor precisa do seu próprio código, uma sequência de if e else if fica longa. switch faz o mesmo trabalho e funciona como uma lista:

switch (zone) {
  case 0:
    // é executado quando zone é 0
    break;
  case 1:
    // é executado quando zone é 1
    break;
  default:
    // é executado quando nenhum case corresponde (opcional)
    break;
}

switch salta para o case cujo número corresponde e executa as linhas abaixo dele. break sai do switch. Esqueça um break e a placa também continuará executando as linhas do próximo case, o que é chamado de falling through.

Aqui, o botão está dividido em quatro zonas. analogRead() fornece valores de 0 a 1023, e dividir por 256 resulta em um número inteiro: 0 para o quarto inferior, depois 1, 2 e 3 no topo. Cada zona exibe sua própria cor no LED RGB.

challenge icon

Desafio

Fácil

Transforme o botão em um seletor de cores com switch:

  • zona 0: vermelho (já escrito)
  • zona 1: verde
  • zona 2: azul
  • zona 3: branco (os três ligados)

Use setColor() e termine cada caso com break;. Pressione Run, gire o botão e depois Check.

Experimente você mesmo

const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void setColor(int red, int green, int blue) {
  digitalWrite(redPin, red);
  digitalWrite(greenPin, green);
  digitalWrite(bluePin, blue);
}

void loop() {
  int zone = analogRead(A0) / 256;   // 0, 1, 2 ou 3

  switch (zone) {
    case 0:
      setColor(HIGH, LOW, LOW);   // vermelho
      break;
    // adicione as zonas 1, 2 e 3 aqui
  }
}
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