Elegir con switch
Parte de la sección Temporización sin delay del Journey de Arduino de Coddy. Lección 8 de 18.
Cuando una variable puede tener varios valores y cada valor necesita su propio código, una cadena de if y else if se alarga. switch hace lo mismo y se lee como una lista:
switch (zone) {
case 0:
// se ejecuta cuando zone es 0
break;
case 1:
// se ejecuta cuando zone es 1
break;
default:
// se ejecuta cuando no coincide ningún caso (opcional)
break;
}switch salta al case cuyo número coincide y ejecuta las líneas que aparecen debajo. break sale de switch. Si olvidas un break, la placa también continúa con las líneas del siguiente caso; esto se llama caída al siguiente caso.
Aquí, la perilla se divide en cuatro zonas. analogRead() da un valor de 0 a 1023, y al dividirlo entre 256 se obtiene un número entero: 0 para el cuarto inferior, después 1, 2 y 3 en la parte superior. Cada zona muestra su propio color en el LED RGB.
Desafío
FácilConvierte la perilla en un selector de colores con switch:
- zona 0: rojo (ya escrito)
- zona 1: verde
- zona 2: azul
- zona 3: blanco (los tres encendidos)
Usa setColor() y termina cada caso con break;. Pulsa Run, gira la perilla y después pulsa Check.
Pruébalo tú mismo
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 o 3
switch (zone) {
case 0:
setColor(HIGH, LOW, LOW); // rojo
break;
// añade aquí las zonas 1, 2 y 3
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Temporización sin delay
2Máquinas de estados
Recordar el modoElegir con switchEstados con nombre usando enumMáquina de estados del semáforoCambiar de modo con un botónPractica por tu cuenta: Playground de Arduino