Sending char string from matlab to arduino using serial com

1 visualización (últimos 30 días)
lewis mcmenemy
lewis mcmenemy el 10 de Abr. de 2019
Editada: lewis mcmenemy el 10 de Abr. de 2019
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;
}
}

Respuestas (0)

Categorías

Más información sobre Instrument Control Toolbox en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by