Estoy intentando comunicar dos arduinos de forma que uno esté continuamente pasando un valor al otro, la idea es que sea la lectura de un sensor. Y que el otro la reciba.
El arduino que manda los datos ejecuta el siguiente código:
int numero = 100; // contador
void setup() {
Serial.begin(57600); // Velocidad de la transmisión y apertura del puerto
}
void loop() {
Serial.print(numero);
numero++;
delay(100);
}
El que recibe los datos compila, lo siguiente:
int datoserial = 0; // variable para guardar el dato que se envía
int redPin = 13;
void setup() {
pinMode(redPin, OUTPUT);
Serial.begin(57600); // Velocidad de la transmisión y apertura del puerto
}
void loop() {
digitalWrite (redPin, LOW); // Apaga el Led conectado al pin 13
datoserial = Serial.read(); // guardamos el valor en la variable
if (datoserial == 107){
digitalWrite(redPin, HIGH); // Enciende el Led conectado al pin 13
}
}
}
Tengo conectado el Tx con Rx y las masas en común.
El problema es que cuando recibo datos los guarda de uno en uno,
¿cómo podría hacer para que reciba un 100 y el arduino que lo recibe guarde un 100 en vez de un 1 luego un 0 y 0.
Noter muchisimas gracias y siento lo de los tags pero esque soy nuevo en el foro
Si quiero pasar dos datos, lo que he pensado es en separarlos por un valor (0 y 1) pero no sé como hacer la lectura correcta, tengo este código pero no me almacena bien los datos por separados.
En relación al arduino que pasa los valores:
int numero1 = 100; // contador
int numero2 = 999;
void setup() {
Serial.begin(57600); // Velocidad de la transmisión y apertura del puerto
}
void loop() {
Serial.println(numero1);
numero1++;
Serial.println("0");
Serial.println(numero2);
numero2++;
Serial.println("1");
delay(100);
}
El arduino que hace la lectura:
int datoserial1 = 10; // variable para guardar el dato que se envía
int datoserial2=10;
int dato=0;
void setup() {
Serial.begin(57600); // Velocidad de la transmisión y apertura del puerto
}
void loop() {
if (Serial.available()) {
dato=Serial.parseInt();
if(dato==1) {
datoserial1=Serial.parseInt();
}
if(dato==0) {
datoserial2=Serial.parseInt();
}
Serial.println(datoserial1);
Serial.println(datoserial2);
}
}
Si los valores que quiero que se pase entre un arduino y otro son dos valores de dos sensores que van con decimales; ¿cómo puedo hacer para que se reciban bien?
el decimal va con puntos decimales, no con comas
Ahh ahora comprendo, estas pasando enteros.
Si tiene decimales, entonces haz esto, define cuantos decimales envias, supongamos 1.
Entonces multiplicas por 10 y truncas el número flotante.
Supongamos 34.5 es la temperatura a enviar.
Multiplcas por 10, queda 345. Eso es lo que envias, del otro lado recibirás 345 que divides para recuperar el dato correcto.
si fuera 37.0 grados o 37 a secas igual lo multiplicas por 10 y envias 370 y luego decodificas de algún modo en 37 nuevamente.
Muy facil.
NOTA: todo esto porque estas usando datoserial1=Serial.parseInt(); para decodificar los datos recibidos por el serial.
La última duda que tengo es si estoy pasando dos valores de dos sensores distintos para recibirlos y poder identificarlos correctamente simplemente con poner comas entre ellos es bastante? o sería recomendable poner algo más para que identifique primero de que sensor se trata, lo que tengo compilado es:
if (Serial.available()){
pH=Serial.parseInt();
EC=Serial.parseInt();
valorpH = float(pH)/100.0;
valorEC = float(EC)/100.0;
Serial.println("Valor de ph");
Serial.println(valorpH);
Serial.println("Valor de EC");
Serial.println(valorEC);
}
Y el que manda los datos;
Serial.print(sensorpH);
Serial.print(",");
float resistanceEC = OpenAquarium.readResistanceEC(); //EC Value in resistance
float EC = OpenAquarium.ECConversion(resistanceEC); //EC Value in µS/cm
int sensorEC=EC*100; //*100 para quitar los decimales
Serial.print(sensorEC);
Serial.print(",");
}
hola como va?...
yo estuve intentando tambien separar los valores que me llegan y guardarlos en distintas variables, pero no hay caso solo lee los valores juntos por ejemplo - 65,45, - y y lo que necesito es poner en una variable 65 y en otra 45. alguien me puede dar una mano ?? ya se me seco el cerebro..
asi codifique el receptor :
if (Serial.available()){
ser1=rss.parseInt();
ser2=Serial.parseInt();
Serial.println("el valor es..");
Serial.println(ser1);
}
pero en el monitor me muestra 65,45, y no lo separa.