实验四触须避障导航光敏电阻导航Word下载.docx

上传人:b****2 文档编号:4870451 上传时间:2023-05-04 格式:DOCX 页数:25 大小:113.42KB
下载 相关 举报
实验四触须避障导航光敏电阻导航Word下载.docx_第1页
第1页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第2页
第2页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第3页
第3页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第4页
第4页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第5页
第5页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第6页
第6页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第7页
第7页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第8页
第8页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第9页
第9页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第10页
第10页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第11页
第11页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第12页
第12页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第13页
第13页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第14页
第14页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第15页
第15页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第16页
第16页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第17页
第17页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第18页
第18页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第19页
第19页 / 共25页
实验四触须避障导航光敏电阻导航Word下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验四触须避障导航光敏电阻导航Word下载.docx

《实验四触须避障导航光敏电阻导航Word下载.docx》由会员分享,可在线阅读,更多相关《实验四触须避障导航光敏电阻导航Word下载.docx(25页珍藏版)》请在冰点文库上搜索。

实验四触须避障导航光敏电阻导航Word下载.docx

在这种情况下,Boe-Bot通过用一个触须或两个触须碰到障碍物来判断是否碰到了障碍物。

一旦触须探测到了障碍物,通过导航程序和子程序将使Boe-Bot后退并转弯。

然后,Boe-Bot继续前进直至它遇到下一个障碍物为止。

五、实验步骤

1.安装触须传感器

2.添加触须电路

3.利用Debug窗口测试触须

BASICStamp可以通过编程以检测触须是否受压。

连接至每个触须电路的I/O引脚会监测插入的10kΩ电阻的电压。

当给定的触须未受压时,连接至触须的I/O引脚的电压是5V。

而当触须受受压时,I/O引线被短路接地(Vss),所以I/O引线的电压看起来是0V。

每次PBASIC程序启动时,所有的I/O引脚会默认等待输入。

这意味着连接至触须的I/O引脚将执行自动输入的功能。

作为输入,连接至触须电路的一个引脚会利用它的输入寄存器存储在电压为5V的时候存储一个值1(触须未受压),或在电压为0V的时候存储一个值0(触须受压)。

Debug窗口可用来显示这些值。

下面的示例程序设计用于测试触须电路的功能是否正常。

通过显示存储于P7和输入寄存器(IN7和IN5)中的二进制数,程序会为你显示BASICStamp是否已经接触到触须。

当存储于给定的输入寄存器的值为1时,说明触须没有受压。

如果值是0,说明触须已经受压。

操作步骤:

(1)连接电路板、伺服至电源。

(2)输入、运行并保存程序TestWhiskers.bs2。

(3)该程序将使用到DebugTerminal窗口,所以在程序运行时请保持串口线与BASICStamp的连接。

示例程序如下:

‘程序TestWhiskers.bs2

DEBUG"

WHISKERSTATES"

CR,

"

LeftRight"

------------"

DO

DEBUGCRSRXY,0,3,‘格式化命令,负责把指针放在Debug窗口的第0列第3行

P5="

BIN1IN5,

P7="

BIN1IN7

PAUSE50

LOOP

4.利用LED测试触须

‘程序TestWhiskersWithLeds.bs2

IF(IN7=0)THEN‘此语句用于做出选择,

HIGH1‘触须受压,设置P1为高,LED亮

ELSE

LOW1‘触须未受压,设置P1为低,LED不亮

ENDIF

IF(IN5=0)THEN

HIGH10

LOW10

通过轻轻地按下触须来测试程序。

每个触须接触到3引脚插头时,LED都会发光。

5.使用触须进行导航

可利用BASICStamp编程来检测给定的触须是否受压,并借助这些信息编程,为Boe-Bot导航。

当Boe-Bot左右摇摆或有一个触须受压时,这意味着Boe-Bot已经撞到了一些东西。

导航程序需要利用这个作为输入,判断这是什么意思,并调用一套动作,使Boe-Bot避开障碍物,转弯并沿另一个方向行进。

下面的示例程序使Boe-Bot一直前进,直到遇到障碍物,根据触须输入做出判断,然后调用子程序使Boe-Bot做出反应。

示例程序:

‘程序RoamingWithWhiskers.bs2

ProgramRunning!

‘定义变量

pulseCountVARByte'

