通过编程实现按键控(kòng)制OLED屏(píng)中的(de)方块移动(dòng)。"/>

大 创 实 验 室

更多内容请联系我们

第三章 科创板-键(jiàn)位控制

发表时间(jiān):2020-08-24 10:32作者:大创实验室来源(yuán):大创实验室网址:http://www.bellistspa.com


第三章第2课 科(kē)创板-键位(wèi)控制




1、学会使用(yòng)按键(jiàn)驱动板载蜂(fēng)鸣(míng)器工(gōng)作;

2、通过编程实现(xiàn)按(àn)键控制OLED屏中的方块(kuài)移动。

1
按键驱动蜂鸣(míng)器——Science and Math

1、键位发声

我们(men)首先用按键控制蜂鸣器执行(háng)简单的功能:当按键上按下(xià)时,蜂鸣器播放声音(yīn)1秒(miǎo),然后停(tíng)止发声。

认识“结束声音”代码块

“结束声音”代(dài)码块位于“执行器”模块中,它的功能是终止蜂(fēng)鸣器(qì)的发声。


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


将上图程序下载(zǎi)到科创板,当按键上(shàng)按下时,蜂鸣器播(bō)放声(shēng)音1秒,然后(hòu)停止(zhǐ)发(fā)声(shēng)。

2、函数(shù)应用

当我们的(de)程序中需要多次用到一组相(xiàng)同的代码时,我们可(kě)以用函数来实(shí)现,每(měi)次用到(dào)这段代码(mǎ)时调用即可(kě)。

认识“创建函(hán)数”代码(mǎ)块

“创建函数(shù)”代码块(kuài)位于“函数”模(mó)块(kuài)中,它的功能是创建一(yī)个不带输出值的(de)函数(shù)模块。


在函(hán)数中可以(yǐ)设置变量,点击蓝色设置按钮,弹(dàn)出参(cān)数框,将参数X拖到右边输(shū)入(rù)下边即可 这时候(hòu)代(dài)码(mǎ)块(kuài)上出现了变量参数X

下(xià)面我们以一个实际(jì)运用来说明一(yī)下“创建函数”代(dài)码块的使用方法:


上(shàng)面的函数表示:每间(jiān)隔x微秒(1秒=1000毫(háo)秒=1000000微秒(miǎo)),蜂鸣器电平切换一次,即表示生成频(pín)率为1000000/2x的声(shēng)音信号。

当我们创建好(hǎo)函(hán)数代码时,在“函数”模块中(zhōng)会出现一个(gè)新的代码块,“执行函数参数X”代码块,它的(de)作用是执行用户自(zì)定义参数为X的函数块。


通过(guò)上、下、左(zuǒ)、右四个按键(jiàn)(对应的管脚分别为:12、23、36、2,其中按键左的逻辑是反的(de)),控制蜂(fēng)鸣器发出不(bú)同频率(lǜ)声音的程序:


运行上面的程序,我(wǒ)们(men)就可以通过(guò)点击不同(tóng)按键控制蜂鸣器发出不同(tóng)频率的声(shēng)音了。

3、程序中(zhōng)断命令(lìng)

“中断”是指科创板在(zài)运(yùn)行(háng)程序的(de)过程中(zhōng),由(yóu)于出现一些(xiē)特(tè)别的情况,停止当前(qián)的程序去执行新(xīn)的程序,等处(chù)理完成后(hòu)再返回原来被暂停的程序(xù)继(jì)续执行。

中断可(kě)以类比生活中的例子:比如你正在(zài)看电(diàn)视(shì),突然门口门铃响(xiǎng)起,有快递送上门,所(suǒ)以你就暂(zàn)停(tíng)看(kàn)电视去拿快递,等收完(wán)快(kuài)递后(hòu)继续看(kàn)电视。在这个(gè)过(guò)程中,看电视是你主要的任务(主(zhǔ)程序),而收快(kuài)递就是一个中(zhōng)断(duàn)过程,门铃响起就是一个中断的标志(触(chù)发中断的条件)。中断(duàn)示(shì)意图如下(xià):


认识“中断(duàn)”代码块(kuài)

“中断”代码块位(wèi)于“输入/输出”模(mó)块(kuài)中,它的功能(néng)是设置(zhì)指定管(guǎn)脚的(de)中断(duàn)模式(shì)为(wéi)上升、下降(jiàng)或者改变,并执行回调函数。

中断触发的条件有(yǒu)三种:上升、下降和(hé)改变。上升模式为当管脚由低电平变为高电平时,触发中断;下降(jiàng)模式为当管脚由高电平变为低电平时(shí),触发中断;改变模式为(wéi)当管脚(jiǎo)的(de)电平发生变化的时候,触发中(zhōng)断。




