저는 ArduinoIO-Matlab 인터페이스를 사용하여 Matlab에서 Arduino를 제어하고 있습니다. 현재의 셋업은 3 개의 EMG 근육 센서 (Advancer Technologies)가 아날로그 핀 1,2에서 Arduino에 연결되어 있고 3입니다. Arduino는 Matlab과 연결되어 있습니다. 나는이 세 핀에서 동시에 데이터를 수집하고 매트릭스 크기 1000x3로 저장하려고합니다. 내 문제는 Matlab이 아날로그 핀에서 샘플링하는 속도입니다. 3 개의 핀에서 동시에 1000 개의 판독 값을 수집하는 데 약 25 초가 소요됩니다. 나는 Arduino 자체가 더 높은 속도로 샘플을 알아. 아래는 제 코드입니다. 10 초 동안 1000 샘플 정도의 샘플링 속도를 얻으려면 어떻게 변경합니까? 내가 명확히해야 할 뭔가가있는 경우Matlab-Arduino analogRead() 샘플링 속도 늘리기/바꾸기
time calls line
< 0.01 1 3 ax = zeros(1000,3);
4
< 0.01 1 5 for ai = 1:1000
25.07 1000 6 ax(ai,:) = [ar.analogRead(1) ar.analogRead(2) ar.analogRead(3)];
1000 7 end
8
1.24 1 9 delete(ar);
은 알려 주시기 바랍니다 :
ar = arduino('COM3');
ax = zeros(1000,3);
for ai = 1:1000
ax(ai,:) = [ar.analogRead(1) ar.analogRead(2) ar.analogRead(3)];
end
delete(ar);
이
은 위의 코드 (프로파일 뷰어)에 의해 촬영 시간입니다. 감사 : Denter code here
안녕하세요 무하마드. 좀 더 명확하게 설명해 주시겠습니까? "adiosrv.pde"arduino 코드의 정확성과 정확성은 어디에 설정해야합니까? 나는 adiosrv.pde를보고 있었지만 이해할 수 없거나 수정해야 할 곳을 찾을 수 없었습니다. –
간단한 IO 체계 (adiosrv.pde)로 작업했습니다. 아날로그 판독 값은 코드에서 "case 30"을 사용하여 수행됩니다 (@ 217 시작). arduino에서 입력을 요청하고 하나의 입력을 읽고 직렬 쓰기를 사용하여 Matlab으로 보내는 대신 다음을 수행했습니다. for (int i = 0; i <1000; ++ i) Serial.println (analogRead (pin)); 또한 matlab 코드에서 analogRead 메소드를 수정해야합니다. i = 1 : 1000의 경우 signal (i) = fscanf (a.ser, "% d"); end 샘플링을 수행하는 더 좋은 방법은 전체 신호를 샘플링 한 다음 시리얼을 통해 Matlab으로 다시 전송하는 것입니다. 실제로는 저에게 맞지 않습니다. (만족스러운 것은 ...) – Muhammad
Ok. Btw는 늦은 답변을 드려 죄송합니다. 내 시험이 끝났으므로이 시험을 볼 수 없었습니다. 이제 adiosrv.pde의 사례 30에 이 있습니다. (val> 96 && val <113) { pin = val-97; agv = 아날로그 읽기 (핀); \t Serial.println (agv); } s = -1; 휴식; 이 부분 중 어떤 부분을 추가해야합니까? 또한 고정 된 크기의 데이터를 필요로 할 때만 사용됩니다. 실시간 연속 데이터 수집을 위해 무엇을해야합니까? –