我正在尝试在 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 循环中如何更新用户。
如果有人对如何使它起作用有任何想法,请告诉我。我将不胜感激任何帮助。只要满足上述目标,我愿意改变结构。
罗伯特