Go Down

Topic: Problema con Serial y LCD (Read 450 times) previous topic - next topic

manu_tgn

Buenas, resumiendo bastante lo que quiero hacer...

Tengo un Mega con una serie de instrucciones, entre ellas un rotary encoder que me sirve para lanzar por serial un texto u otro, según si giro hacia un lado u otro.

Code: [Select]

aVal = digitalRead(pinA); //Volvemos a leer el pinA
  if (aVal != pinALast){ //Si el valor leído es distinto al valor anterior, entonces hemos girado el encoder
         if (digitalRead(pinB) != aVal) {  // Si el pinB es distinto del pinA, rotamos en sentido horario
                         
       sentido = true;
     } else {                          // En caso contrario, rotamos en sentido Antihorario
       sentido = false;
       
     }

   if (sentido){
    Serial.println(selectora);
    }else{
    Serial.println(selectorb);
     }
  }
   pinALast = aVal;




lo que envía, como veis, es una variable, selectora o selectorb dependiendo de si rota a izquierda o derecha.

El problema viene cuando quiero ver por lcd la variable que estoy enviando con el rotary. si pongo en el código un lcd.print para que me envíe al lcd la variable con cada pulso que emite el rotary, entonces deja de funcionar bien, y envia aleatoriamente las variables sin tener en cuenta la dirección del giro.

Tengo los serial declarados arriba

Code: [Select]

Serial.begin (115200);             //Iniciamos la comunciación Serial USB
  Serial1.begin (115200);    //Iniciamos la comunicación Serial para el LCD


He probado a poner diferentes valores de Baudios, pero sigue sin funcionar.



rodripelto

Hola,

Muchas veces los problemas de escritura en los LCD son dados por la alimentación, sobre todo cuando hay componetes que consumen mucho como los servos. ¿Nos puedes indicar como estas alimentando el LCD y el Servo?.
Ademas configuras un puero serie para comunicar con el LCD Serial1.begin (115200),como si fueras a comunicar via serie pero luego hablas de que usas  lcd.print que es un metodo de la libreria para LCD comunicados I2C o conectados por pines.
¿Nos puedes aclarar si es un LCD comunicado RS232 o un LCD comunicado I2C o un LCD normal comunicado por 4 pines?
Esperamos tus comentarios
Si alguna respuesta ha solucionado tu problema, da las gracias marcándola como solucionada.

manu_tgn

No estoy usando ningún servo, lo que más consumo se lleva debe ser el lcd. El lcd está por I2c, se me olvidó comentarlo, conectados a SDA y SCL.

Tambien uso un rotary encoder, lo que hace es enviar  por el serial unos comandos, pero, si al mismo estoy mandando algo al lcd, el rotary encoder no funciona bien, manda los comandos aleatoriamente, si dejo de mandar datos al lcd, el rotary funciona perectamente.

Pensé que como arduino Mega tenía hasta tres serials, podría comunicar con ellos al mismo tiempo.

rodripelto

No estoy usando ningún servo.
JaJaJaJa. Pues te lo he puesto yo.

Si intentas mandar un texto ¿Tambien falla?.

El lcd está por I2c, se me olvidó comentarlo, conectados a SDA y SCL.
En aurduino mega entiendo que pin 20 y 21.¿ Puedes confirmar por favor?
Si alguna respuesta ha solucionado tu problema, da las gracias marcándola como solucionada.

manu_tgn

#4
Sep 22, 2017, 05:51 pm Last Edit: Sep 22, 2017, 05:57 pm by manu_tgn
Exato, 20 y 21.

Si mando un mensaje no hay problemas, de hecho la pantalla lcd va de lujo.


Creo que he dado con el problema... No es nada del lcd, el problema creo que es que no uso pulsador, sino interruptor, para seleccionar qué palabra es la que mando al lcd. Por lo que tengo el pin de entrada del pulsador continuamente leyendo el estado. entonces el pin de entrada del rotary encoder me da lectura falsa...


Probaré de poner un pulsador con una variable de estado, para que actúe como un conmutador, así libero el pin y creo que el rotary me leerá sin "interrupciones" cada pulso que envíe.

Go Up