通(tōng)过编程实现按键控制OLED屏中的方块移动。"/>

大(dà) 创 实 验 室

更多内容请联系我们

第三章 科创板-键位控(kòng)制

发表(biǎo)时间:2020-08-24 10:32作者:大创实验室来源:大创实验室网址:http://www.xiamen.guangzhou.shanxi.linyi.jiaxing.zz.pingliang.ww38.viennacitytours.com


第三章第(dì)2课 科创板(bǎn)-键位控(kòng)制(zhì)




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

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

1
按键驱动蜂(fēng)鸣器(qì)——Science and Math

1、键(jiàn)位发声

我们首先用按(àn)键控(kòng)制蜂(fēng)鸣(míng)器执(zhí)行简(jiǎn)单(dān)的功能:当按键上按(àn)下时,蜂鸣器播(bō)放声音1秒,然(rán)后(hòu)停止发声。

认识“结束声音”代(dài)码(mǎ)块

“结束(shù)声音(yīn)”代(dài)码块(kuài)位于“执行器”模块(kuài)中,它的功能(néng)是终止蜂鸣器的发声。


按键控制(zhì)蜂鸣器发声程序如下:


将上图程(chéng)序下载到科创(chuàng)板(bǎn),当按键上按(àn)下(xià)时,蜂鸣器播放声音(yīn)1秒,然后停止(zhǐ)发声。

2、函数(shù)应(yīng)用

当(dāng)我们的程序中需(xū)要多次用(yòng)到一组相同的代码时,我们可以用函(hán)数来实现,每次用到这段代码时调用即可。

认识“创建函数”代码块

“创(chuàng)建函数”代(dài)码(mǎ)块位于“函数”模块中(zhōng),它的功能(néng)是创建一个(gè)不带输出值的函数模块。


在函数中可以设置变量,点击蓝(lán)色设置按钮,弹出参数(shù)框,将参(cān)数X拖到右边输入下边即可 这时候代码块上出现了变量(liàng)参数X

下面我们以(yǐ)一个实际运(yùn)用(yòng)来说明一下“创(chuàng)建函数”代码块(kuài)的使用方法:


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

当我们创建好(hǎo)函(hán)数代码时,在(zài)“函数”模块中会(huì)出现一个新(xīn)的代码块,“执(zhí)行(háng)函数参数X”代码(mǎ)块,它(tā)的作(zuò)用是执行(háng)用户自定义参数(shù)为X的函(hán)数块。


通过上、下(xià)、左、右四个按键(对应的管脚分(fèn)别(bié)为:12、23、36、2,其中按键左的逻辑是反的),控(kòng)制(zhì)蜂鸣器(qì)发出(chū)不同(tóng)频率声音的程序:


运行上面的程序(xù),我们就可(kě)以(yǐ)通过点击不(bú)同(tóng)按键控制蜂鸣器发出不(bú)同频率(lǜ)的声音了。

3、程序中断命令

“中断”是(shì)指科(kē)创板在运行程序(xù)的过程中,由于(yú)出现一些特别的(de)情况,停止当前的程序去执行新的程序,等处理完成后再(zài)返(fǎn)回原(yuán)来被暂停的程序继续(xù)执行。

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


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

“中断(duàn)”代码块位于(yú)“输入(rù)/输(shū)出”模块(kuài)中(zhōng),它(tā)的功能是设置(zhì)指定(dìng)管脚的中(zhōng)断模式为上升、下(xià)降或者改变,并执行(háng)回调函数。

中断触发的条件有三种:上升、下降(jiàng)和改(gǎi)变。上升模式为当管脚由低电平变为高(gāo)电(diàn)平时,触发中断(duàn);下降模式为(wéi)当管脚(jiǎo)由高电平变为低电平时,触发中断(duàn);改变(biàn)模(mó)式为(wéi)当(dāng)管脚的电平发生变化的时候,触发中断。




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


