青少年SMART机器人活动中Basic语言的应用

2022-09-12

目前在青少年活动中应用的机器人种类繁多。就机器人硬件结构而言, 有的着眼于创新搭建, 有的侧重于趣味娱乐, 有的针对竞赛对抗等。而机器人的软件环境一般都采用图形模块化编程, 即用不同的图形代表某一具体功能, 如马达转动或者停止等。它用一种形象生动的方式引导学生如何通过编程来控制机器人, 易于接受。但是此类的编程软件一般都不具有通用性, 而且这种功能模块化的软件已属于编程的半成品, 与真正的高级语言编程相去甚远。

本文将引入的SMART机器人, 是一种应用PIC BASIC语言来编程控制的单片机机器人。它是用美国微芯公司 (Microchip) 所研发的16F88芯片作为核心元件而制作的, 适用对象为9~15岁的中小学生, 所以可以说SMART是一种注重培养学生应用高级计算机语言来编程的机器人。

Basic语言是一种高级编程语言, 全名为“Beginner's All-Purpose Symbolic Instruction Code”, 可直译为“适用于初学者的多功能指令代码”。Basic语言具有指令构成简单、易学易会、功能全面、适用面广、编程灵活等特点, 更重要的是它是一种人机对话语言, 能够通过各种指令直接控制PIC芯片, 这就给青少年操控SMART机器人带来的极大的便利。

1 简单程序快速入门

在实际机器人活动中, 青少年最感兴趣的是如何通过自己的编程让机器人动起来, 所以我们跳过形式死板、语句难懂的定义部分 (前69行) , 直接通过一个简单的主程序来快速入门。主程序如下。

程序中70~76为每行的标号。在下文中如非必要, 我们将不在注明行标号。前69行是对机器人芯片端口的定义、变量说明及初始状态设置等。在每个程序的开头一般都以固定格式套用这一部分, 所以前69行的定义部分仅作为选讲内容在本文第二部分有简介。

第70行是主程序开始的标志行, 程序名称为MAIN, 后面有冒号。第71、72、74、75行用于设定机器人两转轮的状态。其中HIGH代表打开, LOW代表关闭;冒号用于隔开同一行里的两条指令。MOTORA1代表转轮A前进, MOTORA2代表转轮A后退;同理MOTORB1代表转轮B前进, MOTORB2代表转轮B后退。由此可见第71、72行是让机器人前进, 而第74、75行是让机器人停止。第73行的指令PAUSE表示延时, 1000表示的时间是1000微秒即1秒。最后第76行END指令代表主程序结束。

这段程序下载到机器人后, 机器人的运动是前进1秒, 然后停止。

以上这段程序中, 我们也可以把第71、72行的指令定义为子程序qianjin, 把第74、75行定义为子程序tingzhi, 子程序后面需要用RETURN返回。这样主程序变得较为简单:

这种方法是用子程序集成了某种功能的指令集, 需要时直接调用。这样既可以简化编程, 又能让程序显得非常清晰明了, 所以在编程应用中经常使用此方法。这样学生就能用两种方法来完成这个简单的机器人程序了。

2 程序的定义部分简介

在SMART机器人程序的最前面有几十行的定义部分, 用于定义单片机的端口等。在机器人编程中, 这部分一般都比较固定, 而且涉及的单片机知识不适合向中小学生介绍, 所以在此不详细列明, 有意者可通过邮件与笔者交流。

3 机器人唱歌程序

SMART机器人的微处理器输出端口PORTB.7, 连接的是压电式蜂鸣器。它和电脑主板上的蜂鸣器基本原理相同, 都用于发出简单的提示音。

在编程中, 让机器人发出声音的常用命令为FREQOUT, 应用如下:

其中的Piezo我们在端口定义部分已经指定为输出端口PORTB.7, 300代表发出声音的持续时间是300微秒, 即0.3秒, 1480为输出的频率。第二行表示关闭此端口, 即为关闭蜂鸣器。可以让学生自己体验, 改变输出频率会使蜂鸣器发出的声音音调也产生改变。通过调节, 可以使蜂鸣器模拟发出音乐中的7个音符。儿歌《找朋友》的乐谱如下:

编程中, 我们将上述每个音符按顺序编程, 并在各个音符之间用PAUSE指令设定短暂的间隔。这样我们就可以让机器人演奏出《找朋友》的音乐了。

同样的道理, 我们可以编写出《生日歌》等其他乐谱的程序。

4 红外传感器程序

SMART机器人的前部装有红外传感器来检测前方的障碍。我们可以引导学生通过观察得知最中间的是红外信号的发射二极管, 旁边两个是接收二极管, 而最外侧的两个是用于显示接收信号状况的红色指示灯。当前方没有障碍时, 无反射信号, 红色指示灯常亮;当前方有障碍时, 障碍物会把红外信号反射回来, 接收二极管感应到反射信号后红色指示灯会一直闪烁。传感器线路板上有一个可调电阻器, 可用来调节传感器的感应距离。

传感器线路板与主线路板上的J2口连接, 而J2又练到微处理器的输入端口PORT A.0上, 所以在程序中可定义为:J2 VAR P ORTA.0, 也可以直接定义为objectsen VAR PORTA.0, 表示这是检测障碍物的信号端。

定义完端口以后, 程序如下:

此程序表示如果机器人遇到障碍则停止, 否则将继续前进。要注意的是判断指令后面必须跟有指令ENDIF来结束判断, 学生编程时常会忘掉。需要机器人绕过障碍时, 只需将THEN后的指令改为左拐弯或者右拐弯的指令即可。

另外我们可以利用红外传感器接收信号, 代替接力赛中的接力棒的传递, 这样可以用几个SMART机器人来模拟接力赛。

5 调速程序及8字舞等应用

SMART机器人的前进速度可以通过程序来调整, 具体来说就是通过调整前进和停止的持续时间。机器人如果走走停停, 自然前进速度慢了一些。

同样的道理, 我们如果让一个转轮持续前进, 而另一个转轮走走停停的话, 就可以让机器人拐出一段圆弧。如果重复的次数更多, 机器人就可以大致绕一个圆圈回来, 完成绕一个圆的运动。我们可以利用这样的办法, 来让学生尝试编写机器人“∞”字舞的程序。另外我们也可以引导学生, 编写出让机器人走蛇形路线的程序。

6 结语

通过SMART机器人活动, 青少年可以结合学过的多学科知识点, 通过细致的观察、不懈的调试和良好的团队合作, 在不断的创造和超越中提高自身的实践能力和创新精神, 还能够通过初步接触BASIC语言, 建立一定的编程基础, 逻辑思维能力也得到锻炼和提高。

摘要:近些年, 社会各界对青少年的素质教育越来越重视。而在众多素质教育的方式方法中, 电脑机器人活动不仅综合了多种学科知识的应用, 还能够激发青少年对科学技术的浓厚兴趣, 被公认为是能够培养青少年动手动脑能力和创新能力的最优秀的科技活动。所以青少年电脑机器人活动在最近几年发展迅速, 并得以逐步普及。

关键词:青少年机器活动,BASIC语言,应用

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:关于成本预算管理在煤矿企业的应用及实践下一篇:EPC总承包模式下的工程造价控制