FOR...NEXTloopcounter.

‘初始化

FREQOUT4,2000,3000'

Signalprogramstart/reset.

‘主程序

IF(IN5=0)AND(IN7=0)THEN'

Bothwhiskersdetectobstacle

GOSUBBack_Up'

Backup&

U-turn(lefttwice)

GOSUBTurn_Left

ELSEIF(IN5=0)THEN'

Leftwhiskercontacts

turnright

GOSUBTurn_Right

ELSEIF(IN7=0)THEN'

Rightwhiskercontacts

turnleft

ELSE'

Bothwhiskers=1,nocontacts

GOSUBForward_Pulse'

Applyaforwardpulse

‘子程序

Forward_Pulse:

'

forwardpulse.

PULSOUT13,850

PULSOUT12,650

PAUSE20

RETURN

Turn_Left:

Leftturn,about90-degrees.

FORpulseCount=0TO20

PULSOUT13,650

PULSOUT12,650

NEXT

Turn_Right:

FORpulseCount=0TO20'

Rightturn,about90-degrees.

PULSOUT13,850

PULSOUT12,850

Back_Up:

Backup

FORpulseCount=0TO40

6.被卡后的判断

Boe-Bot会卡在墙角里而动弹不了。

当Boe-Bot进入墙角里以后,它的触须会碰到左侧的墙壁,所以它会向右转弯,而当Boe-Bot再次前进的时候,它的右触须会碰到右侧的墙壁,所以它会向左转弯,结果再次碰到左侧的墙壁,再次转弯后又会碰到右侧的墙壁,这样不断反复而卡住。

通过修改程序来探测这个问题并作出反应。

窍门在于数出触须轮流接触的次数。

该窍门的要点是程序必须能够记住上次接触时每个触须的状态。

它会拿触须过去的状态和当前的状态相比较。

如果它们是相反的,那么次数就加上1。

如果累加后的次数超过了编程者定义的极限,那么,是时候执行U-turn动作并重新为触须接触次数计数了。

‘程序EscapingCorners.bs2

DEBUG"

FOR...NEXTloopcounter.

counterVARNib'

Countsalternatecontacts.

old7VARBit'

StorespreviousIN7.

old5VARBit'

StorespreviousIN5.

FREQOUT4,2000,3000'

Signalprogramstart/reset.

counter=1'

Startalternatecornercount.

old7=0'

Makeupoldvalues.

old5=1

IF(IN7<

>

IN5)THEN'

Oneorotherispressed.

