Simulink and arduino connection using instrumentation control toolbox

조회 수: 9 (최근 30일)
Shacks 2013년 5월 23일
댓글: Josephine Gotz 2016년 6월 15일
Hello, I am trying to send data from simulink to matlab using instrumentation toolbox. I have a 'constant block' connected to a 'to instrument block '. I want to turn a couple of lights on and off. (In reality i want to do something more complex but i need arduino to receive numbers from simulink(0-180)) As of now the arduino receives a signal but the arduino is not able to understand the received signal(I know this cause the receive light turns on when i run the simulation). The arduino code i am using is shown below
/************************* Private Variables(serial reading)*****************/ unsigned long loopTime, currentTime; const int serStrLen = 30; char serInStr[ serStrLen ]; // array that will hold the serial input string /*************************************************************/ const int ledPin = 13; const int ledPin2 = 12;
int ch; // Values to send on channels (duration of pulse minus start, in microseconds)
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT); // Set servo pin as an output pin
Serial.begin(9600); // connect to the serial port
void loop() {
if( readSerialString() )
ch = abs(atoi( serInStr ));
if (ch==5 )
digitalWrite(ledPin2, LOW);}
{digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin, LOW);}
/************* Serial Reading ************************************/
uint8_t readSerialString() { if(!Serial.available()) { return 0; } delay(10); // wait a little for serial data
memset( serInStr, 0, sizeof(serInStr) ); // set it all to zero
int i = 0;
while(Serial.available() && i<serStrLen ) {
serInStr[i] =; // FIXME: doesn't check buffer overrun
return i; // return number of chars read
The know the above code works because when I send numbers via serial monitor, it works how it is supposed to.But when i try to send number 5 via simulink, the arduino does no respond the same way.
I am guessing i have to set a particular datatype in the 'to instrument' box or the ascii format string section in the 'to instrument' box settings.
Pls Help, any help would be appreciated.
  댓글 수: 2
Shacks 2013년 5월 23일
Update:: I noticed, the simulink model kind of works, I am unable to send 2 or three digit number, The arduino responds as if i am sending 2 or 3 separate single digit number. So now the question is , how do i send 2 or 3 digit numbers to arduino ?
Josephine Gotz
Josephine Gotz 2016년 6월 15일
Hey, did you manage to solve this? I think maybe I have a similar problem. Thanks

댓글을 달려면 로그인하십시오.

채택된 답변

Jeremy 2013년 10월 16일
hi Shacks, I have a quick question for you: how did you configure your 'to instrument'? i.e. under 'hardware configuration'I am wondering if that is my problem. I am not having any luck getting the simplest toy model, a constant-connected-to-a'to instrument' model to build. I get a generic 'errors encountered while building' error.

추가 답변 (2개)

Shacks 2013년 5월 30일
I feel like i am talking to myself, anyways future reader(s) i solved it, just type in '%i\n' in ascii string format setting.

Shacks 2013년 10월 16일
Under output format, i selected ASCII Under format string '%i\n' Time out : 10 Buffer Size :8192 Interface: Serial Port: Select the right one Baudrate:9600
obviously the hardware setting should match to that of arduino. Under instrument initialization I made no changes.
Hope this helps.


Help CenterFile Exchange에서 Arduino Hardware에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by