Я пытаюсь читать аналоговые сигналы через arduino uno и строить их в MATLAB. Когда я подал свою входную волну из генератора функций и попытался построить ее, построенные сигналы были неправильными, например. входная синусоидальная волна не давала синусоидальной волны. Что может быть возможной причиной? Нужна ли мне внешняя схема для плавного чтения?как построить входные аналоговые сигналы от arduino в matlab
ARDUINO КОД
void setup()
{ Serial.begin(9600); }
void loop()
{
int a=analogRead(A0);
Serial.println(a);
delay(1);
}
MATLAB КОД
s=serial('COM3','BaudRate',9600);
fopen(s)
x=1:100;
n=1;
while n==1
for i=1:length(x)
tmp=fscanf(s,'%d');
if length(tmp)>1
continue;
end
y(i)=tmp;
end
y=y/1024*5;
ylim([0 5]);
plot(x,y)
drawnow
end
fclose(s)
Пожалуйста, внесите свой код. – am304
ARDUINO CODE void setup() { Serial.begin (9600); } void loop() { int a = analogRead (A0); Serial.println (a); Задержка (1); } КОД MATLAB s = serial ('COM3', 'BaudRate', 9600); fopen (s) x = 1: 100; n = 1; while n == 1 для i = 1: length (x) tmp = fscanf (s, '% d'); если длина (tmp)> 1 continue; конец y (i) = tmp; конец y = y/1024 * 5; ylim ([0 5]); plot (x, y) Втянутый конец fclose (s) –
В следующий раз, пожалуйста, добавьте код к вопросу, а не комментарии, так как это затрудняет чтение. Таким образом, вы получаете 100 точек данных через последовательное соединение с 9600 бод. Какая частота является вашей синусоидальной волной? Какой результат вы получаете в MATLAB? BTW, похоже, что ваша 'while' петля будет работать вечно ... – am304