Unidad 3, Práctica 5 de Arduino para la Sentencia if-else en C 2

Práctica: Control de ventilador con sensor ultrasónico

Objetivo:

Familiarizarse con la estructura condicional if-else en C mediante un proyecto práctico con Arduino.

Materiales:

Esquema:

Conecta el sensor ultrasónico, el ventilador y el relevador al Arduino según las especificaciones de pines definidas en el código y esquema proporcionado.

conexión arduino

Código:





// Definir los pines del sensor ultrasónico
const int trigPin = 2;
const int echoPin = 3;

// Definir el pin del VENTILADOR
const int fanPin = 13;

// Definir la distancia de activación en centímetros
const int distanciaActivacion = 10;

void setup() {
  // Inicializar el puerto serie
  Serial.begin(9600);
  
  // Configurar los pines
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(fanPin, OUTPUT);
}

void loop() {
  // Generar un pulso corto en el pin de disparo
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Leer el tiempo de eco del sensor
  long duracion = pulseIn(echoPin, HIGH);
  
  // Convertir el tiempo a distancia en centímetros
  int distancia = duracion * 0.034 / 2;
  
  // Imprimir la distancia en el monitor serie
  Serial.print("Distancia: ");
  Serial.print(distancia);
  Serial.println(" cm");
  
  // Verificar si la distancia es menor que la distancia de activación
  if (distancia < distanciaActivacion) {
    // Encender el Ventilador
    digitalWrite(fanPin, HIGH);
  } else {
    // Apagar el Ventilador
    digitalWrite(fanPin, LOW);
  }
  
  // Esperar un breve momento antes de la próxima lectura
  delay(100);
}



        

Explicación:

Se definen las constantes trigPin y echoPin que representan los pines del sensor ultrasónico, y fanPin que representa el pin del ventilador.

Se establece la distancia de activación en 10 centímetros mediante la constante distanciaActivacion.

En la función setup(), se inicia la comunicación serial a una velocidad de 9600 baudios utilizando Serial.begin(9600). Luego se configuran los pines trigPin, echoPin, y fanPin como salidas o entradas según corresponda mediante pinMode().

La función loop() se ejecuta repetidamente.

  1. Primero, se envía un pulso corto al pin de disparo del sensor ultrasónico para iniciar una medición.
  2. Luego, se mide la duración del eco utilizando la función pulseIn() en el pin echoPin. Esta duración es proporcional a la distancia al objeto.
  3. Se convierte la duración del eco en distancia en centímetros mediante una fórmula basada en la velocidad del sonido.
  4. Se imprime la distancia medida en el monitor serie.
  5. Se verifica si la distancia medida es menor que la distancia de activación establecida. Si es así, se enciende el ventilador (fanPin se establece en HIGH), de lo contrario, se apaga (fanPin se establece en LOW).
  6. Se espera un breve periodo de tiempo antes de realizar la próxima lectura.

Modificación:

  • Corregir el código para que funcione como un secador de manos