Si aun no sabes como programar el sensor ultrasónico puedes verlo haciendo click aquí y si tampoco sabes como programar la pantalla LCD puedes aprender haciendo click en los siguientes enlaces; Parte 1 y Parte 2.
Objetivos
- Aprender a utilizar la pantalla LCD junto a un sensor ultrasónico
- Aprender a programar la pantalla LCD mientras se utiliza un sensor ultrasónico
- Practicar en la programación de un LCD 2x16
- Arduino Uno, Arduino picaro o similares
- Conector USB para arduino
- Sensor HC-SR04 (Sensor ultrasónico)
- Pantalla LCD
- Potenciómetro
- Protoboard
- Cables conectores
Circuito Arduino (Fritzing)
Se puede apreciar el esquemático para armar el circuito, no olviden que en tutoriales anteriores vimos como armar el circuito por si tienen dudas. Ademas se puede mencionar que el circuito para arduino uno es similar.
Advertencia: el pin 11, 10, 9, 8, 7 y 6 están corridos en un espacio con respecto a la programación, arreglare la imagen y la subiré nuevamente, si lo olvido, ruego me deje un comentario y lo arreglo.
Sketch de arduino#include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11 , 12); #define echoPin 5 // Pin eco #define trigPin 6 // Pin Trigger int maximumRange = 200; // Rango maximo int minimumRange = 0; // Rango minimo float duration, distance; // Duracion usada para medir la duracion void setup() { lcd.begin(16, 2); Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); //Medimos el tiempo que tarda en llegar el eco duration = pulseIn(echoPin, HIGH); //Calculamos la distancia distance = float (duration*0.017); //iniciamos el ciclo de la pantalla lcd PantallaLCD(); } void PantallaLCD(){ lcd.clear(); lcd.write("Distancia"); lcd.setCursor(0,1); lcd.write("d="); lcd.print(distance); lcd.write("cm"); delay(400); return; }
Conclusión
Es importante tomar en cuenta el ciclo de la pantalla lcd para el buen funcionamiento, ya que de no limpiar la pantalla (clear();) se acumularían los caracteres y se repetirían algunas letras.
No olvides visitar la pestaña tutoriales arduino, donde podrás encontrar la lista de tutoriales que he hecho hasta el momento. Como siempre muchas gracias por visitar mi blog y si tienen alguna consulta o consejo puede comentarlo por medio de este mismo blog.
porfavor, p0odrias poner la imagenm nueva plis
ResponderBorrarImagen nueva por favor!
ResponderBorrarme puedes decir porque utilizas 0.017 para calcula la distancia?
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarPorque no me sale nada en la pantalla lo conecte igual?
ResponderBorrarlo arreglaste? tengo el mismo error
Borrarporque nomas la pantalla rende y no apara rece nada
ResponderBorrarprende
ResponderBorrarsi la pantalla les parpadea cambien el pin 5 y 6 osea el 5 pongalo en el 6 y el 6 en el 5. :V
ResponderBorrarSoy principiante y me encanta programar, hice una modificación para usar en mi arduino nano, es un medidor de dioptrias de compensación para hacer retinoscopia. Mide distancia y con una formula me calcula las dioptrias (para optometria) y e funciono muy bien.
ResponderBorrar#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);modifique esto
#define echoPin 6 // Pin eco
#define trigPin 7 // Pin Trigger
int maximumRange = 200; // Rango maximo
int minimumRange = 0; // Rango minimo
float duration, distance; // Duracion usada para medir la duracion
float rx; //agregue esto
float diop; //agregue esto
void setup() {
lcd.begin(16, 2);
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
//Medimos el tiempo que tarda en llegar el eco
duration = pulseIn(echoPin, HIGH);
//Calculamos la distancia
distance = float (duration*0.017);
rx = float (1/distance)*100; // agregue esta formula
diop = rx;
//iniciamos el ciclo de la pantalla lcd
PantallaLCD();
}
void PantallaLCD(){
lcd.clear();
lcd.write("Dist Ret. Diopt. "); //modifique
lcd.setCursor(0,1);
lcd.write("d=");
lcd.print(distance);
lcd.write("cm ");
lcd.print(diop); // agregue
delay(1500);
return;
}
no funciona vete a la dick
Borrartu mama es hombre
concuerdo con el men de arriba ves y chinga tu madre chamaco pendejo
BorrarCONCUERDO CON ESOS 2 MENS VETE ALA DICK Y VE ENANOS ALBINOS CON SINDROME DE DOWN
Borraranonimo 3 verdad que esta bien pendejo el men, parece mujer que se regrese a la cocina y los enanos albinos con sindrome son lo maximo
ResponderBorrarlos que usan mayusculas son putos:v
VETE A ALA DICK Y TU PAPAP ES MUIJER
BorrarOye deja de insultar al buen hombre, tu mama es hombre y tu papa se baña con agua tibia. there´s your mom in four, my dick to myour mom is fuck
ResponderBorrarque te valga dick si quiero insultar al chamaco pendejo que se cree la verga por su codigo pedorro y ya deja de chingar o te reviento el recto a vergasos
Borrarsi tanto lo defiendes chupasela y cortese elpelo gay
Callate hijo de tu madre (por cierto es hombre y ademas la tiene chica)
ResponderBorrarLa mejor materia es tecnologia y es mi materia favorita (paseme profe)
Borraryour mom is man and like the pinis
ResponderBorrareso no me dijo tu gfa anoche
Borrarmy mom does not know this but something that shows is that you're gay and sucks first
BorrarTe voy a buscar para meterte la verga por pendejo y de paso a tu mama
Borraryour mom is a whore whore if you want to find me alive in mobs mobs so come and here I give birth to the mother
BorrarSI CONECTASTE Y EN LA PANTALLA NO APARECE NADA , ES PORQUE ESTAS HASTA EL EXTREMO OPUESTO DEL POT .. PUEDES GIRARLO O PUEDES CONECTAR LA TIERRA DONDE ESTA 5V Y EL DE LOS 5V CONECTARLO A TIERRA PARA QUE CAMBIE DE INMEDIATO(HAS EL CAMBIO CON EL ARDUINO APAGADO) .. SALUDOS
ResponderBorrarK TE VALGA BERGHA COMO LO CONECTE HDTPM, TU NO ME DICES COMO VIVIR MI VIDA, NADIE ME ENTIENDE, POR ESO JODETE ALV, SABES QUE TU MAMA ES HOMBRE Y TU PAPA COGIO CON SU GFE. TE AMO.
BorrarNo funciona, solo me muestra la distancia una sola vez, a la segunda vuelta me esta mostrando 0 cm
ResponderBorrar#include // Debe descargar la Libreria que controla el I2C
Borrar#include
LiquidCrystal_I2C lcd(0x3F, 16, 2);
long distancia;
long tiempo;
double dist1;
double dist2;
double vel;
int triger = 7;
int echo = 6;
void setup(){
lcd.backlight();
lcd.init();
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(triger,OUTPUT);
pinMode(echo, INPUT);
}
void loop(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("RADAR DE");
lcd.setCursor(0,1);
lcd.print("VELOCIDAD");
dist1 = 0;
dist2 = 0;
vel = 0;
distancia = ultrasonico();
Serial.print("Distancia "); Serial.print(distancia); Serial.println(" cm"); //Sacamos el resultado por el monitor serial
delay(1000); //Pequeña pausa antes de reiniciar el ciclo
while (distancia > 60) { //esperar hasta que la distancia sea menor a 60 cm
// no hace falta poner nada, seguirá asi mientras distancia :60
// cuando sea menor que 60 sale del while
distancia = ultrasonico();
Serial.print("Distancia "); Serial.print(distancia); Serial.println(" cm"); //Sacamos el resultado por el monitor serial
}
dist1 = ultrasonico();
micros(100);
dist2 = ultrasonico();
vel = ((dist1) - (dist2)) / (0.1);
micros(500);
muestroDatos();
}
int ultrasonico() {
digitalWrite(triger,LOW); // Apagamos el pulso ultrasónico
delayMicroseconds(5); // Pequeña pausa de estabilización
digitalWrite(triger, HIGH); // Envío del pulso ultrasónico
delayMicroseconds(10); // Pequeña pausa de estabilización
tiempo = pulseIn(echo, HIGH); // Función para medir el tiempo que transcurrido entre el envío del pulso ultrasónico y cuando el sensor recibe el rebote
return int(0.017*tiempo); // Fórmula para calcular la distancia usando la velocidad del sonido como constante
}
void muestroDatos() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("SU VELOCIDAD ES DE");
lcd.setCursor(0,1);
lcd.print( vel );
lcd.setCursor(4,1);
lcd.print("cm/s");
delay(50);
}