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.
Conecta los componentes según el esquema de conexiones siguiente:
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);
}
¡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!