Hola gente!. Tengo un problema con una funcion. Al probarla en Proteus, anda perfecto. El problema es cuando la uso en Arduino Uno.
El problema es que en esta funciones que dejo:
// Se incluyen las librerias a utilizar
#include <LiquidCrystal.h>
//inicializa la libreria con los numeros de los pines conectados
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup(){
lcd.begin(16, 2);
}
void loop(){
mensajeBienvenida();
}
//muestra un mensaje en la linea superior
//m = cadena a mostrar<16
//x = posicion con respecto al eje x
//y= posicion con respecto al eje y
//d= DELAY, tiempo de espera
//l= 1 para limpiar la pantalla completa y 0 para dejar
void mostrarMensaje(String m,int x, int y, int d, int l){
if(l==1)
lcd.clear();
lcd.setCursor(x,y);
lcd.print(m);
if(d>0)
delay(d);
}
//Muestra un mensaje de Bienvenida
void mensajeBienvenida(){
int d=5000;
mostrarMensaje("Hola",centro("Hola"),0,d,1);
//A PARTIR DE ACA NO MUESTRA MAS NADA (SE APAGA EL LCD)
mostrarMensaje("Mensaje",centro("Mensaje"),1,d,0);
limpiarPantalla(1,0,15);
mostrarMensaje("Algo",centro("Algo"),1,d,0);
limpiarPantalla(1,0,15);
mostrarMensaje("Algo",centro("Algo"),1,d,0);
//SE PRENDE Y MUESTRA EL MSJ
mostrarMensaje("Presentan",centro("Presentan"),0,d,1);
//A PARTIR DE ACA NO MUESTRA MAS NADA (SE APAGA EL LCD)
mostrarMensaje("No se ve",centro("No se ve"),1,d,0);
}
//Devuelve el valor posicion, para ubicar la palabra en el centro
int centro(char *m){
int inic=strlen(m);
inic=(16-inic)/2;
return inic;
}
//Limpia los (x,1) de la pantalla
void limpiarPantalla(int y, int inic,int fin){
lcd.setCursor(inic,y);
for(int i=inic;i<=fin;i++)
lcd.print(" ");
}
EL conexionado del lcd usado es:
The circuit:
- LCD RS pin to digital pin 12
- LCD Enable pin to digital pin 11
- LCD D4 pin to digital pin 5
- LCD D5 pin to digital pin 4
- LCD D6 pin to digital pin 3
- LCD D7 pin to digital pin 2
- LCD R/W pin to ground
- LCD VSS pin to ground
- LCD VCC pin to 5V
- 10K resistor:
- ends to +5V and ground
- wiper to LCD VO pin (pin 3)
Desde ya, gracias. Espero poder solucionar este problema. Lo raro es que probado en Proteus, funciona perfecto.