通过(guò)编程实(shí)现按(àn)键控制OLED屏中(zhōng)的(de)方块(kuài)移(yí)动。"/>
大(dà) 创 实 验 室
第三章(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 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ě) 下(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ǐ)化”代码块 此时绘制(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)证控制方式安全可靠。 |