Go Down

Topic: Ayuda con Serial.write() (Read 254 times) previous topic - next topic

Kothe

He estado mirando por aqui y por allá, google, youtube,foros...pero no encuentro lo que quiero.
Tengo una variable que puede ir desde 0 a 1250. va cambiando de valor cada cierto tiempo.
Y quiero mandar el valor de esa variable a otro arduino conectado, por medio de TX/RX.
Utilizando Serial.write().  Pero no lo consigo! me salen -1 y otros valores.

Por favor ayuda.

Gracias de antemano

Jhony9625

Por qué deseas hacerlo precisamente con Serial.write()? Esta función envía los datos en binario por lo que obtendrás valores en Bytes. Utiliza Serial.print().

Lee la documentación del Serial.write

Kothe

Pero con Serial.print() puedo comunicarme con otro arduino ?

Kike_GL

Ambos envian datos por el puerto serie. La diferencia entre ellos es como los interpretan.

Serial.write(val) solo envia el byte menos significativo de val. Como ya  sabes un byte son 8 bits osea 2^8 =256.

Serial.write(65); produce lo mismo que Serial.write(321); o Serial.write(577); o Serial.write(833);

321 - 256 = 65
577 - 512 = 65
833 - 768 = 65

En conclusion puedes usar Serial.write() pero cada ves tu variable int la debes descomponer en 2 bytes enviar cada byte y reconstruirlo en el otro Arduino.

Puedes usar la funcion lowByte().
Saludos, Kike_GL

Kothe

ya ves...como se complica la cosa por algo tan simple como pasar el valor de una variable.
Tenéis algún código simple o algún link a un código? Para poderlo ver claramente.

Jhony9625

En realidad no es nada complicado, simplemente envía la información con Serial.print() y obtendras tal cual lo que envíes en el otro micro.

surbyte

Que tal si lees la informacion disponible en documentacion (libros y clases de youtube). Lo que preguntas es el capitulo 2 de cualquier libro.

Kothe

Que tal si lees la informacion disponible en documentacion (libros y clases de youtube). Lo que preguntas es el capitulo 2 de cualquier libro.
capitulo 2....  No me refiero al Serial.print().  Los ejemplos que he visto de Serial.write() enviaban strings o eran muy complejos y no me han servido de nada.
Ya me busco la vida, no te preocupes.

surbyte

Lo que wuieres enviar es un entero. Serial.write envia bytes. Un entero esta formado por dos bytes.sigue siendo informacion del libro peto parece que no te gusta mi respuesta. Donde crees que lo aprendi yo?

Que tal este link

No digo que resuelva el problema,

Si envias algo wue supere 255 debes enviar dicho entero como
Code: [Select]
Serial.write(lowbyte(numero));
Serial.write(highbyte(numero));


En el arduino que lea recibiras un valor a y un b
El numero es b×256+a

Kothe

Ahora nos entendemos. Muchas gracias!

surbyte


Go Up