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