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