Práctica 1, Tercer Parcial: Uso de la sentencia switch en C

Descripción:

En esta práctica, utilizarás un sensor de proximidad ultrasónico para medir la distancia a un objeto. Según la distancia medida, controlarás diferentes dispositivos como un ventilador, un buzzer y LEDs.

Materiales:

Esquema de Conexiones:

Conecta los componentes según el esquema de conexiones siguiente:

conexión arduino

Código:





// Definir pines
const int trigPin = 2;
const int echoPin = 3;
const int fanPin = 13;
const int buzzerPin = 9;
const int ledPin1 = 12;
const int ledPin2 = 11;
const int ledPin3 = 10;

// Definir constantes para distancias umbral
const int nearThreshold = 25;    // Umbral para "cerca"
const int mediumThreshold = 35;  // Umbral para "medio"
const int farThreshold = 65;     // Umbral para "lejos"

void setup() {
  // Inicializar pines
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(fanPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  
  // Inicializar el puerto serial para depuración
  Serial.begin(9600);
}

void loop() {
  // Medir la distancia usando el sensor de proximidad
  long duration, distance;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration / 2) / 29.1;

  // Imprimir la distancia medida para depuración
  Serial.print("Distance: ");
  Serial.println(distance);

  // Utilizar la sentencia switch case para actuar según la distancia medida
  switch (distance) {
    case 0 ... nearThreshold:
      // Cerca: Encender LED 1, apagar los demás dispositivos
      digitalWrite(fanPin, LOW);
      digitalWrite(buzzerPin, LOW);
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      break;
    case nearThreshold + 1 ... mediumThreshold:
      // Medio: Encender LED 2 y LED 3, apagar los demás dispositivos
      digitalWrite(fanPin, LOW);
      digitalWrite(buzzerPin, LOW);
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, HIGH);
      break;
    case mediumThreshold + 1 ... farThreshold:
      // Lejos: Encender LED 3, apagar los demás dispositivos
      digitalWrite(fanPin, LOW);
      digitalWrite(buzzerPin, LOW);
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, HIGH);
      break;
    default:
      // Distancia desconocida: Apagar todos los dispositivos
      digitalWrite(fanPin, HIGH);
      digitalWrite(buzzerPin, HIGH);
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      break;
  }
  
  // Esperar un poco antes de la próxima medición
  delay(100);
}



        

Instrucciones de la Práctica:

  1. Construye el circuito según el esquema de conexiones proporcionado.
  2. Carga el código en tu placa Arduino.
  3. Observa la salida de depuración (distancia medida) en el monitor serial.
  4. Coloca objetos a diferentes distancias del sensor de proximidad para ver cómo cambian los dispositivos controlados (ventilador, buzzer y LEDs) según la distancia medida.
  5. Experimenta ajustando los umbrales de distancia y las acciones asociadas en el código.

¡Esta práctica te ayudará a comprender mejor cómo funciona la sentencia switch case y cómo puedes usarla para controlar diferentes dispositivos según las condiciones!

Modificaciones:

  1. Variar el código de tal manera que haga lo contrario.