Matlab reading from serial port at specific sampling rate

7 views (last 30 days)
I am trying to read values from two sensors (on my arduino) that are being sent to the serial port, with the matlab code below. However, it errors saying ??? Attempted to access sensor1(1); index out of bounds because numel(sensor1)=0 and if the error does not occur the results are not accurate. I know this because I simply sent 1 and 2 as the sensor values to the com port and the resulting two arrays contained some zeros too (when one should be all 1's and the other all 2's). Thanks any help will be greatly appreciated.
Here is my matlab code:
close all;
clc;
fs = 1000; % sampling frequency (samplings per second)
mt = 20; % time for measurements
ind = 1;
nind = 1;
%Open serial port
delete(instrfind({'Port'},{'/dev/tty.usbmodem641'}));
serial_port=serial('/dev/tty.usbmodem641');
serial_port.BaudRate=115200;
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
%Open serial port
fopen(serial_port);
pause(2);
%Declare sample count
sample_count=1;
tic;
while toc < mt
time(ind) = toc;
sensor1=fscanf(serial_port,'%d')';
sensor2=fscanf(serial_port,'%d')';
channel1(ind) = (sensor1(1));
channel2(ind) = (sensor2(1));
% wait for appropriate time for next measurement
while( nind == ind )
nind = floor(toc*fs) + 1;
end
ind = nind;
end
%close connection
fclose(serial_port);
delete(serial_port);

Answers (0)

Categories

Find more on MATLAB Support Package for Arduino Hardware 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!