外国牛人教你一步步快速打造首台机器人
装上机器人的所有电池,然后等待,等待,如果未到异味和看到火花或者烟雾,你可以进行以下的操作。
大部分版本的Picaxe编程软件在其菜单栏有“options”这个选项,进入,选择一个“mode”页面,有些编辑器在你打开程序的时候自动打开这个页面。
接下来你要找到一个“Firmware”的按键,或者是“Check firmware version”,点击它。
接下来就是编辑器通过下载线发送信息给微控制器,同时确认是Picaxe的哪款芯片,然后会反馈回来类似“28X1/40X1”之类的信息,这会在显示屏上显示出来。
如果有这些显示,很好,证明你已经连接上了。这时在屏幕上某个地方,你需要设置编辑器的型号,把其设为28X1/40X1。
如果出错,没有找到微控制器或者其他提示错误,你要阅读其手册寻求帮助。通常都是很简单的,所以碰到错误的时候尽管去尝试解决。或者在另一电脑上重试,看它是怎样工作的。然后再试,再进行错误跟踪等。
然后,进入主程序编辑器,他就像一个文档编辑器,如果没有打开任何项目,在“file”下打开“New Basic”/“New”。然后写下以下程序:
servo 0, 150
wait 2
这是个非常简单的头程序,第一行是告诉微控制器这里有个伺服电机在0端口,同时它要被设置到中间位置,也就是150那里。
第二行是等候两秒,让点击有时间转动起来。
经过这个之后,微控制器不再做任何操作,会毫无目的的运行。
写下它,把代码编入微控制器,在大部分系统按下F5就可以完成操作,你也可以点击“program”。
程序正在烧录,接下俩将有奇迹发生,伺服电机会跑到中间位置。
尽管不是做很多操作,但他已经处在中间位置。
尝试去摁住板上的“reset”键,当伺服电机跑到另一边,松开手,电机会跑到原来位置。
可能你认为那不是中间位置,但那的确是,可能你电机的“号角”安装得不合适,在其中间位置,有个螺丝钉。拧开螺丝钉,拿掉号角,确保微控制器的确把电机放在中间位置,然后拧上“号角”。
接下来尝试让电机跑到边上,继续扩展这个程序:
servo 0, 75
wait 2
servo 0, 225
wait 2
servo 0, 150
wait 2
电机命令的有效值范围是75到225,这是一个标准电机能娶到每一个角落的范围,超过这个有效范围的数值是不建议的,尽管会产生有趣的结果。
每次你运行程序(你可以拔掉下载线,拔掉电池,然后在无线的情况下打开),一切都会从头开始运行。每次你reset,都会进行同样的操作。
如果你希望能够循环,你可以在开始那里添加一个标记,然后在程序结尾使它再回到那个标记重新运行,我们可以给这个标记任何名称,只需要一个词,再加一个冒号,如下:
servofun:
servo 0, 75
wait 2
servo 0, 225
wait 2
servo 0, 150
wait 2
goto servofun
现在它就会无限循环,如果你喜欢,可以尝试使它工作在任何地方,改变数值等等、
回到做机器人上面来。
把线插入Sharp的芯片,如果没附带线,你要确保有三根线从它接出,颜色可以不同,但我希望是红、黑和白,因为这对V、G和信号时非常有意义的。
你可能要在线上接上杜邦线,像下图我那样操作。这些可以是任何颜色。
确保你准确插线,因为Sharp的芯片很容易被烧掉。
如下图所示,你会知道怎么连接,黏贴和奇怪的设置时确保你能看到导线和它的颜色。
你也要三个跳线帽,连接相连的两根针。
如果你没有,你可以用杜邦线来跳线代替,跳线帽不占地方,因此这是一个很好的选择。而线对于从一断到另一端来说,也是个不错的选择。
如接下来的照片所示,用跳线帽或者杜邦线连接模拟输入1,2,3到V.
为什么这样做?一个简单的解析就是这四个输入(0,1,2,3)是模拟的,也就是意味着他测量它们在线上受到多大的压强。不管同意与否,它们已经被连接起来。这样任一个输入的小小压强都会传递给了其他,可以悬空处理。“3”对于V来说是不需要使用,它们只是满载,而不是悬空。
确保伺服电机处在中间,就是150位置。
用一些双面胶,把Sharp的芯片装在伺服电机的角的位置,面向前。
你已经完成了基本组装了,整个产品可能会很大,你也可能会用其他配件,但如果你按指导做,以下有些机器人编程建议给你。
编程
输入这些代码,在连接机器人的情况下按F5。
main:
readadc 0, b0
debug
goto main
然后把你的手从机器人的头部拿开,然后注意变量b0的改变数值,你可以凭借你掌握的知识去决定接下来会发生什么。
如果“眼睛”太接近物体,你会注意到机器人怎么走。Sharp的这颗芯片是设计监测10-18厘米范围内的物体的,小于10CM,大于18CM范围的物体,对编程来说是一个很大的挑战。
你可以选择没有这个问题的的传感器,然而Sharp这颗是最便宜的,同时也是非常容易编程的,这就是我为什么选择这颗芯片的缘故。
输入以下程序,按下F5:
high 4
low 5
有一个轮子会按一个方向转,你的轮子向前么?这是一个向前的指令。如果轮子向后,你可以尝试以下指令:
low 4
high 5
输入以下指令去转动另一个轮子:
high 6
low 7
(或者以另一种方式去改变方向)
通过微控制器的特有方式去控制方向,打开或关闭针脚上的开关,命令电机控制器指挥电机A或B正反向模式。
low 4
low 5
low 6
low 7
停止所有马达。
电机到一边是:
servo 0, 75 wait 2
另一边是:
servo 0, 225 wait 2
中间是:
servo 0, 150 wait 2
以下是一个使机器人旋转的小程序,在障碍物前面停住,左右观察寻找最佳路径,驱动去完成新的挑战。
Symbol dangerlevel = 70 ‘ how far away should thing be, before we react?
symbol turn = 300 ’ this sets how much should be turned
symbol servo_turn = 700 ‘ This sets for how long time we should wait for the servo to turn (depending on it´s speed) before we measure distance
main: ’ the main loop
readadc 0, b1 ‘ read how much distance ahead
if b1 《 dangerlevel then
gosub nodanger ’ if nothing ahead, drive forward
else
gosub whichway ‘ if obstacle ahead then decide which way is better
end if
goto main ’ this ends the loop, the rest are only sub-routines
nodanger:‘ this should be your combination to make the robot drive forward, these you most likely need to adjust to fit the way you have wired your robots motors
high 5 : high 6 : low 4 : low 7
return
whichway:
gosub totalhalt ’ first stop!
‘Look one way:
gosub lturn ’ look to one side
pause servo_turn ‘ wait for the servo to be finished turning
readadc 0, b1
gosub totalhalt
’Look the other way:
gosub rturn ‘ look to another side
pause servo_turn ’ wait for the servo to be finished turning
readadc 0, b2
gosub totalhalt
‘ Decide which is the better way:
if b1《b2 then
gosub body_lturn
else
gosub body_rturn
end if
return
body_lturn:
high 6 : low 5 : low 7 : high 4 ’ this should be your combination that turns the robot one way
pause turn : gosub totalhalt
return
body_rturn:
high 5 : low 6 : low 4 : high 7 ‘ this should be your combination that turns the robot the other way
pause turn : gosub totalhalt
return
rturn:
servo 0, 100 ’ look to one side
return
lturn:
servo 0, 200 ‘ look to the other side
return
totalhalt:
low 4 : low 5 : low 6 : low 7 ’ low on all 4 halts the robot!
Servo 0,150 ‘ face forward
wait 1 ’ freeze all for one second
return
通过聪明的编程和调整,你可以使机器人动起来,转动头部,做决定,作调整,穿过类似正门这样的洞,这些动作可以同时完成。如果你使机器人在滑动的时候转动头部,这看起来会非常酷。
玩乐时刻
你可以接一个灯或者LED到端口2和地之间。同时写下程序
要打开灯,写入
High2
要关灯,写入
Low2
装上一个激光笔如何?外加一个伺服电机呢?然后你可以使机器人把激光笔到处乱晃,开关关开,指向某个地方,你可以做任何操作。
在编译器里打下“Help”,你可以得到各种各样的指导和信息。
你可以尝试一下以下操作:
把伺服电机拿出来,把黄色芯片拿出来,插入之前拔出的达林顿晶体管,在之前连接伺服电机的2端口处接一个扬声器,在输出1时附带一个LED,或者接其它东西在输出2。然后编译以下程序:
sound 1, (100, 30)
high 2
wait 1
low 2
sound 1, (105, 60)
这会制造声音,同是会打开某些器件,制造一个新声音,关掉器件。
更有趣的是,确保Sharp芯片不拔出,接扬声器到端口1,运行以下程序:
noise:
readadc 0, b0
sound 1, (b0, 2)
goto noise
伺服电机相关文章:伺服电机工作原理
评论