Я пытаюсь прочитать значения от двух датчиков (на моем arduino), которые отправляются на последовательный порт, с помощью кода matlab ниже. Однако, это ошибки, говорящие ??? Attempted to access sensor1(1); index out of bounds because numel(sensor1)=0
, и если ошибка не возникает, результаты неточны. Я знаю это, потому что я просто послал 1 и 2 в качестве значений датчика в com-порт, и в результате два массива содержали некоторые нули (когда нужно было все 1 и 2 все 2). Спасибо, любая помощь будет очень признательна.Matlab, читаемый из последовательного порта с определенной частотой дискретизации
Вот мой MATLAB код:
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);
это мой отправка Arduino код:
int sensor1=0;
int sensor2= 0;
void setup(){
Serial.begin(115200);
}
void loop(){
sensor1= 1;
sensor2= 2;
Serial.println(sensor1);
Serial.println(sensor2);
}