En el setup() te falta el serial.begin
juas!, pues es verdad, pero sigo teniendo un problema
parece que el comando en 8 bits lo lee correcto porque entra en el if y activa el led.
Pero el segundo numero que es en 16bits no lo interpreta correctamente, porque
el tiempo que envio (en milisegundos-por eso lo de 16bits)...no es correcto...
ahora queda así el código en arduino
// definir variables
unsigned int t_motor;
byte comando;
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);
t_motor=Serial.read();
Serial.println(t_motor,DEC);
delay(t_motor);
}
}
digitalWrite(13,LOW);
}
por ejemplo envio desde mathlab esto:
%borrar previos
delete(instrfind({'Port'},{'COM3'}));
%crear objeto serie
s = serial('COM3','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
%abrir puerto
fopen(s);
pause(3);
comando=99;
t_motor=2200;
fwrite(s,comando,'uint8');
pause(2);
fwrite(s,t_motor,'uint16');
a = fscanf(s,'%d')';
a
fclose(s);
delete(s);
clear s;
y lo que obtengo en a
es: a =
65535
alguna idea