IF(old7<

IN7)AND(old5<

Differentfromprevious.

counter=counter+1'

Alternatewhiskercount+1.

old7=IN7'

Recordthiswhiskerpress

old5=IN5'

fornextcomparison.

IF(counter>

4)THEN'

Ifalternatewhiskercount=4,

resetwhiskercounter

andexecuteaU-turn.

ENDIF'

ENDIFcounter>

4.

ELSE(old7=IN7)or(old5=IN5),

notalternate,resetcounter.

ENDIF(old7<

IN7)and'

(old5<

IN5).

ENDIF(IN7<

IF(IN5=0)AND(IN7=0)THEN'

Bothwhiskersdetectobstacle

Backup&

U-turn(lefttwice)

ELSEIF(IN5=0)THEN'

Leftwhiskercontacts

ELSEIF(IN7=0)THEN'

Rightwhiskercontacts

Bothwhiskers=1,nocontacts

Applyaforwardpulse

forwardpulse.

Leftturn,about90-degrees.

FORpulseCount=0TO20

PULSOUT13,650

FORpulseCount=0TO20'

Rightturn,about90-degrees.

PULSOUT12,850

Backup.

FORpulseCount=0TO40

六、思考题

1.触须受压后,I/O引脚上监测到的电压是多少?

输入寄存器将存储的二进制数值是多少?

如果I/O引脚P8用来作为输入引脚,当触须受压后,IN8的值会是多少,如果触须没有受压,它的值又会是多少?

触须受压后,I/O引脚上监测到的电压是0V,输入寄存器将存储的二进制数值是0。

如果I/O引脚P8用来作为输入引脚,当触须受压后,IN8的值是0,如果触须没有受压,它的值是1。

2.什么命令可以用于根据不同的变量的值跳至不同的子程序?

什么命令可以用于决定跳至某个子程序?

这些判断取决于什么?

条件语句可以用于根据不同的变量的值跳至不同的子程序,GOSUB命令用于决定跳至某个子程序。

这些判断取决于条件语句中变量的值。

3.修改程序RoamingWithWhiskers.bs2,使Boe-Bot在执行避障动作之前发出100ms的4KHz的频响。

使它发出两次频响,如果在同一个试验中两个触须同时探测到受压的话。

HIGH4

LOW4

4.修改程序RoamingWithWhiskers.bs2,使Boe-Bot在直径为1米的范围内漫游。

当你触碰其中一个触须时,它可以使Boe-Bot沿一个小圆圈(直径略小)内行走,而当你同时触碰两个触须时,它可以沿一个更大直径的圆圈行走。

GOSUBBig_Circle

GOSUBSmall_Circle

GOSUBSmall_Circle

Big_Cirlce:

PULSOUT13,730

PULSOUT12,790

Small_Cirlce:

PULSOUT12,810

II.光敏电阻导航

利用光敏电阻的特性,测量光强度的差异,并编程控制机器人小车根据光强度的差异做出行动。

Boe-Bot小车、光敏电阻、电阻(2kΩ、220Ω、1kΩ、4.7kΩ)、电容(0.01uF)、导线、手电筒等。

注意:

电阻–2kΩ(红-黑-红)

电阻–220Ω(红-红-棕)

电阻–1kΩ(棕-黑-红)

电阻–4.7kΩ(黄-紫-红)

电容–0.01μF(103)

1.连接并测试光敏电阻电路

2.编程使Boe-Bot小车漫游并避开阴影目标,或用阴影导航

3.用光敏电阻测试RC放电延时

4.用手电筒光束引导机器人小车运动

光敏电阻(硫化镉)的阻值与光照度成反比关系,即黑暗导致高阻值,明亮导致低阻值。

利用光敏电阻作为光传感器,通过检测不同的光强度,可以识别白与黑边沿、报告明亮和黑暗程度、搜寻光源等。

连接光敏电阻传感器测试电路,并与电阻相连构成电压分压器,编程监测光敏电阻与固定阻值电阻连接点的电压。

BasicStampI/O引脚的极限电压为1.4v,当电压下降或上升至1.4v时,极限电压连接电路的I/O引脚的输入寄存器就会存储一个0或1。

根据这些二进制数值进行判断,为Boe-Bot小车导航。

1.连接并测试光敏电阻电路

连接光敏电阻电路

使用不同的电压分压器进行试验

每次修改电路前要先断开电路板与电源的连接。

用其它电阻逐一代替2kΩ的电阻:

1kΩ、4.7kΩ。

利用程序测试各分压器组合,并判断在现有光照条件下,哪个电阻工作性能最好。

性能最好的组合是那个既没有过渡感应,也无须你用手遮住光敏电阻时使用的那个电阻组合。

探测阴影

被阴影遮住会增大光敏电阻的阻值,导致的Vo值变小。

连接电路板至电源。

输入、运行程序TestPhotoresistor.bs2。

验证在没有阴影时,IN6和IN3的值都为1,用手遮住某个光敏电阻,相应的存贮值由1变为0。

‘程序TestPhotoresistor.bs2

PHOTORESISTORSTATES"

---------------"

DEBUGCRSRXY,0,3,

P6="

BIN1IN6,

P3="

BIN1IN3

PAUSE100

2.漫游及避开阴影目标,或用阴影引导小车运动

漫游及避开阴影目标

观察Boe-Bot在没有阴影、右边的光敏电阻分压器(连接至P3的电路)被阴影遮住、左边的光敏电阻分压器(连接至P6的电路)、以及两个光敏电阻分压器一齐被阴影遮住时的反应。

‘程序RoamingwithPhotoresistor.bs2

'

变量

pulseCountVARByte

初始化

FREQOUT4,2000,3000

主程序

IF(IN6=0)AND(IN3=0)THEN'

Bothphotoresistorsdetects

shadow,backup&

U-turn

GOSUBTurn_Left'

(lefttwice).

ELSEIF(IN6=0)THEN'

Leftphotoresistordetects

turnright.

ELSEIF(IN3=0)THEN'

Rightphotoresistordetects

turnleft.

Neitherphotoresistordetects

GOSUBFor

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2