第三章 科创板-键位控制

大创实验室
2020-08-24


第三章第2课 科创板-键位控制




1、学会使用按键驱动板载蜂鸣器工作;

2、通过编程实现按键控制OLED屏中的方块移动。

1
按键驱动蜂鸣器——Science and Math

1、键位发声

我们首先用按键控制蜂鸣器执行简单的功能:当按键上按下时,蜂鸣器播放声音1秒,然后停止发声。

认识“结束声音”代码块

“结束声音”代码块位于“执行器”模块中,它的功能是终止蜂鸣器的发声。


按键控制蜂鸣器发声程序如下:


将上图程序下载到科创板,当按键上按下时,蜂鸣器播放声音1秒,然后停止发声。

2、函数应用

当我们的程序中需要多次用到一组相同的代码时,我们可以用函数来实现,每次用到这段代码时调用即可。

认识“创建函数”代码块

“创建函数”代码块位于“函数”模块中,它的功能是创建一个不带输出值的函数模块。


在函数中可以设置变量,点击蓝色设置按钮,弹出参数框,将参数X拖到右边输入下边即可 这时候代码块上出现了变量参数X

下面我们以一个实际运用来说明一下“创建函数”代码块的使用方法:


上面的函数表示:每间隔x微秒(1秒=1000毫秒=1000000微秒),蜂鸣器电平切换一次,即表示生成频率为1000000/2x的声音信号。

当我们创建好函数代码时,在“函数”模块中会出现一个新的代码块,“执行函数参数X”代码块,它的作用是执行用户自定义参数为X的函数块。


通过上、下、左、右四个按键(对应的管脚分别为:12、23、36、2,其中按键左的逻辑是反的),控制蜂鸣器发出不同频率声音的程序:


运行上面的程序,我们就可以通过点击不同按键控制蜂鸣器发出不同频率的声音了。

3、程序中断命令

“中断”是指科创板在运行程序的过程中,由于出现一些特别的情况,停止当前的程序去执行新的程序,等处理完成后再返回原来被暂停的程序继续执行。

中断可以类比生活中的例子:比如你正在看电视,突然门口门铃响起,有快递送上门,所以你就暂停看电视去拿快递,等收完快递后继续看电视。在这个过程中,看电视是你主要的任务(主程序),而收快递就是一个中断过程,门铃响起就是一个中断的标志(触发中断的条件)。中断示意图如下:


认识“中断”代码块

“中断”代码块位于“输入/输出”模块中,它的功能是设置指定管脚的中断模式为上升、下降或者改变,并执行回调函数。

中断触发的条件有三种:上升、下降和改变。上升模式为当管脚由低电平变为高电平时,触发中断;下降模式为当管脚由高电平变为低电平时,触发中断;改变模式为当管脚的电平发生变化的时候,触发中断。




这里我们展示一个实际中断函数的程序,做完这个,大家就会更深入的了解中断的含义了,程序如下:


此程序设置的中断是当检测到按键上被按下时,就会执行回调函数里的程序。将上面的程序下载到科创板后,我们点击按键上,就可以听到蜂鸣器发出的三种不同声音了。

二、键位控制OLED屏——Technology and Math

我们可以驱动按键去控制多彩LED灯以及蜂鸣器工作了,接下来,我们要做的就是要让按键功能更加直观的体现出来。大家来思考一个问题,我们可不可以通过按键移动屏幕上显示的方块呢,怎样去实现这个功能呢?

为了实现上述的功能,我们可以分步进行:

1、绘制方块

在前面的课程里,我们已经学过用OLED屏显示矩形,这里用到同样的代码块“绘制矩形”,不过其中的参数需要调整一下(因为我们要控制方块移动,所以方块尺寸要合适)。

我们将方块的边长定为4,那么 “绘制矩形”代码块里关于宽度高度设置的两个变量要改为4;开始时方块要显示在屏幕中央,相对应的起点参数设置x=62,y=30。



上面两种程序表达方式都可以,第二种里面的“科创板oled初始化”代码块 ( “科创板oled初始化”代码块位于“科创板v2.0”模块里)与第一种里面的 两代码块的功能是一样的。相较于第一种程序表达,第二种更简洁,所以后面我们使用第二种表达方式讲解剩余程序部分。

此时绘制的方块只有四条边,中间是空的,所以要在“填充”后面打钩,这样这个边长为4的方块才能填充起来。


运行以上程序,OLED屏中间会显示一个填充后的小方块。


2、施加约束

认识“约束”代码块

“约束”代码块位于“数学”模块中,它的功能是限制数字或者变量介于两个指定的数字之间。



因为屏幕的横向范围为0~127,纵向范围为0~63,方块边长为4,所以x的范围为0~124,y的范围为0~60,可以用以下代码块来限定x与y的范围,这样方块就不会超出屏幕了。


3、按键控制

右键按下让x增加4,y保持不变(小方块向右移动4步):


同理,可以推写出上、下、左键按下时的程序块(需要注意的是左键的逻辑是反的,所以左键的判定条件是当管脚36的值等于0时)。

我们把确定键作为初始化按键(让小方块回到OLED屏幕中点):


程序分块到这里就讲解完成了,接下来我们只需要把之前编写好的程序块结合起来就可以实现按键控制小方块的移动了,程序如下:


运行以上程序,按键的上下左右可以控制小方块的移动方向,确定键按下时,小方块回到屏幕中心。

三、延伸与扩展——Arts

想一想,我们可不可以用屏幕和按键做一个贪吃蛇游戏呢,怎样去实现?


请以小组的形式进行合作,尝试使用屏幕和按键做一个贪吃蛇游戏 。

设计要求:

能够用按键操控贪吃蛇小游戏,其中确定键可以暂停与开始游戏;

保证控制方式安全可靠。