Go Down

Topic: Problema comunicacion serie entre arduinos (Read 111 times) previous topic - next topic

fede9559

Aug 26, 2019, 08:01 pm Last Edit: Aug 26, 2019, 08:10 pm by surbyte Reason: Agregado de etiqueta de enlaces.
Hola buenos dias a todos, soy nuevo en el foro y este es mi primer post, siempre leo pero ahora me encuentro en un problema que no puedo solucionar con la informacion de las busquedas solamente.
no soy electronico sino tecnico electromecanico pero aficionado a la electronica.

detallo el problema lo mejor posible:

usando dos arduinos nano quiero comunicarlos entre si, uno de los arduinos va a mostrar datos en un display lcd (esclavo) y el otro va a enviarle datos (maestro) (para mas adelante usar rs-485) y mientras diseño el programa maestro y el esclavo, el esclavo funciono bien y al diseñar el maestro no funciona el codigo.
Transmito los datos por medio de una trama como indica este tutorial: Comunicación RS485 con Arduinol

los ejemplos que usa no me funcionan, pero si me funcionaron en el esclavo, el cual como tiene un display lcd uso la libreria para el lcd que viene en el IDE 1.8.9.
el problema esta en la lectura del segundo valor despues del inicio de trama, no lee lo que aca es "funcion" pero si lee si cargo la libreria LiquidCrystal y uso algunos comandos al aire, se entiende?

Code: [Select]

if (Serial.available() > 0){


        
    if (Serial.read() == 'a'){
      
      char funcion=Serial.read();

      Serial.print (funcion);

      if (funcion == 'l'){
       marcadorlimite_serie=Serial.parseInt();
      
      if (Serial.read() == 'f'){
       marcadorlimite=marcadorlimite_serie;
      }


justamente aca tengo el problema, y el serial.print (funcion) que puse para poder ver que hace el programa devuelve un cuadradito, no importa que le mande..


desde ya muchas gracias y saludos

PD: no se si deje bien el post y a su vez no se en donde podria estar la lista de los post que hago o participo, podrian indicarme? saludos

surbyte

Bueno lo primero que NO ESTAS VIENDO es que lees con el puerto serie, interpretas la lectura de dicho puerto y luego quieres enviar algo x el mismo puerto lo que no es posible.

Por eso cuando usas el LCD si funciona o en realidad lo hace en ambos casos.

Deberias usar SoftwareSerial con ambos NANOs y el Monitor Serie para ver las tramas.

lees y te comunicas entre ambos SofwareSeries o sea los puertos Virtuales porque el NANO solo tiene 1 puerto Hardware y x ese mismo lees lo que se este comunicando.

Me comprendes?

fede9559

Creo que no te entendi, estoy usando la pc como esclava y el arduino como maestro conectado por el usb, es decir uso el serie del usb, lo que me queres decir es que hay un solapamiento de los datos? recibir y enviar "en el mismo momento"?

a raiz de la respuesta en el otro post que me explico que quizas el problema estaba en cuando lee un caracter el otro tarda 10 ms en llegar, hice que el primer if (Serial.available() > 2) y ahi si funciona, envio dos caracteres y me devuelve el segundo,

pido disculpas por la supoerposicion de post, surbyte podrias juntar el otro post con este? o cito el otro link?

creo que lo que hice mal (ademas de los multiples posteos) es pretender la logica de analizar el puerto serie con if, que la rutina de arduino corre mucho mas rapido que lo que tardan en llegar los caracteres, y eso hace huecos.. sera que la libreria del LCD tiene delays? y no veia el error? si es que ese es mi error..




surbyte

Creo que te expresas mal entonces: Tu titulo dice: "Problema comunicacion serie entre arduinos"
Yo asumí que eran dos arduinos comunícándose.

Por que en lugar de hablar sobre supuestos, no colocas Todo tu código y uno entonces lo prueba y te dice, es tal o cual cosa?

Eso es lo que las normas del foro piden, siempre postear Todo el código, y no lo que tu imaginas que esta fallando.
Si supieras que falla no estarías preguntando no?

Go Up