MATLAB Slider GUI与背景同时循环控制反馈伺服电机

时间:2016-02-16 04:26:18

标签: matlab user-interface callback servo

我正在尝试在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

'用户'传递到连续的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循环中,我无法弄清楚如何更新用户

如果有人对如何使其发挥作用有任何想法,请告诉我。我非常感谢任何帮助。只要满足上述目标,我愿意改变结构。

罗伯特

1 个答案:

答案 0 :(得分:0)

要更新用户变量,您需要确保已正确加载。在没有输出的情况下调用load并不总是将变量加载到函数工作区中。

您需要将文件作为结构加载,然后从结构中检索变量,而不是load('user.mat');。要完成此任务,请执行以下操作:

s=load('user.mat'); user=s.user;