当前位置:首页 > 名师导学 > 专家点拨 > 亮宁机器人特有的符号系统(图文)

亮宁机器人特有的符号系统(图文)

发表日期:2018-01-19 20:17:39文章编辑:信息管理员浏览次数: 标签:符号系统    

使用亮宁机器人的师生,可能注意到了这样一个特色,即亮宁机器人有自己特有的一套符号系统。如果还没有发现这一特色的师生,那我们就随本文来理解为什么我们要有这套特有的符号系统,我们使用这套系统有什么优势。

    我们先模仿程序员,在Arduino上书写一段我们所熟悉的代码,看看它有何特色。

#include <LNDZ.h>

int   leftLeft,left,middle,right,rightRight;

int   blackLineNumber;

int   times=0;

#defint  leftLeftEye  4

#defint  leftEye  2

#defint  middLeEye  1

#defint  rightEye  3

#defint  rightRightEye  5

void  checkBlackWhite()

{

 leftLeft=analogRead(LeftLeftEye)>550;

    left=analogRead(LeftEye)>490;

    middle=analogRead(middLeEye)>510;

    right=analogRead(rightEye)>500;

    rightRight=analogRead(rightRightEye)>560;

    blackLineNumber=leftLeft+left+middLe+right+rightRight;

}

这段程序与我们平时的程序相比,有这几个特色。可能说到这里,师生们早就按奈不住,说程序好长。

首先程序的变量名较长,均由至少一个单词组成。两单词的连接处用一个大写字母以示区别。特别是传感器连接的端口,均采用宏定义方式,用单词或单词组合来替代各端口号。如果用上述程序来教中小学生的话,可能畏难情绪首先还不是来自我们的学生。

与我们熟悉的下面的程序段相比差异很大,但他们两者的运行效果是相同的。

#include <LNDZ.h>

int  ll,l,m,r,rr;

Int  n,t=0;

void  check()

{

   ll=AR(4)>550;

   l=AR(2)>490;

   m=AR(1)>510;

   r=AR(3)>500;

   rr=AR(5)>560;

   n=ll+l+m+r+rr;

}

那谁的优势大,哪种形式的程序更受欢迎呢?

    这要从书写程序的人的不同状况来分析。

    对于程序员来说,他们经常面对许多复杂的程序,他们很难记住每段程序每个变量代表的意义。所以用较长的变量名,常量名来描述各变量的意义,端口的编号。一段时间后,他们再读这段程序时,就一目了然。所以这样的程序对他们而言,具有很强的可读性。但这样的程序,对我们英语基础较差,程序功底不够的学生而言,就会感觉莫大的困难,可能会引起中小学生望而却步,产生知难而退 的想法。所以,亮宁机器人就应运而生自己特有的符号系统,使程序的可读性适合广大的师生,让程序简短明了。变量、常量、函数名都用及其简单的字母组合来表示。例如,我们将digitalReadanalogRead简化为DRAR,digitalWriteanalogWrite简化为DWAW,将lcd.background(1)简写成lcd.bg(1)等。这样一方面可以大大地减少了中小学生书写程序、记忆程序代码的时间与难度,又不失程序的可读性。

    这样的简化,其优势通过上述两段代码的比较可以评判。但它也不是有没有劣势,如果我们书写程序的人不按亮宁这些约定俗成的方式去任意组合字母,对于程序书写本人的日常训练不会有什么问题的。单对于师生之间的沟通会带来困难。

例如,我们总是用lllmrrr来代表这个几个常用的参数,师生们一看就明白。但有些同学却习惯于用:a=AR(4)b=AR(2)c=AR(3)....,这些字母除了顺序性没有其他意义,老师看程序时,首先必须判断你的字母所代表的意义,还要记住它们,然后才能看懂后面的程序。所以,才有了亮宁这些约定俗成的符号,如check(),checkB(),checkW(), findline(),left(),right()等特定的函数名。tt0t1等特人的变量名,代表时间或过路口的次数等。还用sp,sp0,sp1等来代表驱动电机的速度等。

