Serial Communication In Matlab

Posted on by admin
  • Jun 21, 2019  Serial Communication using MATLAB GUI. For demonstrating the Serial Communication using MATLAB GUI, we will create two graphical buttons using MATLABto turn on and off the LED connected to the Arduino. Data will be sent serially from MATLAB to Arduino on clicking on these buttons to turn on and off the LED.
  • Nov 22, 2014  I am having issues getting communication between the two. My Matlab and Arduino code is shown below. If I step through the Matlab code using breakpoints, I get the exact behavior I would expect. Three bytes are transmitted from Matlab, and those three bytes are echoed back to Matlab.
  • I presumed that you are retrieving the value of doi from some other function then using pause(2) will make your program significantly slow. To avoid this problem you can split your program into three part first part will contain upto fopen which will be executed when the main program initialized, fprintf will be executed during runtime and at the end fclose will be executed to terminate.
Active2 years, 7 months ago

Mar 04, 2015  Serial port is most common way of communication, we can send or receive data using serial port. Normally, in engineering projects there’s a need to send or receive data from microcontrollers to computer and in such projects, we used serial communication as its easy and quite quick in communication. Send data to Serial Port in MATLAB. Its a quite simple project in which I am gonna send character over the serial port in MATLAB. Oct 12, 2018  Serial Communication using MATLAB GUI. For demonstrating the Serial Communication using MATLAB GUI, we will create two graphical buttons using MATLAB to turn on and off the LED connected to the Arduino. Data will be sent serially from MATLAB to Arduino on clicking on these buttons to turn on and off the LED. The serial port object behaves according to the previously configured or default property values. Disconnect and clean up — When you no longer need the serial port object, remove it from the MATLAB ® workspace using the clear command. Connecting the Arduino UNO to Matlab via the USB port for serial communication. Software Used In the video, MATLAB R2012a was used, available at mathworks.com. The Arduino IDE version 1.0.1 was used to program the Uno board, available at arduino.cc. In addition to programming environment, it contains the drivers necessary for your computer to connect to the micro controller.

I want to send numeric value from matlab to arduino but code is not working.

Matlab code is as:

Arduino code is as:

Serial

I used str2num(doi) also instead of fprintf(arduino, '%s', char(doi)) but no output.

Please give suggestion to correct this.

Thanks.

Naseeb GillNaseeb Gill

2 Answers

fopen(arduino); takes some time to initialize the serial connection so you should use pause(2); after fopen(arduino); and in fprintf() send doi as interger i.e. fprintf(arduino, '%i', doi);. Suppose the doi is 1 then code would be as

Another modification required in arduino program as

Uncomment this line inside if(Serial.available()>0) block.

lkdhruwlkdhruw

You send a string of ASCII characters representing a number in human readable format.

You then read one of those characters that represents a single digit and then try and use it as if it were a number.

Instead you need to read the whole string of numbers (which means having some way of knowing where the end of the numbers are in the stream of characters that arrive) and then interpret it back into a number again.

MajenkoMajenko
75.1k4 gold badges40 silver badges85 bronze badges

Not the answer you're looking for? Browse other questions tagged arduino-unomatlab or ask your own question.

MATLAB is versatile software that can be used for wide variety of applications. In previous tutorials of MATLAB, we have explained how to use MATLAB to control DC motor, Servo motor and Home appliances. Here in this tutorial, we will learn how to use MATLAB for Serial Communication. For the receiving end of serial communication, we are here using Arduino.

There are two ways to setup serial communication between MATLAB and Arduino, one is using command window and other is using MATLAB GUI. The Arduino code for both the methods will remain the same. If you are new to MATLAB then it is recommend to get started with simple LED blink program with MATLAB and learn the basic terminology used in MATLAB.

Components Required

  • MATLAB installed Laptop (Preference: R2016a or above versions)
  • Arduino UNO
  • LED (any color)
  • Resistor (330 ohm)

Serial Communication Matlab Arduino

Circuit Diagram

The above circuit diagram will remain same for both the ways to establish serial communication between MATLAB and Arduino.

Serial Communication using MATLAB Command Window

This is the simple method to setup serial communication between Arduino and MATLAB. Here we will simply send the data from MATLAB to the Arduino serially using command window and then Arduino read the incoming serial data. Then this serially transmitted data can be used to control anything connected to the Arduino. Here we have connected an LED to Arduino, that will be turned on and off according to the serially received data by the Arduino.

First, upload the given Arduino code in the Arduino UNO and then start coding in MATLAB Editor Window. To open a new editor script click on ‘New Script’ as shown in below image:

Then, copy and paste the below complete MATLAB code in the editor window for serial communication between MATLAB and Arduino.

In the given code, below command is used for defining the serial communication in MATLAB. Make sure the com port number is the port number on which Arduino is connected and the baud rate should be set same in the both the codes of Arduino and MATLAB.

To open serial port use the below command,

Below command is used to send data from MATLAB to Arduino serially, where x is for calling serial and a is the value entered by the user.

We have use while function for creating an infinite loop and whenever the user input the number ‘2’ the loop will break.

