Arduino Forum

International => Español => Software => Topic started by: Kothe on Jul 16, 2019, 05:37 am

Title: Ayuda con Serial.write()
Post by: Kothe on Jul 16, 2019, 05:37 am
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
Title: Re: Ayuda con Serial.write()
Post by: Jhony9625 on Jul 16, 2019, 05:47 am
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 (https://www.arduino.cc/reference/en/language/functions/communication/serial/write/)
Title: Re: Ayuda con Serial.write()
Post by: Kothe on Jul 16, 2019, 03:01 pm
Pero con Serial.print() puedo comunicarme con otro arduino ?
Title: Re: Ayuda con Serial.write()
Post by: Kike_GL on Jul 16, 2019, 03:51 pm
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() (https://arduwiki.perut.org/index.php/lowByte()).
Title: Re: Ayuda con Serial.write()
Post by: Kothe on Jul 16, 2019, 04:17 pm
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.
Title: Re: Ayuda con Serial.write()
Post by: Jhony9625 on Jul 16, 2019, 04:49 pm
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.
Title: Re: Ayuda con Serial.write()
Post by: surbyte on Jul 17, 2019, 03:52 am
Que tal si lees la informacion disponible en documentacion (libros y clases de youtube). Lo que preguntas es el capitulo 2 de cualquier libro.
Title: Re: Ayuda con Serial.write()
Post by: Kothe on Jul 17, 2019, 06:49 pm
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.
Title: Re: Ayuda con Serial.write()
Post by: surbyte on Jul 17, 2019, 11:57 pm
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 (http://arduino.perut.org/Arduino_18.htm)

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
Title: Re: Ayuda con Serial.write()
Post by: Kothe on Jul 18, 2019, 07:10 pm
Ahora nos entendemos. Muchas gracias!
Title: Re: Ayuda con Serial.write()
Post by: surbyte on Jul 18, 2019, 10:05 pm
Siempre te entendi.