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

大 创(chuàng) 实 验 室(shì)

更(gèng)多内容请联系我们

第三章(zhāng) 科创板-键位控制

发(fā)表(biǎo)时间:2020-08-24 10:32作者:大创实验室来源:大创实验室网址(zhǐ):http://www.shangrao.liaocheng.jixi.ww38.viennacitytours.com


第三(sān)章第(dì)2课 科创板-键位控制(zhì)




1、学会使用按键驱动板载(zǎi)蜂鸣器工作;

2、通过编程实现按(àn)键控制OLED屏(píng)中(zhōng)的方块移动。

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

1、键(jiàn)位发声

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

认识“结束声音(yīn)”代码块

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


按键控制蜂(fēng)鸣器发(fā)声程序(xù)如下:


将上图程序(xù)下载到科创(chuàng)板,当按键上按下时,蜂(fēng)鸣器播放(fàng)声音1秒,然后停止发声。

2、函数(shù)应用

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

认(rèn)识“创建函数”代码(mǎ)块(kuài)

“创建函数”代码块位于(yú)“函数”模块中,它的功(gōng)能是创建一个不带输出值的函(hán)数(shù)模块。


在函数中可以设置变量,点(diǎn)击蓝色设置按钮,弹出(chū)参(cān)数框,将参数X拖到右边输入下边即可(kě) 这时候(hòu)代码块(kuài)上出现了(le)变量参数X 。

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


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

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


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


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

3、程序中断命令

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

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


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

“中断”代码块位于“输入/输出”模块中,它的(de)功能是设置指定管脚的中(zhōng)断模(mó)式为上(shàng)升、下降或者改变,并执行回(huí)调函数(shù)。

中断触发的条(tiáo)件有三种:上升、下降和改变。上升(shēng)模(mó)式为当(dāng)管脚由(yóu)低电平变为(wéi)高电平时,触发中断;下降模式(shì)为当管(guǎn)脚由高电平(píng)变为低(dī)电平(píng)时,触发中(zhōng)断;改变模式(shì)为当管脚的(de)电平发生变(biàn)化(huà)的时候,触发中断。




这里我们展示一个实际中断函数的程序,做完这个,大家(jiā)就会更深入的了解中(zhōng)断(duàn)的(de)含义了,程序(xù)如下:


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

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

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

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

1、绘(huì)制方块

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

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



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

此(cǐ)时绘(huì)制的方块只有四条边(biān),中间是空的(de),所以要在“填充”后(hòu)面(miàn)打钩,这(zhè)样这个(gè)边长为4的方块才能(néng)填充(chōng)起来。


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


2、施加约(yuē)束

认识“约束”代码块

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



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


3、按(àn)键控制

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


同(tóng)理,可以推写(xiě)出上、下、左键按下时的程(chéng)序块(需(xū)要注意的是左键的逻辑是(shì)反的,所以左键的判定条件是(shì)当管脚36的值等于0时)。

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


程序(xù)分块到这里就讲解完成了,接(jiē)下来我们(men)只需要把(bǎ)之前编写好的程序块(kuài)结合(hé)起来(lái)就可以实现(xiàn)按键(jiàn)控制小方块的移(yí)动了,程序如下:


运行以上程序,按键的上下左右可以(yǐ)控(kòng)制小方块的移动方向(xiàng),确(què)定键按下时,小方块回到屏幕中心(xīn)。

三、延伸与扩展——Arts

想一想(xiǎng),我们(men)可不可以用屏幕和按(àn)键做(zuò)一个(gè)贪吃蛇游戏呢,怎样(yàng)去(qù)实(shí)现?


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

设计要求:

能(néng)够用按键操控(kòng)贪吃蛇小游(yóu)戏,其中确(què)定键可以(yǐ)暂停与开始(shǐ)游戏;

保(bǎo)证控(kòng)制方(fāng)式安全可(kě)靠。



文(wén)章(zhāng)分类: 教学课程
分享到:
山东省济南市历下区舜(shùn)华路750号大学科技园北区3号(hào)楼
服务热线:13256445996                                  www.shangrao.liaocheng.jixi.ww38.viennacitytours.com

九游j9官网-九游(中国)

九游j9官网-九游(中国)