IOIO + Arduino UART
Después de investigar y mirar mucho en Internet he podido
avanzar en la comunicación entre el Arduino y el IOIO. Para hacer estas pruebas
he utilizado un IOIO OTG y un Arduino Mega 2560.
Para establecer la comunicación utilizamos el puerto serie
mediante UART, el Arduino Mega dispone de 3 puertos series aunque podríamos
utilizar otros pines.
Lo primero que tenemos que hacer en nuestro Arduino es
definir los puertos de comunicaciones 1 para la conexión con el PC y otro con
el IOIO a 38.400 Baudios.
void setup() {
Serial.begin(38400); //Comunicacion con el PC
Serial2.begin(38400);
//Comunicacion con el IOIO
}
Ya en el código tenemos que comprobar si la comunicación está
disponible y si es así leer lo que nos envíen:
If (Serial2.available()){
// Recibir
comunicacion desde el IOIO
ValorRecibido=Serial2.read();
if (ValorRecibido > 0) {
Serial.println(ValorRecibido);
}
}
Hasta aquí lo que tenemos que hacer en Arduino, en el IOIO
lo que hay que hacer es lo siguiente:
Definir en el MainActivity.java
en la clase looper las siguientes
variable:
private Uart uart_;
private
OutputStream out_;
private InputStream in_;
Y en el método setup:
@Override
protected void setup() throws
ConnectionLostException {
uart_ = ioio_.openUart(5, 6,38400,Uart.Parity.NONE,Uart.StopBits.ONE);
//rx
patilla 5 del IOIO
//tx patilla 6 del IOIO
out_ = uart_.getOutputStream();
in_ = uart_.getInputStream();
}
Dentro del método loop hacemos un envio de la información, que
yo he utilizado un contador que es un entero (int) que va avanzando hasta 255.
int contador;
contador++;
try {
// Enviamos datos
out_.write(contador);
}
catch (IOException e) {
e.printStackTrace();
}
if (contador==255){
contador =0;
}
En este sentido desde el IOIO al Arduino la comunicación
funciona correctamente y sin problema. Ahora queda la comunicación en el
sentido Arduino -> IOIO. Para hacer esta comunicación estoy probando algunos
métodos pero por ahora no he conseguido que funcione correctamente ninguna.