matlab+ardunio+舵机实时监控

1 篇文章 0 订阅
1 篇文章 0 订阅


以下内容不会涉及任何第三方程序,即都为MATLAB自带,本实验是在MATLAB2017a环境下完成,ardunio接口只需点这里下载找到对应的硬件安装即可。

一、实时图像

先上实时监控图,如下。


图1 实时在线获取舵机转动角度曲线

                 

图2 实物连线图

二、代码

代码非常之简单,以下函数大部分要用到R2014b版本的新函数,如时间,绘图的。其中ytickformat函数是R2016b引进的,主要用于对y轴进行格式化标记,当然若你版本低于2016b的话,ytickformat函数就不用用了

a = arduino('COM4','Mega2560','Libraries', 'Servo');
s1 = servo(a,'D3'); % 舵机1信号线接pin D3口,根据自己情况选择
s2=servo(a,'D8'); % 舵机2信号线接pin D8口,根据自己情况选择
writePosition(s1,0.2);% 初始化角度位置
writePosition(s2,0.8);% 初始化角度位置

%% 实时检测舵机角度并绘图
h1 = animatedline('MaximumNumPoints',180*4,...
    'Color','r','LineWidth',1.5);% 大概4个周期,舵机转动范围为0-180度
h2 = animatedline('MaximumNumPoints',180*4,...
    'Color','b','LineWidth',1.5);% 大概4个周期,舵机转动范围为0-180度
ax = gca;
ax.YGrid = 'on';
ax.YLim = [0,180];
ytickformat('degrees');
xlabel('real time');
ylabel('servo angle')

delta1 = 2/180;
delta2 = 2/180;
while isvalid(ax)
    % 获取舵机转动后的角度
    [targetDu1,delta1] = getTarget(s1,delta1);
    [targetDu2,delta2] = getTarget(s2,delta2);
    
    % 执行舵机转动并且实时绘图
    writePosition(s1,targetDu1);
    writePosition(s2,targetDu2);
    t = datetime('now','format','HH:mm:ss');
    tnum = datenum(t);
    addpoints(h1,tnum,targetDu1*180);
    addpoints(h2,tnum,targetDu2*180);
    datetick('x','dd-mmm-yyyy HH:MM:SS','keeplimits')
    drawnow limitrate
    legend('舵机1','舵机2')
end
另外,上面需要调用的函数getTarget()如下:

function [targetDu,newDelta] = getTarget(s,delta)
% 获取舵机s下一次的转动角度targetDu,输入delta为舵机s的角度增量
newDelta = delta;
targetDu = readPosition(s);
targetDu = targetDu+delta;
if targetDu>1
    targetDu = 1;
    newDelta = -delta;
end
if targetDu<0
    targetDu = 0;
    newDelta = -delta;
end
注意事项:功率大的舵机需外接电源,我用的是MG996R数码舵机,一个舵机用的是4节1.5v AA碱性电池供电,还需要大电流,坑啊~~。若是MG90s微型舵机用ardunio供电即可。一般需要5v左右电压。



  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值