此程序(xù)设置的(de)中断是当检测到按键上被按下时,就会执行回调函(hán)数里的(de)程序(xù)。将(jiāng)上面的程序下载到科创板后,我们点击按键(jiàn)上,就可以听到蜂鸣器发(fā)出(chū)的三(sān)种不同声音了。

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

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

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

1、绘制方块

在前面的课程里(lǐ),我(wǒ)们已(yǐ)经学过用OLED屏显(xiǎn)示矩形,这里(lǐ)用到同(tóng)样(yàng)的代码块(kuài)“绘制矩形”,不过其中的(de)参数需要调整一下(因(yīn)为我们要控制方块移动,所以方块尺寸要合适)。

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



上面两种程序表达方(fāng)式都可(kě)以,第二种里面的“科创(chuàng)板oled初始化”代码(mǎ)块 ( “科创板oled初始化”代码块位于“科创板v2.0”模(mó)块里)与第一种里面的(de) 两代码块的功能是一样的。相较于第一种程序表达(dá),第二种(zhǒng)更简洁,所以(yǐ)后面(miàn)我们使用第二种表达方(fāng)式讲解剩余程序部分。

此时绘(huì)制的方(fāng)块只(zhī)有(yǒu)四条边,中间(jiān)是空的(de),所以要在“填充”后(hòu)面打钩,这样这个边长(zhǎng)为4的方(fāng)块(kuài)才能填充起来。


运行以上(shàng)程序,OLED屏中间会显示一个填充后的小方(fāng)块。


2、施加约束

认识“约束”代码块

“约(yuē)束(shù)”代码块位于“数学”模块中,它(tā)的功能是限制数(shù)字或者变量介于两个指(zhǐ)定的数字(zì)之间。



因为屏幕的横向(xiàng)范(fàn)围为0~127,纵向范(fàn)围(wéi)为0~63,方块边长(zhǎng)为4,所以(yǐ)x的范围为0~124,y的范围为0~60,可以用以下代码块来限定x与y的范围,这(zhè)样(yàng)方块就不会(huì)超出屏幕了。


3、按键控制(zhì)

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


同理(lǐ),可(kě)以推写出上、下、左键按(àn)下时的程序块(需(xū)要注意的(de)是左键的逻(luó)辑是反的,所以左键(jiàn)的判定条件(jiàn)是当(dāng)管(guǎn)脚36的值等于0时)。

我(wǒ)们把确定(dìng)键(jiàn)作为初始化按键(让小方块回到OLED屏(píng)幕(mù)中点):


程序分块到这里(lǐ)就(jiù)讲解完成了(le),接(jiē)下来我们只需要把之前编(biān)写(xiě)好的程序(xù)块结合(hé)起来就可以实现按键控制小方块的移动(dòng)了,程序如下:


运行(háng)以上程序,按键的上下左右(yòu)可以控(kòng)制小方块的(de)移动方向,确定(dìng)键按下时,小方块回(huí)到屏幕(mù)中心。

三(sān)、延(yán)伸与扩展(zhǎn)——Arts

想(xiǎng)一想,我们(men)可不可以用屏幕和按键做(zuò)一个贪吃(chī)蛇游戏呢(ne),怎样去实现?


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

设(shè)计要求:

能够用按键操控贪吃蛇小(xiǎo)游戏,其中确(què)定(dìng)键可以暂停与(yǔ)开(kāi)始游(yóu)戏;

保证控(kòng)制(zhì)方(fāng)式(shì)安(ān)全可靠(kào)。



文章分(fèn)类: 教(jiāo)学课程
分享(xiǎng)到:
山东省济(jì)南市历下区舜华路750号大学科技园北区3号楼
服务热线:13256445996                                  www.xiamen.guangzhou.shanxi.linyi.jiaxing.zz.pingliang.ww38.viennacitytours.com

千亿平台-千亿(中国)一站式服务平台

千亿平台-千亿(中国)一站式服务平台