秒数を決めての出力
조회 수: 12 (최근 30일)
이전 댓글 표시
ロボットを自作し、Bluetooth接続にてMATLABから操作出来るものを作成しました。
現状、コマンドウィンドウもしくはプログラムにおいて
fprintf(device,'1');という風に1を入力すると前進、fprintf(device,'0');という風に0を入力すると停止するようにつくっています。
例えばワークスペース内に変数A=[1;1;1;1;1;0;0;0;0;0]があったとします。1秒ごとにこれらの値を出力し、ロボットを操作したい(今回の場合は5秒前進し、5秒止まり終了したい)のですが、for文などを使う際に秒数を決めて動かすにはどのようにすればよいのでしょうか?for文以外の手法でも構いません。よろしくお願いいたします。
댓글 수: 0
채택된 답변
交感神経優位なあかべぇ
2022년 9월 3일
편집: 交感神経優位なあかべぇ
2022년 9월 3일
timerを使用した例も貼り付けます。
A = [1;1;1;1;1;0;0;0;0;0];
htimer = timer('ExecutionMode', 'fixedRate', 'Period', 1, 'TimerFcn', @(htimer, event) TimerFcn(htimer)); % 1秒ごとにTimerFcnを実行するタイマーを作成
start(htimer);% タイマーの実行
function TimerFcn(htimer)
A = evalin('base', 'A'); % ベースワークスペースからAをコピー
device = evalin('base', 'device');
fprintf(device, num2str(A(1)));% Aの先頭データをロボットに指示
A(1) = [];% Aの先頭データを削除
assignin('base', 'A', A);% ベースワークスペースのAを上書き
if isempty(A)% Aにデータがなくなり次第、タイマーをストップする。
stop(htimer)
end
end
추가 답변 (1개)
Atsushi Ueno
2022년 9월 3일
pause関数で待ち時間を作れば、やりたい事が出来ます。
A = [1;1;1;1;1;0;0;0;0;0];
for a = num2str(A)' % Aを文字に変換⇒転置してfor文でアクセス
fprintf(device,a);
pause(1.0);
end
참고 항목
카테고리
Help Center 및 File Exchange에서 ネットワーク接続と調査에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!