Acerca de este proyecto
Este proyecto me brinda la información que necesito sobre el nivel del agua en un tanque de agua. Cuando el nivel es bajo, el LED verde está encendido. Cuando el nivel es medio, el LED amarillo está encendido. Cuando el nivel es ALTO, el LED rojo parpadea al mismo tiempo con un zumbador. La distancia desde el sensor hasta el nivel del agua se mide mediante el sensor ultrasónico y se imprime en la pantalla LCD junto con la temperatura en ese tanque. Este proyecto es parte de un proyecto más grande. La segunda parte constará de 6 LEDS de seguimiento montados en un círculo para indicar que la bomba está bombeando. Ver:https://create.arduino.cc/projecthub/MichDragstar/arduino-uno-or-trinket-pro-5v-6-chasing-leds-with-pot-and-pb-23a1d7 La tercera parte iniciará la bomba cuando el nivel es alto y detener la bomba cuando el nivel es bajo. (en construcción) Para el proyecto real utilizo un sensor ultrasónico impermeable, esto no cambiará el cableado ni el código. No sé qué pasa con las lecturas cuando el sensor está mojado (humedad), por lo que este proyecto es solo para darme información, el tercer proyecto se usa para las actividades de la bomba y se realizará mediante contactos magnéticos.
#include // Cargar la biblioteca de cristal líquido oneWire (ONE_WIRE_BUS); // Configure una instancia de oneWire para comunicarse con cualquier dispositivo OneWire // (no solo IC de temperatura Maxim / Dallas) Sensores de temperatura Dallas (&oneWire); // Pase nuestra referencia oneWire a Dallas Temperature.LiquidCrystal LCD (12, 11, 5, 4, 3, 2); // Crea un objeto de cristal líquido llamado LCDint trigPin =9; // Pin de disparo del sensor conectado al pin de Arduino 9int echoPin =7; // Pin Sensor Echo conectado al pin Arduino 7int myCounter =0; // declara tu variable myCounter y ponla a 0float pingTime; // tiempo para que el ping viaje desde el sensor al objetivo y vuelva a flotar targetDistance; // Distancia al objetivo en centímetrosfloat speedOfSound =776.5; // Velocidad del sonido en millas por horavoid setup () {Serial.begin (9600); pinMode (trigPin, SALIDA); pinMode (echoPin, ENTRADA); LCD.begin (16, 2); // Dile a Arduino que inicie tu LCD LCD 16x2.setCursor (0, 0); // Coloca el cursor de la pantalla LCD en la esquina superior izquierda, columna 0, fila 0 LCD.print ("Distancia:"); // Imprimir mensaje en la primera fila sensores.begin (); // Inicie la biblioteca pinMode (8, OUTPUT); // pin 8, 10, 13 pines de salida pinMode (10, SALIDA); pinMode (13, SALIDA);} bucle vacío () {digitalWrite (trigPin, LOW); // Establecer el pin de disparo bajo delayMicroseconds (2000); // Deje que la señal se estabilice digitalWrite (trigPin, HIGH); // Establece trigPin alto delayMicroseconds (15); // Retardo en estado alto digitalWrite (trigPin, LOW); // ping ahora se ha enviado delayMicroseconds (10); // Retraso en estado alto pingTime =pulseIn (echoPin, HIGH); // pingTime en microcegundos pingTime =pingTime / 1000000; // convierte pingTime en segundos dividiendo por 1000000 (microsegundos en un segundo) pingTime =pingTime / 3600; // convierte el tiempo de ping en horas dividiéndolo por 3600 (segundos en una hora) targetDistance =speedOfSound * pingTime; // Esto estará en millas, ya que declaramos la velocidad del sonido como kilómetros por hora; aunque vamos a convertirlo de nuevo a centímetros targetDistance =targetDistance / 2; // Recuerde que el ping viaja al objetivo y regresa desde el objetivo, por lo que debe dividir por 2 para la distancia real del objetivo. targetDistance =targetDistance * 160934.4; // Convierta millas a centímetros multiplicando por 160934,4 sensores.requestTemperatures (); // Envía el comando para obtener lecturas de temperatura LCD.setCursor (10, 0); // Coloca el cursor en la décima columna de la primera fila LCD.print (""); // Imprime espacios en blanco para borrar la fila LCD.setCursor (10, 0); // Establezca el Cursor nuevamente en la décima columna de la primera fila LCD.print ((int) (targetDistance + 0.5)); // Imprime la distancia medida LCD.print ("cm"); // Imprime tus unidades LCD.setCursor (0, 1); // Coloca el cursor en la primera columna de la segunda fila LCD.print (""); // Imprime espacios en blanco para borrar la fila LCD.setCursor (0, 1); // Establezca el Cursor nuevamente en la primera columna de la segunda fila if (targetDistance> 40) {LCD.print ("LEV LOW"); LCD.print (sensores.getTempCByIndex (0)); LCD.print ((carácter) 223); LCD.print ("C"); } else if (targetDistance <40 &&targetDistance> 20) {LCD.print ("LEV MED"); LCD.print (sensores.getTempCByIndex (0)); LCD.print ((carácter) 223); LCD.print ("C"); } else (targetDistance <20); {LCD.print ("LEV HIGH"); LCD.print (sensores.getTempCByIndex (0)); LCD.print ((carácter) 223); LCD.print ("C"); } retraso (2000); if (targetDistance> 40) {digitalWrite (13, HIGH); // LED verde ENCENDIDO} else {digitalWrite (13, LOW); // LED verde APAGADO} if (targetDistance <40 &&targetDistance> 20) {digitalWrite (8, HIGH); // LED amarillo ENCENDIDO} else {digitalWrite (8, LOW); // LED amarillo APAGADO} if (targetDistance <20) {digitalWrite (10, HIGH); // Retardo de encendido del LED rojo (2000); digitalWrite (10, BAJO); // LED rojo APAGADO} else {digitalWrite (10, LOW); // LED rojo APAGADO}}
Código
Archivo sin título C / C ++
#include // Cargar la biblioteca de cristal líquido ); // Configure una instancia de oneWire para comunicarse con cualquier dispositivo OneWire // (no solo IC de temperatura Maxim / Dallas) Sensores de temperatura Dallas (&oneWire); // Pase nuestra referencia oneWire a Dallas Temperature.LiquidCrystal LCD (12, 11, 5, 4, 3, 2); // Crea un objeto de cristal líquido llamado LCDint trigPin =9; // Pin de disparo del sensor conectado al pin de Arduino 9int echoPin =7; // Pin Sensor Echo conectado al pin Arduino 7int myCounter =0; // declara tu variable myCounter y ponla a 0float pingTime; // tiempo para que el ping viaje desde el sensor al objetivo y vuelva a flotar targetDistance; // Distancia al objetivo en centímetrosfloat speedOfSound =776.5; // Velocidad del sonido en millas por horavoid setup () {Serial.begin (9600); pinMode (trigPin, SALIDA); pinMode (echoPin, ENTRADA); LCD.begin (16, 2); // Dile a Arduino que inicie tu LCD LCD 16x2.setCursor (0, 0); // Coloca el cursor de la pantalla LCD en la esquina superior izquierda, columna 0, fila 0 LCD.print ("Distancia:"); // Imprimir mensaje en la primera fila sensores.begin (); // Inicie la biblioteca pinMode (8, OUTPUT); // pin 8, 10, 13 pines de salida pinMode (10, SALIDA); pinMode (13, SALIDA);} bucle vacío () {digitalWrite (trigPin, LOW); // Establecer el pin de disparo bajo delayMicroseconds (2000); // Deje que la señal se estabilice digitalWrite (trigPin, HIGH); // Establece trigPin alto delayMicroseconds (15); // Retardo en estado alto digitalWrite (trigPin, LOW); // ping ahora se ha enviado delayMicroseconds (10); // Retraso en estado alto pingTime =pulseIn (echoPin, HIGH); // pingTime en microcegundos pingTime =pingTime / 1000000; // convierte pingTime en segundos dividiendo por 1000000 (microsegundos en un segundo) pingTime =pingTime / 3600; // convierte el tiempo de ping en horas dividiéndolo por 3600 (segundos en una hora) targetDistance =speedOfSound * pingTime; // Esto estará en millas, ya que declaramos la velocidad del sonido como kilómetros por hora; aunque vamos a convertirlo de nuevo a centímetros targetDistance =targetDistance / 2; // Recuerde que el ping viaja al objetivo y regresa desde el objetivo, por lo que debe dividir por 2 para la distancia real del objetivo. targetDistance =targetDistance * 160934.4; // Convierta millas a centímetros multiplicando por 160934,4 sensores.requestTemperatures (); // Envía el comando para obtener lecturas de temperatura LCD.setCursor (10, 0); // Coloca el cursor en la décima columna de la primera fila LCD.print (""); // Imprime espacios en blanco para borrar la fila LCD.setCursor (10, 0); // Establezca el Cursor nuevamente en la décima columna de la primera fila LCD.print ((int) (targetDistance + 0.5)); // Imprime la distancia medida LCD.print ("cm"); // Imprime tus unidades LCD.setCursor (0, 1); // Coloca el cursor en la primera columna de la segunda fila LCD.print (""); // Imprime espacios en blanco para borrar la fila LCD.setCursor (0, 1); // Establezca el Cursor nuevamente en la primera columna de la segunda fila if (targetDistance> 40) {LCD.print ("LEV LOW"); LCD.print (sensores.getTempCByIndex (0)); LCD.print ((carácter) 223); LCD.print ("C"); } else if (targetDistance <40 &&targetDistance> 20) {LCD.print ("LEV MED"); LCD.print (sensores.getTempCByIndex (0)); LCD.print ((carácter) 223); LCD.print ("C"); } else (targetDistance <20); {LCD.print ("LEV HIGH"); LCD.print (sensores.getTempCByIndex (0)); LCD.print ((carácter) 223); LCD.print ("C"); } retraso (2000); if (targetDistance> 40) {digitalWrite (13, HIGH); // LED verde ENCENDIDO} else {digitalWrite (13, LOW); // LED verde APAGADO} if (targetDistance <40 &&targetDistance> 20) {digitalWrite (8, HIGH); // LED amarillo ENCENDIDO} else {digitalWrite (8, LOW); // LED amarillo APAGADO} if (targetDistance <20) {digitalWrite (10, HIGH); // Retardo de encendido del LED rojo (2000); digitalWrite (10, BAJO); // LED rojo APAGADO} else {digitalWrite (10, LOW); // LED rojo APAGADO}}
Esquemas
lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz