나는 arduino uno를 통해 아날로그 신호를 읽고 MATLAB에서 플로팅하려고했습니다. 함수 발생기에서 입력 파형을 가져 와서 플롯하려했으나 플롯 된 신호가 올바르지 않습니다. 입력 사인파는 사인파를 내지 못했습니다. 가능한 이유는 무엇일까요? 원활한 판독을 위해 외부 회로가 필요합니까?matlab에 arduino에서 입력 아날로그 신호를 플로팅하는 방법
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; n == 1 i = 1의 경우 : 길이 (x) tmp = fscanf (s, '% d'); 길이 (tmp)> 1 인 경우 계속; end y (i) = tmp; end y = y/1024 * 5; ylim ([0 5]); plot (x, y) drawnow end fclose (s) –
다음 번에 주석을 읽기보다는 읽기 어렵게 만드는 질문에 코드를 추가하십시오. 따라서 직렬 연결을 통해 9,600 보오를 통해 100 개의 데이터 포인트를 획득하고 있습니다. 입력 사인파는 어떤 주파수입니까? MATLAB에서 어떤 출력을 얻습니까? BTW, 당신의'while' 루프가 영원히 돌아갈 것 같습니다. ... – am304