秒数を決めての出力
15 次查看(过去 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!