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:
#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:
#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!
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
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!
Prueba esto, yo no lo he probado si no te funciona me dices
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