Contactar con TUTO2002

1.14 Envía_Recibe

Voy a necesitar establecer un sistema de comunicación / visualización de datos, entre
Arduino y nuestro PC (Processing).

  La Puerta Serie del Arduino es el canal adecuado y en la Librería Serie tenemos ejemplos de cómo utilizarla.

 
Pero tenemos los siguientes problemas:
  •  Las variables tipo byte solo admiten valores comprendidos entre -128 y 127 (claramente insuficientes).
  • En Processing los enteros (int)  son de 4 bytes mientras que en Arduino son de 2 bytes. Por lo tanto el equivalente en Arduino es un “long”.
  • En Processing entre las funciones estandar solo tenemos una que lee bytes y nos devuelve su valor como entero.

read()

  • Para que Procesing pueda leer los datos enviados tenemos que descomponer/trocear  el valor en sus bytes y mandarlos uno a uno. Posteriormente en Processing tenemos que recomponer el valor operando con los bits.
 Esta es la solución que he encontrado (puede serviros`para otras aplicaciones)
 
En un futuro puede servirnos para:
  • Conectar un GPS (comunicaciones serie)
  • Añadir un segundo Arduino como "esclavo" (gestiones la radio y/o otros sensores)
  • Etc

Notas Posteriores:

 

Todo lo anterior es valido,   pero……

 

Cuando he tratado de comunicarme en sentido contrario

Processing > Arduino

me han surgido un motón de problemas.

No se recibían  los Bytes que enviaba

Se recibía lainformación,  pero desordenada

Etc.

 Muchos por culpa mía y otros por un funcionamiento extraño de las comunicaciones 

 

Como siempre me salte la regla de oro

 Ir construyendo el programa paso a paso Y comprobando que va funcionando

Lo quise hacer todo de golpe

 

Los problemas/errores se acumularon y ha sido una locura el depurarlos

 

Solución:

Trocear en partes elementales el programa e ir probando una a una

 !!!!!! Sorpresa  !!!!!!!

 

Cuando Processing se pone en comunicación con Arduino,

Arduino necesita un tiempo para “despertarse”. 

 

En caso de no darle este tiempo los bytes se pierden.

 

En mi caso necesita un mínimo

delay (1400);

 

En Código he adjuntado unos programas elementales para que lo comprobéis.

 
 

CODIGO ( Arduino y Processing)

Comments