複数のサーボ モーターに対して、MATLABでフィードバック制御プログラムを使用してサーボ モーターを実装しようとしています。目的は、サーボのアナログ出力を読み取り、スライダー バーからのユーザー値と比較し、新しい位置をサーボに書き込み、アナログ出力の書き込みまたは監視を続行して、サーボが最後のユーザー値を維持していることを確認することです。バックグラウンドでwhileループが実行されている間、常に GUI を開いたままにし、ユーザー値を受け入れるための最適なフローを理解できないため、問題が発生しています。以下は、コードに出力させたい一般的な構造です。
test_gui %calls GUI figure with slider bar
スライダーバー付きの GUI ウィンドウがポップアップします
%Callback for when user slides bar
function slider(i)_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
load('user.mat'); %Load previous user input
sze=size(user,1);
user(sze+1,1)=get(hObject,'Value'); %Add new user input to previous input
save('user.mat','user') %Save variable to be accessed by outer loop
'user' は、サーボ位置を書き込む連続 while ループに渡されます
while user ~= 'c' %Continue to run until close window callback
load('user.mat'); %load user input from callback
Write_Servoi(a,user(end,:),add,speed,pinin,myServo) %Writes to servo(s) based on last input, allows servo(s) to maintain position if torqued out of position
end
この while ループの間、ユーザーがスライダーを継続的に変更し、このスライダーの値を while ループに送信してサーボに書き込むことができるようにしたいと考えています。ただし、 while ループのときにユーザーを更新する方法がわかりません。
これを機能させる方法について誰かがアイデアを持っている場合は、私に知らせてください。助けていただければ幸いです。上記の目的が満たされる限り、私は構造を変更することにオープンです。
ロバート