Buenos dias, tengo una pequeña duda que he visto ya comentada por el foro pero no acabo de aclararme.
Principalmente tengo un codigo en matlab que envia datos a arduino.
En la primera parte recibo 4 byte,
el primero es independiente, los dos siguientes son el cuarto descompuesto, es decir en lugar de 22000 lo descompongo el dos byte que son 240 y 85, (typecast(int16(22000),'uint8')--Codigo matlab)
Estos los junto en arduino y lo uso como el valor 22000 otra vez.
mi problema reside en la segunda parte del codigo( esta vez desde matlab envio un floar descompuesto en 4 byte)
Con matlab typecast(single(3.4), 'uint8') == 154 153 89 64
typecast(uint8([154 153 89 64]), 'single') == 3.4000
Mi pregunta es la siguiente.
¿Con los valores de 154, 153, 89 64 como los recostruyo en arduino para formar el 3.4?
Os pongo el codigo que tengo de arduino que me verifica que he recibido esos codigos, ya que los envio de regreso a matlab para ver que son eso.
// definir variables
int t_motor;
byte comando, bytelow, bytehigh;
byte dato1[4];
//float dato1float;
void setup() {
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop() {
//Serial.flush();
delay(50);
if (Serial.available()>0){
delay(500);
comando=Serial.read();
if (comando==99){
digitalWrite(13,HIGH);
bytelow=Serial.read();
bytehigh=Serial.read();
t_motor=bytehigh+bytelow*256;
Serial.println(comando);
Serial.println(bytelow);
Serial.println(bytehigh);
Serial.println(t_motor);
delay(t_motor);
Serial.flush();
}
else if(comando==50){
digitalWrite(13,HIGH);
dato1[1]=Serial.read();
dato1[2]=Serial.read();
dato1[3]=Serial.read();
dato1[4]=Serial.read();
Serial.println(comando);
Serial.println(dato1[1]);
Serial.println(dato1[2]);
Serial.println(dato1[3]);
Serial.println(dato1[4]);
delay(500);
Serial.flush();
}
}
digitalWrite(13,LOW);
}