又如:s1,s2代表不同的伺服马达,lcd代表1602电子屏,led代表LED灯板,fire代表火焰传感器等。后来在师生训练过程中,学生慢慢地也形成了用拼音字母组合来代表一些设备名称,也不失为一种好办法。例如csb用来代表超声波传感器等。

    本来C语言体系中,if(ll==1)可以写成if(ll)if(ll==0)可以写成if(! ll)但考虑到入门者容易理解,通常都写成有双等号的形式。亮宁程序中将n=ll+l+m+r+rr这样一个表达式,也使许多复杂的表达式得到简化。同时,让师生之间、学友之间的交流简单化。

    为了用可视化界面成复杂表达式,亮宁的符号系统还把生成的表达用于生成的复杂表达式。如图1所示。即生成表达式时,可以调用原来定义过的表达式来构成表达式。所以,可视化系统会自动将已定义的表达式保存下来供调用。值得一提的是,关闭当前程序后,系统里的现有的这些表达式就丢失了,并不能保存下来。不关闭可视化平台,新建程序,则原来的表达式还可以调用。

 

表达式生成.png
    

1 表达式生成与调用

亮宁机器人的符号系统还延伸到硬件系统。例如,硬件上有标志为GND”或“G”或“-”的接线柱或针,都表示公共地线,即所有设备都需要接的线。它既是电池负极、供电线的负极,又是所有输入输出的公共端。所的标志有“Vcc”或“5V”或“+”的接线柱或针,均为+5V供电端。并且规定,用黑白双线来连接这两个端子。黑线两端规定接GGND,白线两端规定接5VVcc

稍有电学常识的人都知道,黑白颜色对导电是没有影响的。那为什么要强调一定是白线接正黑线接负呢?因为这也是一种符号系统,使操作者减少随意性,不容易造成反接。因为电池或供电系统反接会对硬件造成损伤。

还有,亮宁的地面循线传感器安装板上的7个安装位置的编号,为什么不是从左至右或反过来编号呢?如图2,而是1号在正中间,然后两边是23号,再45号,最两边才是67号。这是为了选用不同传感器个数时,用户接线方便而布置的。大家可以试试,你选用1~7几个传感器,都能用连在一起的几屏线来连接传感器与主板。

 传感器编号.png

 

 图2 传感器支架位置编号顺序

 

 由于中小学生学习的周期不长,所写的程序也不复杂,所以使用亮宁机器人简化后的符号系统,只会减轻学生的学习压力,降低差错率。不会有看到这些不认识的英文代码就有头皮发麻的感觉,去除了很多人害怕C语言的心理阴影。

   如果编程者担心以后这些代码自己看不懂,我们还可以在程序后面用双斜杠,在程序语句后用汉字作出注释。还可以用“/*……*/”在程序任何位置插入一段说明文字。这样做是必要的,特别是我们将符号系统简化后的程序,为以后自己阅读或他人修改程序埋好伏笔。

期待本文给亮宁用户解开一些迷惘。  

如没特殊注明,文章均为亮宁电子原创,转载请注明出处
相关新闻

论中小学机器人教练员应该具备的基本素质

【摘 要】本文重在提示中小学机器人教练员建立必要的自信心和自我重塑,提出机器人教练员一些必须具备的基本素质,提醒可能成为机器人教练员的老师和目前处于探索阶段的机器...

日期:2018-03-19

亮宁机器人特有的符号系统(图文)

使用亮宁机器人的师生,可能注意到了这样一个特色,即亮宁机器人有自己特有的一套符号系统。如果还没有发现这一特色的师生,那我们就随本文来理解为什么我们要有这套特有的符号系...

日期:2018-01-19

亮宁可视化编程平台V2.2第6讲(图文)

第6讲 循环程序 我们先来看看顺序结构的程序实例。我们先用可视化系统设置如下: 上述设置的程序运行结果是八个LED灯同时被点亮。 我们看不出八个灯的点亮语句的顺序...

日期:2017-10-09

数字口与模拟输入口操作详解

一、预备知识亮宁机器人主板上的输入输出口众多,其中分为数字口和模拟口,模拟口又分为模拟输入口和模拟输出口。本节我们来学习位于主板正上方的数字口和主板右边的模拟输入口...

日期:2017-08-31

亮宁可视化编程平台V2.2第5讲(图文)

分支结构之二 还有另外一种形式的分支结构,我们称这为开关语句。如下图所示。 点击对话框里的“+”号按钮,可以增加分支的数量。然后将在此分支下执行的...

日期:2017-08-06

亮宁可视化编程平台V2.2第4讲(图文)

为了清楚说明分支结构的使用方法,这里先借用五红外接收头这个设备。先对设备进行说明。 在使用火焰传感器之前,先要准备一些变量备用。 然后将几个重要的值赋...

日期:2017-08-04