通过(guò)编程(chéng)实现按键控制OLED屏中的(de)方块移动。"/>

大(dà) 创 实(shí) 验 室

更多(duō)内(nèi)容请联系我们

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

发表时(shí)间:2020-08-24 10:32作者:大(dà)创实(shí)验室来源:大创实(shí)验室网(wǎng)址:http://www.heb.shanxi.linyi.jiaxing.zz.pingliang.ww38.viennacitytours.com


第三章第2课(kè) 科创(chuàng)板-键位控制(zhì)




1、学会使用按键驱(qū)动板(bǎn)载蜂(fēng)鸣(míng)器工作;

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

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

1、键位(wèi)发声

我们首先用按(àn)键控(kòng)制蜂鸣器执行简单的功能:当按键(jiàn)上按下时(shí),蜂鸣器播放声音1秒,然后停(tíng)止发(fā)声。

认识“结(jié)束声音”代码块

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


按(àn)键(jiàn)控(kòng)制蜂(fēng)鸣器发声程(chéng)序(xù)如下:


将上(shàng)图程序下载到科创板,当(dāng)按键上按下时,蜂鸣器(qì)播(bō)放(fàng)声音1秒,然后停止发(fā)声。

2、函数应用

当我(wǒ)们的程序中需要(yào)多次用到(dào)一组(zǔ)相同的代码时,我(wǒ)们可以用函数(shù)来(lái)实(shí)现,每次用到这(zhè)段代码时调用即可。

认识(shí)“创建函(hán)数”代码块(kuài)

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


在(zài)函(hán)数中(zhōng)可以(yǐ)设置变量(liàng),点击蓝(lán)色设(shè)置按钮(niǔ),弹出(chū)参数框,将参数X拖到右边输入下边即可 这(zhè)时(shí)候(hòu)代码块上出现(xiàn)了变量参(cān)数X

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


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

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


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


运(yùn)行上(shàng)面的程(chéng)序,我们就可以(yǐ)通(tōng)过点击(jī)不同按键控制蜂鸣器发(fā)出不同频率的(de)声音了。

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

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

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


认(rèn)识“中断”代码块

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

中断触(chù)发的条件有(yǒu)三种:上升、下(xià)降和改变。上升模式为(wéi)当管脚由低电平变(biàn)为高电平时,触发中断;下(xià)降模式为(wéi)当(dāng)管脚由(yóu)高电平变为低电平时,触发中断;改变(biàn)模式为当管脚的电平发生变化的时候,触发中断。




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


此(cǐ)程(chéng)序设置的中断(duàn)是当检测到按键上被按下时,就会执行(háng)回调函数里(lǐ)的程序。将(jiāng)上面的(de)程(chéng)序下载到科创(chuàng)板后,我们点击(jī)按键(jiàn)上,就可(kě)以听(tīng)到蜂(fēng)鸣器发出的三种不同(tóng)声音了(le)。

二、键位控制OLED屏(píng)——Technology and Math

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

为了实现上述(shù)的(de)功能,我们可以分步(bù)进行:

1、绘制(zhì)方(fāng)块

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

我(wǒ)们(men)将方块的边长定为(wéi)4,那么 “绘(huì)制矩(jǔ)形(xíng)”代码块(kuài)里关于宽度高度设置的(de)两个(gè)变(biàn)量要(yào)改为4;开始时方块要显(xiǎn)示在(zài)屏(píng)幕(mù)中央,相对应的起(qǐ)点(diǎn)参数设(shè)置x=62,y=30。



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

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


运行以上程序,OLED屏中(zhōng)间会显(xiǎn)示一个填充后的(de)小方块。


2、施加约束

认识“约束”代码块

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



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


3、按键控制

右(yòu)键按(àn)下让x增加(jiā)4,y保持不变(小方块向(xiàng)右移动4步):


同(tóng)理(lǐ),可以推写出(chū)上、下、左键(jiàn)按下时的程序块(需要(yào)注意的是左键的(de)逻(luó)辑是反的,所以左键的判(pàn)定条件是当管脚36的值等于0时(shí))。

我们把确定(dìng)键作为初(chū)始化按(àn)键(让小(xiǎo)方块回到OLED屏幕中(zhōng)点):


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


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

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

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


请以(yǐ)小组的形(xíng)式(shì)进行合作,尝(cháng)试使用屏幕和按键做(zuò)一(yī)个(gè)贪吃(chī)蛇游戏 。

设计要求:

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

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



文(wén)章(zhāng)分类: 教学(xué)课程
分享到:
山东省济(jì)南市历下区舜华路750号(hào)大学科技园(yuán)北区3号楼(lóu)
服务(wù)热线:13256445996                                  www.heb.shanxi.linyi.jiaxing.zz.pingliang.ww38.viennacitytours.com

欧洲杯下注(中国)官方网站

欧洲杯下注(中国)官方网站