How to sending data from matlab to arduino?
조회 수: 184 (최근 30일)
이전 댓글 표시
I tried to learned some basic a sending data from matlab to arduino with a LED. i tried to turn on and off the LED if i changed some value in matlab. but the result that the LED is gived was always same. please help me to correct. my MATLAB code is
arduino=serial('COM3','BaudRate',9600); % create serial communication object on port COM3
fopen(arduino); % initiate arduino communication
answer = 0.2
fprintf(arduino,%f%,answer); % send answer to arduino
fclose(arduino); % end communication with arduino
and my arduino code is
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<0.2)
digitalWrite(ledPin,HIGH); // turn light on
else if(matlabdata>0.2)
digitalWrite(ledPin,LOW); // turn light off
}
}
댓글 수: 1
Yusof Zainol Abidin
2021년 1월 3일
did you manage to get the answer?? im having the same problem.. please help me..
답변 (1개)
Thang Pham
2021년 7월 16일
편집: Thang Pham
2021년 7월 16일
I think the answer for your problem is: Serial.read() reads a 1-byte char-type data from the serial communication, while your sent data from MATLAB is a float-type data.
To solve this problem:
either change your sent data to char type (use fprintf(arduino, '%s', char(2)))
or change your sent data to string type and change your receive method in Arduino so that your program can read a string "0.2" and then convert it to respective float number. See: https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/tofloat/ for converting string to float and https://www.arduino.cc/reference/en/language/functions/communication/serial/readstring/ for string reading.
Hope it could help you.
댓글 수: 1
Walter Roberson
2021년 7월 16일
fprintf(arduino,'%f\n',answer); % send answer to arduino
would send convert the numeric value in answer to character representation and send it, followed by newneline. Serial.ParseFloat() can then read the number; https://www.arduino.cc/reference/en/language/functions/communication/serial/parsefloat/
참고 항목
카테고리
Help Center 및 File Exchange에서 MATLAB Support Package for Arduino Hardware에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!