Sending char string from matlab to arduino using serial com

2 views (last 30 days)
Hi i am trying to simply send the character string '<180>' to arduino from matlab using serial communication in order to light a led. for some reason arduino isnt receiving the correct data. if i type <180> into the serial monitor on the arduino software the led lights up. any help is appreciated.
matlab code:
%% Serial communication with Arduino
x = serial('COM4','BAUD',9600);
fopen(x);
% a= input('Press 1 to turn ON LED & 0 to turn OFF:');
a = '<180>';
fprintf(x,'%s',a);
pause(4)
fclose(x);
Arduino code:
const byte numChars = 32;
char receivedChars[numChars];
boolean newData = false;
void setup() {
Serial.begin(9600);
Serial.println("<Arduino is ready>");
pinMode(13, OUTPUT);
}
void loop() {
recvWithStartEndMarkers();
showNewData();
}
void recvWithStartEndMarkers() {
static boolean recvInProgress = false;
static byte ndx = 0;
char startMarker = '<';
char endMarker = '>';
char rc;
while (Serial.available() > 0 && newData == false) {
rc = Serial.read();
if (recvInProgress == true) {
if (rc != endMarker) {
receivedChars[ndx] = rc;
ndx++;
if (ndx >= numChars) {
ndx = numChars - 1;
}
}
else {
receivedChars[ndx] = '\0'; // terminate the string
recvInProgress = false;
ndx = 0;
newData = true;
}
}
else if (rc == startMarker) {
recvInProgress = true;
}
}
}
void showNewData() {
if (newData == true) {
Serial.print("This just in ... ");
Serial.println(receivedChars);
long number = atol(receivedChars);
if (number == 180){
digitalWrite(13, HIGH);
}
else {
digitalWrite(13, LOW);
}
newData = false;
}
}

Answers (0)

Categories

Find more on Instrument Control Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!