发表日期:2017-08-31 11:47:59文章编辑:浏览次数: 标签:亮宁机器人
一、预备知识
亮宁机器人主板上的输入输出口众多,其中分为数字口和模拟口,模拟口又分为模拟输入口和模拟输出口。本节我们来学习位于主板正上方的数字口和主板右边的模拟输入口(如图1所示)的使用方法。
数字口之所以不分输入和输出,是因为一个数字口既可以当输入口用又可以当输出口用。只需要在使用之前做一个声明便可。数字口和模拟口最大的区别就是,数字口只能输入或输出一个数字0或1,而模拟口可以输入或输出的数据范围为0到1023。根据这一个特性,我们在使用相关传感器或者设备时,选择正确的引脚连线。例如,灯板、数字巡线传感器、触碰传感器等就连接在数字口上;伺服电机、火焰传感器、模拟巡线传感器等就需要连接在模拟口上。
图1 主板上的引脚分布
二、数字口
1、数字输出口
我们已经了解到,在使用数字口前要声明数字口到底是当输入口还是输出口使用。可视化平台中的“函数”下有“数字口操作”的功能。声明方法如图2所示。
例如,LED单色灯板,就是需要连接在数字口上(灯的亮与灭实际就是通电与断电,所以只需要数字0和1就能代表其意义)。由于是主板向灯板输出高电位(通电)或低电位(断电),所以这时候要将数字口设置为输出口(OUTPUT)。我们只需要往对应的数字口写入高电位就能使等亮起来。程序如图3所示。
图2 数字口输入与输出的声明
2、数字输入口
数字口当输入口使用,其实我们在一开始接触亮宁机器人就已经使用到了。我们最常按的启动按钮(K2)就是连在一个数字口上的,而这个数字口在底层代码中已经设置为输入口了。现在我们借助亮宁机器人套装中的触碰传感器来学习它。触碰传感器的引脚说明如图4所示。
图3 触碰传感器的引脚说明
用一根三屏线,就可以很方便的将触碰传感器与主板相连。连线方法如图5所示。连好
线后借助,LCD屏幕显示触碰传感器按下和弹起返回的数据。程序如下。
#include <LNDZ.h>
lc lcd;
int n;
void init()
{
lcd.begin(16,2);
B_start();//启动按钮
DI(31);
//触碰传感器是往主板内传递高点位(1)与低电位(0),所以声明该数字口为输入口
lcd.bg(1);
}
void repeat()
{
n=DR(31);//读取该数字口传来的值并赋给变量n
lcd.print(n);
delay(100);
lcd.clear();//为了实时更新,需要清屏
}
下载程序后观察发现,当触碰传感器按下时返回值为0,弹起来后返回值为1。某些时
候我们可以用这个触碰传感器代替启动按钮。具体程序如下:
#include <LNDZ.h>
void init()
{
DI(31);
while (DR(31)==1);
//当31号数字口传来的值始终是1时,或者讲当触碰传感器始终没有被按下时,一直//在这里空循环
beep(1000);
//当触碰传感器被按下,传来值0时,结束while循环,便鸣叫一声,以示成功
}
void repeat(){}
三、模拟输入口
模拟输入口其实早已经是我们的“老朋友”了,模拟巡线传感器就必须连接在模拟输入口
中。模拟巡线传感器用一个三位整数来表示自己“看到”的颜色。因为硬件上,就已经将区分了模拟输入口和模拟输出口(主板右侧PWM),所以我们在使用模拟输入口前,并不需要声明模拟口为输入或是输出。可视化平台中模拟输入口的操作界面如图6所示。
图4 模拟输入口操作界面
巡线时用以下语句来获取模拟输入口所传递回来的值。
ll=AR(4); l=AR(2); m=AR(1); r=AR(3); rr=AR(5);
其中的“AR”,就表示读取模拟输入口的值,后面的参数就是模拟输入口的编号。亮宁机器人套装中需要连接模拟输入口的还有火焰传感器。后面会有专门的章节介绍火焰传感器,在这里不做探讨。
顺便说一下,如果需要,我们用pinMode或DI,DO,也可以将模拟口转化为对应的数字口。但模拟输入口听接口编号要用A0~A15来注明,以便与其他端口的编号加以区别。