步骤1:给我一盏灯
我们可以通过Arduino开发环境使用C语言来编写程序控制MeArm,也可以在图形介面用拖拉方式产生程序,现在我们开始第一堂课:“给我一盏灯”
使用S4A
步骤1 :: S4A程序
步骤2:拖拉成此程序
步骤3:点击绿色旗子,可以看到MeArm的LED灯亮了。
使用ArduBlock
步骤1:选择工具/ArduBlock
步骤2:拖拉成此程式
步骤3:按“上传至Arduino”即可看到MeArm的LED灯亮了。
使用mBlock(Scratch2)
步骤1:档案-打开项目
步骤2::01.sb2
使用Arduino IDE
步骤1:打开_01.ino
步骤2:单击“上传”,是一个右向箭头符号,可以看到MeArm的LED灯亮了。
说明:LED的脚位为3(S4A中脚位为12),所以当设置该脚位为HIGH时,灯就亮了。
注:您可在S4A内直接打开上方的“ .sb”档(图形介面),也可在ArduBlock内直接打开替换的“ .abp”档(图形介面),也可在Arduino中直接打开上方的“ .ino”档(C语言),直接上传到手臂运行,也产生同样的效果。
步骤2:3秒后熄灭它
如果我们要在3秒后熄灭LED灯,然后在delay 3000毫秒后,设脚位为LOW即可。
步骤3:再闪一下,宝贝
灯既然能亮能灭,那何不闪烁一下呢?就让我们间隔设置1秒
步骤4:变数初体验
假设我们将闪烁时间从间隔0.2秒改为间隔0.1秒或0.05秒,要手动改变每个设定就会很累,这时可用变数来增加效率,我们只要设定一次变数,未来要改变时间间隔时就只要更动一次变数内容即可。
步骤5:变数也可以自嗨
既然有了变数,那么就让它多变几次,您可以试一下变数或减半,或加倍,或加0.1秒,或减0.25秒喔。
mytime = mytime/2;
mytime = mytime * 2;
mytime = mytime + 100;
mytime = mytime-250;
步骤6:使用照妖镜让变数现出原形
既然变数这么方便,所以
“ Serial.println(变数名);”
其中,序列号是序列
第7步:如果,我是真的,只需按一下“串行监视器”就可以看到资料内容了。的。..
“如果”是一种判断式,就像“如果下雨,就带雨伞。如果刮风,就穿风衣”。情况成立例如:
“如果(10> 1),则亮LED灯。”
这时因为10一定大于1,所以LED灯就会亮了。
步骤8:如果,变数也来凑热闹
通常我们对准变数跟“如果”搭配使用,例如本例中的light变数,它可能代表的是光线亮度,当我们在判断是否开灯时,就可以根据光值,例如此例若light值小于10就开灯。
int light = 5;
if(light 《10)
{
digitalWrite(3,HIGH);
delay(1000);
}
步骤9:如果的好朋友:布林
在前例中的“ if(light 《10)”判断式,若成立,则称为“真”,反之则为“假”。这“真假”两种值我们又称为“布林”,也就是“ true/错误。”亦即结果为真,则进行后续动作,若为假,则不做任何动作。
步骤10:向左走,向右走(if-else)
因为布林有两种值,那当然可以“若真则向左边,否则向右边”
if(true){
左转
}否则{
右转
}
步骤11:向左走,向右走(if-else)续1
了解(if-else)功能后,接下来就可以对判断式加变化,例如:
if(num | 3 == 0)
{其中“若是3的倍数,则点灯,否则熄灯。” {
digitalWrite(2,HIGH);
} else {
digitalWrite(2,LOW);
}
步骤12:向左走,向右走(if-else)续2
因为判断式是程式设计的重要基础,所以值得咱们再熟练熟练,接续上一个教程,你能写出来吗?
结果,“如果是单数,则LED闪一下,否则闪两下”
步骤13:回圈:叫我大神,重覆的事情交给我做就对了
除了判断式之外,电脑最世界无敌猛的把戏就是回圈了,重覆的事情找它做就对了。
例如:连续闪烁LED 5次
基本指令格式为“ for(int i = 0; i 《5; i ++)”
步骤14:用回圈帮你从1加到100
还记得数学神童高斯怎么累加1到100吗,若能妥善运用回圈,就算不是神童也能算出最后答案哩。
第15步:回圈也可以只加加偶数喔
若回圈只能做一成不变的事那就小看回圈了。在此例中,咱们要在每一个轮回内加入判断式,若成立才做动作,也就是在1到100之中,我们跳过奇数,只累加偶数。
步骤16:回圈的间隔(步骤)
接续上一个只加偶数的问题,本节要介绍“回圈的间隔”,是一种隔几次才做一次的概念。所以若要加总1到100之间的偶数,意思就是:
结果,“从0开始,每隔2次(中间空1次)才加总”
步骤17:那能不能用step计算一年有几个星期天呢
接续上一个“间隔”概念,你能算出一年有多少个星期天吗?(要间隔多少呢?)
步骤18:回圈2:当条件符合就一直做,一直做,一直做…
无论任何程序语言,回圈都是如此的重要,所以在此要再介绍回圈的另一种格式,同时。这指令的要点就是如果条件为真,就一直做到天荒地老。像本例的条件(2》 1)永远为
步骤19:回圈2的标准型
为了不让电脑跑回圈跑到挂,通常会加一条件限制,让布林值不要永远都是“ true”,并获得所需的结果。本节内容即是如何用而加总1至100。
步骤20:让LED闪到歪腰
若要重覆做一个永远不变的事情,用while是最方便的,本节即是要挑战如何让LED灯持续闪烁到天荒地老。
步骤21:函数:每次闪烁一次都要写4行,真麻烦啊
为了让程式更简洁,设计师习惯将“相同的程式码包成一个黑箱,只要执行黑箱即可”。这个黑箱就叫函数或副程式。妥善利用副程式不仅程式看起来简洁,而且运行效率提高,一举两得。
结果,本例要展示如何将“闪烁”程式码包进黑箱。
步骤22:函数+回圈:让它闪10次
包成黑箱后,我们便可视其为一条指令,将其放到回圈中,要连续执行多次都行。本例展示如何在回圈中呼叫副程式,让LED闪烁10次。
步骤23:回圈也可做在函数内部
多个可以在回圈中运行副程式,反过来当然也可以在副程式中运行回圈。此例要展示的即为直接在副程式中设定要执行的回圈次数。
步骤24:函数的参数(仅限C语言,Ardublock尚无此功能)
副程序的作用强大,还可以更灵活使用,例如我们
步骤25:可以给多个参数吗?(只有C语言,Ardublock尚无此)功能)
副程序既可以接受参数,而且还可以同时接受多个。所以如果我们要设置LED闪烁一次,每次重复几秒钟,只要透过参数指定就
步骤26:挑战再挑战(仅C语言,Ardublock尚无此功能)
带有参数的副程式既强大又常用,接下来的练习是锻炼自己是否能做出一个加总的副程式,例如若要加总1到100,则只要写一条指令
sum(100);
步骤27:伺服马达初体验
花了那么多篇幅讲了程式最核心的概念,现在要进入机器手臂正题了,只要你前面有跑过,相信我,接下来花不了多少时间你就能学会驾驭机器手臂了。
结果,机器手臂是由伺服马达所带动,我们只要设定伺服马达所接的脚位,接下来再设定所要转到的角度即可。要注意的是伺服马达的角度范围是0到179度,如果角度超出两边范围,或部件卡住,或因为螺丝锁太紧导致马达转不到指定角度,则会因为电流过载而降低马达和主板寿命。
此范例是将一颗伺服马达设定接到脚位11,然后转到0度。
第一颗马达为底座马达。
步骤28:伺马达角度范围0〜179度
既然伺服马达的角度范围是0〜179度,那咱们就依序
步骤29:试一下第二颗马达,但只能45〜145度
搞定了第一颗,那第二颗就依样画葫芦呗。但这次只能从45度到145度。第二颗马达可调整前后角度。
第30步:试一下第三颗马达,但只能90〜179度
搞定前两颗星,第三颗马达能调整水平,咱也依样画葫芦,但限制只能从90度到179度。
步骤31:试一下第四颗星星,但只能0〜50度
最后一颗马达是夹具马达,度数在0至50度之间。如果未遵循标准组装步骤组成夹具,则出现夹具紧或开大绝,这时则需打掉重练。
步骤32:读摇杆资料,0〜1023
本机手臂附有二颗星摇杆,每一颗皆有横纵两向,总共四向,所以能控制4颗颗星,摇杆依次接A0,所以我们只要重新知道这几个脚位的值就会知道摇杆的角度。每个脚位值的范围从0到1024。此例中我们读A0脚位的值然后由
步骤33:将摇杆指令分类为大,中,小
为了用户操作方便,我们只将摇杆区分为2个动作,也就是前进和后退。根据此概念,我们可以设定若摇杆值超过612,则是前进,若小于412,则是后退,若介在中间则不
步骤34:结合摇杆与马达
接下来要将摇杆与马达结合在一起,也就是如果摇杆前进,则则马达增加1度,反之则减一度。
第35步:布局终于出现了
因为一次要读取四个输入,然后借以控制四个输出,这时若使用阵列,会让程式显得更简洁。在此例中,我们要设定一个含有4个元素的阵列,给初值然后再印出来。
步骤36:将全部整合起来,手臂就全听你的了
接下来要把所有整合起来,这样就
(图片来源:Wei-Yu Chen)
步骤37:机器手臂的自动模式
既然已经知道马达的控制方法,咱们便可以预先设定每颗马达的角度,然后一直重覆,这就是我们常在电视上看到的自动机器手臂的酷样。此范例只是个参考,你也可以试着调到所需要的角度和次数,建立自己的生产线喔。
步骤第38页:如何回复原型手臂模式
请在Arduino环境中(非Ardublock),烧入附件程序即可。所以大家多多练习,不用怕回不
责任编辑:wv
-
软件
+关注
关注
69文章
4970浏览量
87714
发布评论请先 登录
相关推荐
评论