After completing coding the MATLAB editor script click on ‘RUN’ to run your program as shown in below image,

MATLAB takes few seconds for processing the code and start the serial communication, wait until MATLAB shows ‘BUSY’ message at the bottom left corner of the software screen, as shown in below image.

Now, you will see the command window for sending the user input, we have set the default message,

Send ‘1’ to turn on the LED, ‘0’ to turn OFF the LED and ‘2’ to break the operation. You can set any number for any task, all you have to do is just change the Arduino code accordingly. Complete Arduino code is given at the end.

You can check out the video below to understand the complete process of Sending Serial Data from MATLAB to Arduino using Command Window.

Serial Communication using MATLAB GUI

For demonstrating the Serial Communication using MATLAB GUI, we will create two graphical buttons using MATLAB to turn on and off the LED connected to the Arduino. Data will be sent serially from MATLAB to Arduino on clicking on these buttons to turn on and off the LED. Arduino will contain the code for receiving serial data from MATLAB and controlling the LED according to serial data received. Arduino code will remain same as previous one, only difference is that, previously we were sending serial data ‘1’ and ‘0’ through command window of MATLAB, and now the same data will be sent on clinking on two graphical buttons.

To launch the GUI, type the below command in the command window

A popup window will open, then select newblank GUI as shown in below image,

Now choose two pushbuttons for turning ON and OFF the LED, as shown below,

To resize or to change the shape of the buttons, just click on it and you will be able to drag the corners of the button. By double-clicking on pushbutton you can change the color, string and tag of that particular button. We have customized two buttons as shown in below picture.

You can customize the buttons as per your choice. Now when you save this, a code will generate in the Editor window of MATLAB. Edit this code according to the task you want to perform by your Arduino using the MATLAB GUI. So below we have edited the MATLAB code. You can learn more about Command window, editor window etc in Getting started with MATLAB tutorial.

Complete MATLAB code, for establishing Serial Communication between MATLAB and Arduino is given at the end of this project. Further we are including the GUI file (.fig) and code file(.m) here for download (right click on link then select 'Save link as..'), using which you can customize the buttons as per your requirement. Below are some tweaks we did for controlling the LED connected with Arduino.

Copy and paste the below code on line no. 74 to setup the serial port and baud rate.

where, fopen(x) is used to open the serial port for serial communication.

When you scroll down, you will see that there are two functions created for both the Buttons in the GUI. Now write the code in both the functions according to the task you want to perform on click.

In LED-ON button’s function, copy and paste the below code just before the end of the function to turn ON the LED. As you see in the below code, fprintf(x,1) is used for sending serial data from MATLAB to Arduino serial. Here we are sending ‘1’ to the Arduino serial and if you check the Arduino code, you will find that Arduino will glow the LED by making its 13th pin HIGH, when it receives ‘1’ on its serial port.

In LED-OFF button’s function, copy and paste the below code just before the end of the function to turn OFF the LED. As you see in the below code, fprintf(x,0) is used for sending serial data from MATLAB to Arduino serial. In this part, we are sending ‘0’ to the Arduino serial and if you check the Arduino code, you will find that Arduino will turn off the LED by making its 13th pin LOW, when it receives ‘0’ on its serial port.

After completing with MATLAB GUI coding and setup the hardware according to circuit diagram, just click on the run button to run the edited code in .m file.

MATLAB may take few seconds to respond, do not click on any GUI button until MATLAB shows BUSY indication, which you can see at the left bottom corner of the screen as shown below,

When everything is ready, click on LED-ON and LED-OFF button to turn ON and OFF the LED. When you press LED-ON button, 13th pin of Arduino goes HIGH and LED connected to this PIN starts glowing, and when you press LED-OFF button, 13th pin of Arduino goes LOW which makes the LED to turn off.

You can check out the video below to understand the complete process of Sending Serial Data from MATLAB to Arduino using MATLAB GUI.

Arduino Code for Serial Communication between MATLAB and Arduino

int value;

Serato dj download windows 10. void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
}

Serial Communication Matlab Frequency

void loop()
{
if(Serial.available()>0)
{
value=Serial.read();

if (value 1)
{
digitalWrite(13, HIGH);
}
if(value 0)
{
digitalWrite(13, LOW);
}
}
}

MATLAB Code for Serial Communication using MATLAB GUI

function varargout = final(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ..
'gui_Singleton', gui_Singleton, ..
'gui_OpeningFcn', @final_OpeningFcn, ..
'gui_OutputFcn', @final_OutputFcn, ..
'gui_LayoutFcn', [] , ..
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end

handles.output = hObject;

guidata(hObject, handles);

function varargout = final_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;
clear all;
global x;
x=serial('COM18','BAUD', 9600); % Make sure the baud rate and COM port is
% same as in Arduino IDE
fopen(x);

Serial Communication Between Matlab And Arduino

function turnonled_Callback(hObject, eventdata, handles)

global x;
fprintf(x,1);

function turnoffled_Callback(hObject, eventdata, handles)

global x;
fprintf(x,0);