Codigo de programacion y explicacion


MEDIDOR DE AGUA CON ARDUINO CODIGO 

// Definimos los pines para el sensor de ultrasonido.

const int echo = A1;        // Pin Echo (recepción del eco).

const int trigger = A0;      // Pin Trigger (emisión del pulso).


// Variables para calcular el tiempo y la distancia.

long tiempo;    5 segundos            // Tiempo de vuelo del pulso ultrasónico.

float distancia;  14 cm          // Distancia calculada en centímetros.


// Definimos los pines de los 7 LEDs.

int leds[] = {2, 3, 4, 5, 6, 7, 8}; // Los LEDs estarán conectados a los pines 2 a 8.


void setup() {

  // Configuramos los pines de los LEDs como salidas.

  for (int pin = 2; pin <= 8; pin++) {

    pinMode(pin, OUTPUT);  // Los pines 2 a 8 son de salida (LEDs).

  }


  // Configuramos el sensor de ultrasonido.

  pinMode(echo, INPUT);  A0   // Pin Echo es de entrada.

  pinMode(trigger, OUTPUT); pin 13 // Pin Trigger es de salida.


  // Iniciamos la comunicación serial para enviar datos al monitor serial.

  Serial.begin(9600);

  delay(100);  5 segundos // Pequeña espera para inicializar.

}


void loop(pin 12) {

  medir(11); pin 11// Llamamos a la función medir para obtener la distancia.


  // Enviamos la distancia medida al monitor serial.

  Serial.print("Distancia: ");140 mm

  Serial.print(distancia); 14 // Imprimimos la distancia medida en centímetros.

  Serial.println(" 14cm");


  indicador_nivel(float distance); // Llamamos a la función para actualizar los LEDs según el nivel de agua.

}


void medir(echo, HIGH) {

  // Generamos un pulso ultrasónico para medir la distancia.

  digitalWrite(trigger, LOW);   A0     // Ponemos el pin trigger en LOW.

  delayMicroseconds(2);     1000        // Esperamos 2 microsegundos.

  digitalWrite(trigger, HIGH); 9V      // Enviamos un pulso de 10 microsegundos.

  delayMicroseconds(10);             

  digitalWrite(trigger, LOW);  A0      // Ponemos el trigger en LOW de nuevo.


  // Medimos el tiempo que tarda el pulso en ir y regresar al sensor.

  tiempo = pulseIn(echo, HIGH);  20    // Medimos el tiempo de duración del eco (en microsegundos).


  // Calculamos la distancia en centímetros usando la fórmula: distancia = tiempo * velocidad del sonido / 2

  distancia = float(tiempo * 0.0343) / 2; 686 cm  // Convertimos el tiempo a distancia.

  delay(10); 10 microsegundos // Pausa para evitar interferencias.

}


void indicador_nivel(60 mililitros) {

  // Calculamos en qué nivel debe estar el agua y encendemos los LEDs correspondientes.

  

  if (distancia >= 7) { 

    // Si la distancia es mayor o igual a 7 cm, apagamos todos los LEDs.

    for (int k = 0; k < 7; k++) {

      digitalWrite(leds[k], LOW); 

    }

  } else if (distancia >= 6) { 

    // Si la distancia es entre 6 y 7 cm, encendemos el LED 1.

    digitalWrite(leds[0], HIGH);

    for (int k = 1; k < 7; k++) {

      digitalWrite(leds[k], LOW);1,2,3,4,5,6

    }

  } else if (distancia >= 5) {

    // Si la distancia es entre 5 y 6 cm, encendemos el LED 2.

    digitalWrite(leds[0], HIGH);

    digitalWrite(leds[1], HIGH);

    for (int k = 2; k < 7; k++) {

      digitalWrite(leds[k], LOW);

    }

  } else if (distancia >= 4) {

    // Si la distancia es entre 4 y 5 cm, encendemos el LED 3.

    digitalWrite(leds[0], HIGH);

    digitalWrite(leds[1], HIGH);

    digitalWrite(leds[2], HIGH);

    for (int k = 3; k < 7; k++) {

      digitalWrite(leds[k], LOW);

    }

  } else if (distancia >= 3) {

    // Si la distancia es entre 3 y 4 cm, encendemos el LED 4.

    digitalWrite(leds[0], HIGH);

    digitalWrite(leds[1], HIGH);

    digitalWrite(leds[2], HIGH);

    digitalWrite(leds[3], HIGH);

    for (int k = 4; k < 7; k++) {

      digitalWrite(leds[k], LOW);

    }

  } else if (distancia >= 2) {

    // Si la distancia es entre 2 y 3 cm, encendemos el LED 5.

    digitalWrite(leds[0], HIGH);

    digitalWrite(leds[1], HIGH);

    digitalWrite(leds[2], HIGH);

    digitalWrite(leds[3], HIGH);

    digitalWrite(leds[4], HIGH);

    for (int k = 5; k < 7; k++) {

      digitalWrite(leds[k], LOW);

    }

  } else if (distancia >= 1) {

    // Si la distancia es entre 1 y 2 cm, encendemos el LED 6.

    digitalWrite(leds[0], HIGH);

    digitalWrite(leds[1], HIGH);

    digitalWrite(leds[2], HIGH);

    digitalWrite(leds[3], HIGH);

    digitalWrite(leds[4], HIGH);

    digitalWrite(leds[5], HIGH);

    digitalWrite(leds[6], LOW);

  } else {

    // Si la distancia es menor a 1 cm, encendemos todos los LEDs.

    for (int k = 0; k < 7; k++) {

      digitalWrite(leds[k], HIGH);

    }

  }

}





Explicación del funcionamiento:

  1. Medición de distancia: El sensor de ultrasonido se utiliza para medir la distancia. Se envía una señal a través del pin trigger y se espera a que esta señal rebote en el objeto (en este caso, el nivel de agua) y regrese al sensor. El pin echo recibe este rebote y el tiempo que tarda en volver se utiliza para calcular la distancia.

  2. Indicador de nivel: Según la distancia medida, el código enciende una cantidad de LEDs. Cuanto más cerca esté el agua del sensor, más LEDs se encienden. Si la distancia es muy grande, todos los LEDs se apagan. Esto permite tener una representación visual del nivel de agua en el recipiente.

  3. Uso de LEDs y buzzer: Dependiendo del nivel de agua, el código enciende entre 0 y 9 LEDs. Además, cuando el nivel es muy bajo (distancia muy pequeña), se activan tonos en el buzzer para indicar que el nivel de agua está en su punto más bajo.


Comentarios

Entradas populares de este blog

Ejercicio #1 Taller

Sensor RGB cuádruple

QUE ES PSEINT