秒数を決めての出力
18 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
ロボットを自作し、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 commentaires
Réponse acceptée
交感神経優位なあかべぇ
le 3 Sep 2022
Modifié(e) : 交感神経優位なあかべぇ
le 3 Sep 2022
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
4 commentaires
Plus de réponses (1)
Atsushi Ueno
le 3 Sep 2022
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
Voir également
Catégories
En savoir plus sur ネットワーク接続と調査 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!