新闻中心

EEPW首页>嵌入式系统>设计应用> 外国牛人教你一步步快速打造首台机器人

外国牛人教你一步步快速打造首台机器人

作者: 时间:2012-07-03 来源:网络 收藏

  装上的所有电池,然后等待,等待,如果未到异味和看到火花或者烟雾,你可以进行以下的操作。

  大部分版本的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

伺服电机相关文章:伺服电机工作原理



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