通过编程实现按键(jiàn)控制OLED屏中的方块移动。"/>
大 创 实 验(yàn) 室
第三章(zhāng) 科(kē)创板-键(jiàn)位(wèi)控制发表时间(jiān):2020-08-24 10:32作者:大创实验室来源:大创实验室(shì)网(wǎng)址(zhǐ):http://www.shaoyang.zj.huaibei.xinxiang.zz.pingliang.ww38.viennacitytours.com 第三章(zhāng)第2课(kè) 科创板-键位控制 1、学会使用按键驱(qū)动板载蜂鸣器工作(zuò); 2、通(tōng)过(guò)编程实(shí)现按键控制(zhì)OLED屏中的(de)方块(kuài)移动(dòng)。 1 1、键位(wèi)发声 我们首先用按键控制蜂鸣器(qì)执行简单的功能:当(dāng)按键(jiàn)上按下时,蜂鸣器播放声音1秒,然(rán)后停止发声。 认识“结束声音”代码块 “结束声音”代码(mǎ)块位(wèi)于“执行器”模块中,它的功(gōng)能是终(zhōng)止蜂鸣器的(de)发声。 按键(jiàn)控(kòng)制蜂(fēng)鸣器发(fā)声程(chéng)序如下: 将上图(tú)程序下载到(dào)科创板(bǎn),当按键上按(àn)下时,蜂鸣器(qì)播放声音1秒,然后停止发声(shēng)。 2、函数应用 当我们的程序(xù)中需要多次用到一组相同的(de)代码时(shí),我们可以用函数来实现,每次用到这(zhè)段(duàn)代(dài)码时调(diào)用即(jí)可。 认识“创建函数”代码(mǎ)块 “创建函数”代码块位(wèi)于(yú)“函数(shù)”模块中,它的功能(néng)是(shì)创建一个不带输出值(zhí)的函数模块(kuài)。 在函数中(zhōng)可以设置变量,点击蓝色设置按钮,弹(dàn)出参(cān)数框,将参数(shù)X拖到右边输入下边即可 下面我们以一个实(shí)际运(yùn)用来说明一下“创建(jiàn)函数”代码块(kuài)的使用方法: 上面的函(hán)数表(biǎo)示(shì):每间隔x微秒(1秒(miǎo)=1000毫秒=1000000微秒),蜂鸣器(qì)电(diàn)平切换一次,即表示生成频率(lǜ)为(wéi)1000000/2x的声音信号。 当我们创建好函数代码时,在“函数”模块(kuài)中会出(chū)现一个新的代码块,“执行函数参数X”代码块(kuài),它的作用是(shì)执行(háng)用户自(zì)定义参(cān)数为(wéi)X的函数块。 通过上(shàng)、下、左、右四(sì)个按(àn)键(对应的(de)管脚分别为:12、23、36、2,其(qí)中按键(jiàn)左(zuǒ)的逻辑是反(fǎn)的),控(kòng)制蜂鸣器发出(chū)不同频率(lǜ)声音的程序: 运行(háng)上面的程序,我们就可以通过点击不同(tóng)按(àn)键(jiàn)控制蜂鸣器发出(chū)不同频率(lǜ)的声音了。 3、程序中断命令 “中(zhōng)断”是指科创板在运行程序的过程中,由于(yú)出现一些特别的(de)情况,停止当前的程序(xù)去(qù)执行新(xīn)的程序,等处理完成后再返回原来被暂停的程序继续执行。 中断可以(yǐ)类比生活中的例子:比如(rú)你正在看电(diàn)视,突然(rán)门口门铃响(xiǎng)起,有快递送上门,所(suǒ)以你就暂停看(kàn)电视去拿快递,等收完快递后继(jì)续看电(diàn)视。在这个过程中,看(kàn)电(diàn)视(shì)是你主要(yào)的任务(主程序),而(ér)收(shōu)快递就(jiù)是一个中断过程,门铃响起就是一个中断(duàn)的标志(触发(fā)中断的条件(jiàn))。中断示意图(tú)如下: 认识“中(zhōng)断”代码(mǎ)块 “中断”代码块位于“输入/输出”模块中,它的功能是(shì)设置指(zhǐ)定管脚的中断模式为上升、下(xià)降(jiàng)或者改变,并执行回调函数。 中断触发的条件有三种:上(shàng)升、下降和(hé)改变(biàn)。上升(shēng)模式为当管脚由低电平变为高(gāo)电平时,触发中(zhōng)断;下降模(mó)式为当管脚由高电平(píng)变为低电平(píng)时,触发中断;改(gǎi)变模式为(wéi)当管脚(jiǎo)的电平发生变化的时候,触发(fā)中断。 这里我们展示(shì)一(yī)个(gè)实际中断函数的程序,做(zuò)完这个(gè),大家就会更(gèng)深入的了解中断的含义了,程序(xù)如下: 此程序设置的(de)中断是当检测(cè)到按键上被按下时,就(jiù)会执行回(huí)调函(hán)数里的程序。将上(shàng)面的程序下载到科创板(bǎn)后,我们(men)点击按键上(shàng),就可以(yǐ)听到蜂鸣器发出(chū)的三种不(bú)同声音了。 二、键位控制OLED屏(píng)——Technology and Math 我们可以驱动按键(jiàn)去控制多彩LED灯(dēng)以及蜂鸣器工作了,接下来,我们要(yào)做的就是要(yào)让按键功能(néng)更加直观的体现出来。大(dà)家来思考一个问(wèn)题,我们(men)可不可以通过按键移(yí)动屏幕(mù)上(shàng)显(xiǎn)示的(de)方块呢,怎样去实现这个功能呢? 为了实现(xiàn)上述的功能,我们(men)可以分(fèn)步进行: 1、绘(huì)制(zhì)方块 在前面的课程(chéng)里,我们已经学过用OLED屏显示矩形,这里用到同样的(de)代(dài)码块“绘制矩形”,不过其(qí)中的参(cān)数需要调整一下(因为我(wǒ)们(men)要控制方块(kuài)移动,所以方(fāng)块尺(chǐ)寸(cùn)要合适)。 我(wǒ)们将方块的(de)边长定为4,那(nà)么 “绘制(zhì)矩形”代码块里关于(yú)宽度高(gāo)度(dù)设置的(de)两个(gè)变(biàn)量要改为4;开始时方块要(yào)显示在(zài)屏幕中(zhōng)央,相对应的起点参数设置x=62,y=30。 上面两种程序表达方式都可以(yǐ),第二种里面的“科创板oled初(chū)始化”代码块 此时绘制(zhì)的方块只有四条边,中间是空(kōng)的,所以要在“填充”后面打(dǎ)钩,这样这(zhè)个边长为(wéi)4的方块才能填充起来。 运行(háng)以上程序,OLED屏中(zhōng)间(jiān)会显(xiǎn)示一个填充后的小方块。 2、施加约(yuē)束 认识“约束”代码块 “约(yuē)束”代码(mǎ)块(kuài)位于“数学”模块中,它的功能(néng)是限制数字或者(zhě)变量介于两(liǎng)个(gè)指(zhǐ)定的数(shù)字之间(jiān)。 因(yīn)为屏幕(mù)的(de)横(héng)向(xiàng)范围为0~127,纵向范围为0~63,方(fāng)块边长为4,所以x的范围为(wéi)0~124,y的范围为0~60,可以用以下代(dài)码块来限定x与y的范围,这样方(fāng)块就不会(huì)超出屏幕了。 3、按键控制 右(yòu)键按下(xià)让x增加4,y保持(chí)不(bú)变(小方块向右移动4步): 同理,可以推写出(chū)上(shàng)、下、左键按下时(shí)的程序(xù)块(需要注意的(de)是左键的逻辑(jí)是反的,所以左(zuǒ)键的判定条(tiáo)件是当管脚36的值等于0时)。 我们把确定键作为(wéi)初(chū)始(shǐ)化按(àn)键(jiàn)(让(ràng)小方块回到OLED屏幕(mù)中点): 程序分块到这里就(jiù)讲解完成了,接下来(lái)我(wǒ)们只需要把(bǎ)之前编写好(hǎo)的程序块结合起来就可以实现按键控制小方块的移动(dòng)了,程序如下: 运(yùn)行以上(shàng)程序,按键的上(shàng)下左右可以控制小方(fāng)块的移动方向(xiàng),确定键按下时,小方块回(huí)到屏幕中心。 三(sān)、延伸与扩展——Arts 想一(yī)想(xiǎng),我们可不可以用屏(píng)幕和(hé)按键做一个贪吃蛇游戏呢,怎样(yàng)去实现? 请以小组(zǔ)的形式进(jìn)行合作,尝试使用屏(píng)幕和(hé)按键做一个贪吃(chī)蛇游戏 。 设计要求: (能够用按键操控贪吃蛇小游戏,其(qí)中确定键可以(yǐ)暂停与开始(shǐ)游戏(xì); (保证控制方(fāng)式安(ān)全可靠(kào)。 |