Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Convierte 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
  }
}
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Arduino