这里我们展示一个实际中断函数的程序,做完(wán)这个,大家就会更(gèng)深入的了解中断的含义(yì)了(le),程序如下:


此程序(xù)设置(zhì)的中(zhōng)断是(shì)当检测到按键上被按下时(shí),就会执行回调函数里(lǐ)的(de)程序(xù)。将上面的程序(xù)下载(zǎi)到科创板后,我们点击按键上,就可以听到蜂鸣器发出的(de)三种不(bú)同声音了(le)。

二(èr)、键位控(kòng)制(zhì)OLED屏——Technology and Math

我们可以(yǐ)驱动按键去控制多彩(cǎi)LED灯(dēng)以及蜂鸣器工作了,接(jiē)下(xià)来(lái),我们要(yào)做的就是(shì)要让按键功能更(gèng)加直观的体现出来。大家来思考一个问题,我们可不(bú)可以通(tōng)过按键移(yí)动屏幕上显示的方块呢,怎样(yàng)去实现(xiàn)这(zhè)个功能呢?

为了实现上(shàng)述的功能,我们可以分(fèn)步进行:

1、绘制方块(kuài)

在(zài)前(qián)面(miàn)的课(kè)程里,我(wǒ)们已经学过用OLED屏显示矩形,这(zhè)里用到同样的代码块“绘制矩形”,不过其(qí)中的参数需要(yào)调(diào)整一下(因为(wéi)我们要控制方块(kuài)移(yí)动(dòng),所以方(fāng)块(kuài)尺寸(cùn)要(yào)合(hé)适(shì))。

我们将方块的边(biān)长定(dìng)为4,那么(me) “绘制矩形”代码块里关(guān)于宽度高度设置的两个变量要(yào)改为(wéi)4;开始时方块要显示在屏幕中央,相对应(yīng)的起点参数设置x=62,y=30。



上面(miàn)两种程序表达方式都可以,第二种里(lǐ)面的“科(kē)创板oled初始化”代码(mǎ)块 ( “科创板(bǎn)oled初始化”代码块位于“科创板v2.0”模块(kuài)里)与第一种里面的 两代码块的功能(néng)是(shì)一样(yàng)的。相较于(yú)第一(yī)种(zhǒng)程序表达,第二种更简(jiǎn)洁,所以后面我们(men)使(shǐ)用(yòng)第二种表达方式讲解剩余程序部分。

此(cǐ)时(shí)绘(huì)制(zhì)的方块只有四条边,中间是空的(de),所以要在(zài)“填充”后面打钩,这样(yàng)这个边(biān)长为4的方块才能填(tián)充起来。


运行以上程序(xù),OLED屏(píng)中间会显(xiǎn)示一个填充后的小(xiǎo)方(fāng)块。


2、施(shī)加约束

认识“约束”代(dài)码块

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



因为屏幕的横向范围为0~127,纵向范围为0~63,方块边(biān)长为(wéi)4,所(suǒ)以x的范围为0~124,y的范(fàn)围为0~60,可以用以下代码块来限(xiàn)定x与y的范(fàn)围,这样方块就不会超(chāo)出(chū)屏幕了。


3、按键(jiàn)控制

右键按下让x增加4,y保持(chí)不(bú)变(biàn)(小方块向右移动(dòng)4步):


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

我(wǒ)们把确定键作为(wéi)初始化按键(让小方块回到OLED屏(píng)幕中点):


程(chéng)序分块到这里就(jiù)讲解完成了,接(jiē)下来我们只需要(yào)把之前编写好的程序块结合起(qǐ)来就可以实现按键控制小方块的(de)移动(dòng)了,程序如下:


运行以上程序,按键(jiàn)的上(shàng)下左右可以控制小方块的(de)移动方向,确定键按下时,小方块(kuài)回到(dào)屏(píng)幕中心。

三、延伸与扩展——Arts

想一(yī)想(xiǎng),我们可不(bú)可(kě)以用屏幕和按键做一个贪吃蛇游戏呢,怎样去实现?


请以小组的形式进(jìn)行合作,尝试使用屏幕(mù)和按(àn)键做(zuò)一个贪吃蛇游戏 。

设计(jì)要(yào)求(qiú):

能够用按键操控贪吃(chī)蛇小(xiǎo)游戏,其中确定键可以(yǐ)暂停与开始游戏;

保证控制方式(shì)安全可靠(kào)。



文章(zhāng)分类(lèi): 教学课程
分享到:
山东省济南市历下区舜华路750号(hào)大学(xué)科技园北区3号楼
服务热线(xiàn):13256445996                                  www.bellistspa.com

首页_JDB(中国)电子_官方网站

首页_JDB(中国)电子_官方网站