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