Go Down

Topic: Lecturas de distancia erróneas recibiendo datos de otro Arduino (Read 191 times) previous topic - next topic

Easton23

Buenas tardes,


Ante todo disculpadme porque igual es algo muy sencillo (soy novato en esto) y no he conseguido encontrar información al respecto en el foro.

Os cuento, tengo 2 arduinos ambos con sensores de distancia con chip VL53L0X.

Haciéndolos funcionar independientemente no tengo problemas y ambos leen correctamente lo que es les ponga delante, pero cuando quiero que Arduino2 envíe información a Arduino1 los datos que llegan son incorrectos con margenes de error enormes.

Me da la sensación que estoy teniendo problemas en la configuración de comunicación entre ellos, a ver que opináis:


Arduino1:

Code: [Select]
#include <Wire.h>
#include <VL53L0X.h>



void setup() {
  Serial.begin(9600);
  Wire.begin();
   
 }

void loop() {

int Arduino2 = Serial.read();
       

  Serial.print("Medida Arduino_2: ");Serial.println(Arduino2);
 
   }

 



Arduino2:

Code: [Select]
#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;
int Arduino2;


void setup() {
  Serial.begin(9600);   
  Wire.begin();
 
  sensor.init();
  sensor.setTimeout(350);
  sensor.startContinuous();
}

void loop() {
   
     Arduino2 = sensor.readRangeContinuousMillimeters();
     
     Serial.print(Arduino2);
     
     Serial.print("Medida Arduino_2: ");Serial.println(Arduino2); 

     
    }
 
   



Muchas gracias de antemano!

krnlpanic

Buenas,

Que Arduino usas? Si no es un Mega no puedes usar el puerto serie para comunicar con otro arduino y estar conectado al monitor serial, si podrias hacerlo usando software serial para comunicar los arduino y ver monitor al mismo tiempo.

Por otra parte, cada vez que haces un Serial.read() estas leyendo un caracter, por lo que debes hacer un bucle y ir sumando cada caracter a tu variable usando while (Serial.available() > 0)

Mirate este link, esta en inglés pero no conozco otro similar en español

https://forum.arduino.cc/index.php?topic=396450.0

Easton23

Buenas krnlpanic,


Uso un UNO, a ver si consigo algo de luz con el link que me adjuntas, muchas gracias.

Hay tanta información sobre como enviar datos por serial y tengo tan pocos conocimientos, que no soy capaz de entenderla.


Saludos!


krnlpanic

Prueba esto, yo no lo he probado si no te funciona me dices


Code: [Select]
String entradaSerial;

void setup() {
  Serial.begin(9600); //iniciamos serial
}

void loop() {
  while (Serial.available() > 0) { //bucle para recibir datos mientras el serial este disponible
    char recibido = Serial.read(); //recogemos el caracter
    entradaSerial = entradaSerial + recibido; //sumamos el caracter al string
  }
  //aqui tu codigo para tratar lo recibido
  //si recibes un numero, puedes usar
  //arduino2 = entradaSerial.toInt()
  entradaSerial = ""; //reseteamos el string
}


Recuerda que la variable int tiene un limite de 32767, si tu valor es mayor usa long
También tienes ejemplos en el propio IDE en el apartado Communication

Go Up