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

大(dà) 创 实 验 室

更多内容请(qǐng)联系我们

第三章(zhāng) 科创板(bǎn)-键(jiàn)位控制

发(fā)表时(shí)间:2020-08-24 10:32作者(zhě):大创(chuàng)实验室来源(yuán):大创实验室网址:http://www.yj.jian.ww38.viennacitytours.com


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




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

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

1
按键驱动(dòng)蜂鸣器——Science and Math

1、键(jiàn)位发声(shēng)

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

认(rèn)识“结(jié)束(shù)声音”代码(mǎ)块

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


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


将(jiāng)上(shàng)图程序(xù)下载到科(kē)创板,当按键上按下时,蜂(fēng)鸣器播放声音1秒,然(rán)后停止(zhǐ)发声。

2、函数(shù)应用

当我们的程序中需(xū)要多次用到一组相同的代码时,我们可以用函数来实现,每(měi)次用到这段代码时调用即(jí)可(kě)。

认识(shí)“创(chuàng)建函数”代(dài)码块(kuài)

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


在函数中可以设置变(biàn)量,点击蓝色(sè)设置按钮,弹出参数框,将参数X拖到右边输入下(xià)边即(jí)可(kě) 这时候代码(mǎ)块上出现了变量参数(shù)X 。

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


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

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


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


运行上面的程序,我(wǒ)们就可(kě)以通过点(diǎn)击(jī)不(bú)同按(àn)键控制蜂鸣器发出不(bú)同频率的声(shēng)音了。

3、程序中断(duàn)命(mìng)令

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

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


认识“中断”代码块

“中断”代码块位于“输入/输出(chū)”模块中,它(tā)的(de)功能(néng)是设置指定管(guǎn)脚的中(zhōng)断模式为(wéi)上升、下降或(huò)者改(gǎi)变(biàn),并执行回调函数。

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




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


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

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

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

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

1、绘制方块

在前面的课程里,我们(men)已(yǐ)经学过用OLED屏(píng)显示矩形,这里用到同样(yàng)的代(dài)码块“绘制(zhì)矩形”,不(bú)过其(qí)中的参数需要调整一下(因为我(wǒ)们要控(kòng)制方块移动,所以方块尺寸要合适)。

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



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

此时绘制(zhì)的方块只有四条边,中间(jiān)是空的,所以(yǐ)要(yào)在“填充”后面打钩,这样这(zhè)个边长为(wéi)4的方块才能(néng)填充起来。


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


2、施加约束

认识“约束”代码块

“约束”代码块位(wèi)于“数学”模块中,它的功能是限制数字或者(zhě)变(biàn)量(liàng)介于(yú)两个(gè)指定的数字之间。



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


3、按键(jiàn)控制

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


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

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


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


运行以上(shàng)程序,按键的上下左右可以(yǐ)控制小(xiǎo)方块的移动方向,确定键按下时,小(xiǎo)方块回到屏幕(mù)中心。

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

想一想,我们(men)可(kě)不可以用(yòng)屏幕和按键做一个贪吃(chī)蛇(shé)游戏呢,怎样去(qù)实现?


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

设(shè)计要求:

能够用按键操控贪吃蛇小游(yóu)戏,其中确定键可(kě)以暂停与(yǔ)开始游戏;

保(bǎo)证控制方式安全可靠。



文章分类: 教学课(kè)程
分(fèn)享(xiǎng)到(dào):
山(shān)东省济南市历下区舜华路750号大学科技园北(běi)区3号楼
服(fú)务热线:13256445996                                  www.yj.jian.ww38.viennacitytours.com

乐投网页版-乐投(中国)

乐投网页版-乐投(中国)