Legacy MATLAB and Simulink Support for Arduino
Updated 19 Apr 2016
NOTE: This solution (formerly known as "Arduino IO Package") is no longer supported. It is recommended that you use Arduino support packages that are developed and supported by MathWorks:
- MATLAB Support Package for Arduino Hardware: Read, write, and analyze data from Arduino sensors
- Simulink Support Package for Arduino Hardware: Develop algorithms that run standalone on your Arduino
Use this legacy support only if one of the following is true:
- You are using MATLAB R2013b or earlier (but not earlier than R2011a).
- You need Simulink blocks that enable you to interactively stream input and outputs from your Arduino
- You need functions or blocks that enable you to interactively read or reset encoders
- You are using unsupported Arduino clones which won't work with the official packages (e.g. ChipKit32)
%-- connect to the board
a = arduino('COM9')
%-- specify pin mode
%-- digital i/o
a.digitalRead(4) % read pin 4
a.digitalWrite(13,0) % write 0 to pin 13
%-- analog i/o
a.analogRead(5) % read analog pin 5
a.analogWrite(9, 155) % write 155 to analog pin 9
%-- serial port
a.serial % get serial port
a.flush; % flushes PC's input buffer
a.roundTrip(42) % sends 42 to the arduino and back
a.servoAttach(9); % attach servo on pin #9
a.servoWrite(9,100); % rotates servo on pin #9 to 100 degrees
val=a.servoRead(9); % reads angle from servo on pin #9
a.servoDetach(9); % detach servo from pin #9
a.encoderAttach(0,3,2) % attach encoder #0 on pins 3 (pin A) and 2 (pin B)
a.encoderRead(0) % read position
a.encoderReset(0) % reset encoder 0
a.encoderStatus; % get status of all three encoders
a.encoderDebounce(0,12) % sets debounce delay to 12 (~1.2ms)
a.encoderDetach(0); % detach encoder #0
%-- adafruit motor shield (with AFMotor library)
a.motorRun(4, 'forward') % run motor forward
a.stepperStep(1, 'forward', 'double', 100); % move stepper motor
%-- close session
Some slides and examples related to this package can be found here:
Finally, more detailed info about use and troubleshooting can be found in the readme.txt file contained in this submission.
Giampiero Campa (2023). Legacy MATLAB and Simulink Support for Arduino (https://www.mathworks.com/matlabcentral/fileexchange/32374-legacy-matlab-and-simulink-support-for-arduino), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Inspired: Sphero Connectivity Package, I2C block for ArduinoIO simulink package
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!
Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
Added spaces to enhance readability
Improved handling of mega-related pins from Simulink ADIO blocks. Also added instruction (in the readme.txt file) on how to use the official stepper.h Arduino library with this package.
Reorganized sketch handling and examples, improved docs and added support for Adafruit Motor Shield V2.
Encoder debouncing function added
1) Simulink library now handles pre-existing Arduino objects
Minor fixes and improvements, mainly for the MEGA and ChipKIT32 boards.
Minor fixes to demo mode for servo handling
* Minor changes to readme, Simulink example models, and .pde files