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.
Desafio
FácilTransforme 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
}
}
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