我一直試圖通過arduino uno讀取模擬信號並在MATLAB中繪製它們。當我從函數發生器給出我的輸入波並試圖繪製它時,繪製的信號是不正確的,例如,輸入正弦波沒有給出正弦波。可能的原因是什麼?我需要任何外部電路以便順利閱讀嗎?如何在matlab中繪製來自arduino的輸入模擬信號
ARDUINO CODE
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 2014-10-05 17:37:06
ARDUINO CODE void setup() Serial.begin(9600); } void loop() { int a = analogRead(A0); Serial.println(a); 延遲(1); ('COM3','BaudRate',9600); (s) x = 1:100; n = 1; (x) tmp = fscanf(s,'%d'); 如果長度(tmp)> 1 繼續; end y(i)= tmp; 結束 y = y/1024 * 5; ylim([0 5]); 圖(X,Y) 的DrawNow 結束 FCLOSE(S) – 2014-10-06 05:25:17
下一次,請把代碼添加到這個問題,而不是評論,因爲它使得它難以閱讀。所以你通過9,600波特的串行連接獲得100個數據點。輸入正弦波的頻率是多少?你在MATLAB中得到什麼輸出?順便說一句,它看起來像你的'while'循環將永遠運行... – am304 2014-10-06 08:28:02