matlab与arduino的串行通信

matlab与arduino的串行通信,matlab,arduino,serial-communication,Matlab,Arduino,Serial Communication,我正在尝试使用以下ARDUINO代码和第二个MATLAB代码将数据从MATLAB发送到ARDUINO。这两个代码工作正常,当我按下1时,led亮起,当按下2时,led熄灭。但实际上,我想做的是,当matlab运行代码时,它会自动将1发送到arduino,并且led亮起。我试过改变,但做不到。当我试图运行第三个代码(如下所示)时,arduino状态led闪烁,显示它收到了一些东西,但连接到针脚13的实际led仍然熄灭 int ledPin=13; int matlabData; void set

我正在尝试使用以下ARDUINO代码和第二个MATLAB代码将数据从MATLAB发送到ARDUINO。这两个代码工作正常,当我按下1时,led亮起,当按下2时,led熄灭。但实际上,我想做的是,当matlab运行代码时,它会自动将1发送到arduino,并且led亮起。我试过改变,但做不到。当我试图运行第三个代码(如下所示)时,arduino状态led闪烁,显示它收到了一些东西,但连接到针脚13的实际led仍然熄灭

int ledPin=13;
int matlabData;

void setup() 
{
  pinMode(ledPin,OUTPUT);
  Serial.begin(9600);
}

void loop()
{

  if(Serial.available()>0) // if there is data to read
   {
    matlabData=Serial.read(); // read data
    if(matlabData==1)
      digitalWrite(ledPin,HIGH); // turn light on
    else if(matlabData==2)
      digitalWrite(ledPin,LOW); // turn light off
  }
}
(MATLAB)

(我的编辑代码)


区别如下:

answer = input('bla')
生成一个数字的答案,即答案为double类型。在第三种情况下,您编写了
answer='1'
,这是一个字符,因此实际上,变量
answer
在这两种情况下是不同的。尝试将第三部分中的代码更改为:

answer = 1;
或将fprintf命令更改为

fprintf(arduino, '%s', str2num(answer));

我已经尝试了两种解决方案,但仍然有一个相同的问题。我还尝试了这个fprintf(arduino,'%s',1);但是不能工作。那么第二个代码块工作,而第三个不工作?是否尝试再次包含while循环?%while answer%answer='1';fprintf(arduino,'%s',1));%将应答变量内容发送到arduino%end
answer = 1;
fprintf(arduino, '%s', str2num(answer));