Bien pues continuo haciendo experimentos para el nuevo sistema de control y parece que da sus frutos, por ahora necesito conseguir una comunicacion bidireccional entre Arduino y Matlab, para monitorizar que va pasando por "su cabeza".
Por ahora de Arduino -> Matlab, me esta dandos ligeros problemas, ya que por alguna razón solo recibo desde matlab el primer dato, aunque desde el Arduino este mandado mas.
La comunicacion Matlab -> Arduino, funciona correctamente.
Os dejo un resumen del código que se necesita:
Primero arrancamos arduino con este código ( lo que hago básicamente es cambiar la velocidad de un motor desde matlab):
int ledPin = 13;
char * val ="0";
int vel = 120;
int numero = 0;
int tipoUnidad = 0;
int motor = 11;
void setup(){
Serial.begin(9600);
equilibrarMotores();
pinMode(ledPin, OUTPUT );
}
void loop(){
if (Serial.available() > 0) {
val[0] = Serial.read(); // lee el byte de entrada:
int num = atoi(val);
switch(tipoUnidad){
case 0:
numero += num*100;
tipoUnidad++;
break;
case 1:
numero += num*10;
tipoUnidad++;
break;
case 2:
numero += num;
analogWrite (motor,numero);
digitalWrite(ledPin, HIGH); // enciende el LED
delay(20); // espera por un segundo
digitalWrite(ledPin, LOW); // apaga el LED
delay(20);
numero = 0;
tipoUnidad=0;
break;
default:
break;
}
Serial.flush();
}
}
Luego arrancamos el Matlab y ponemos lo siguiente:
placa = serial( 'COM3' , 'BaudRate', 9600 );
fopen( placa );
fprintf(placa,'%s','160')
El problema de todo esto (al menos que me ha surgido a mi) es que recibimos bytes y hay que tratarlos desde Arduino, y espero que si lo que queremos es un control de vuelo, este parseo no consuma demasiado calculo en la cpu del Arduino, sino no valdrá para nada.
En el fprintf(placa,'%s','160'), puedes enviar cadenas más largas, tipo : 160145129, pero siempre (al menos para que este codigo funcione) en grupos de 3.
Se me olvidaba , Matlab posee una libreria para Arduuino de pago, (45€ creo), pero creo que no hay necesidad de pagar.
Un saludo.
martes, 14 de agosto de 2012
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario