大 创 实 验 室
第二章 科创板(bǎn)-灯光呼吸第2课 科创板-灯光(guāng)呼吸 1、了(le)解PWM原理; 2、利(lì)用PWM控制灯亮度; 3、通过编程制作呼吸灯。 1 PWM又称脉冲(chōng)宽度调制,就是改变脉冲宽(kuān)度(dù)来实现对对象(xiàng)的控制,达(dá)到预期(qī)的效(xiào)果。 我们先来看(kàn)三组(zǔ)不同(tóng)的脉冲信(xìn)号,如下图所示: 这是一(yī)个周期是10ms的波形图,但(dàn)是在每个周期内,高(gāo)低电平的脉冲宽度各不相同,这就(jiù)是PWM的本质(zhì)。在这里(lǐ)大家(jiā)要记住(zhù)一(yī)个概念,叫做“占空比”,占空比是(shì)指在(zài)一个(gè)周期内,高电平(píng)的时间占整个周期的比例。比如第一部分波形的占空比是40%,第二部分波形占空比是60%,第三部分波形占空(kōng)比是80%,这就是PWM原理。 那为何它(tā)能(néng)对模拟电路进行控制呢?在数字电路里(lǐ),只有0和1两种状(zhuàng)态(tài),比如点亮LED灯的程序,当我们在(zài)控制程(chéng)序里面(miàn)写“1”时,灯就会点亮,写(xiě)“0”时,灯就会灭掉。我们让“1”和“0”间隔(gé)运(yùn)行(háng),灯(dēng)就会闪(shǎn)烁。如果(guǒ)我们把这个间隔不断的减小,减小到(dào)我们(men)的肉(ròu)眼分(fèn)辨不出来,这时候灯表现(xiàn)出来的现象(xiàng)就是保持亮的状态(tài),但亮度又没有“1”时的亮度高。明白了这个原理,那么我们就可以(yǐ)通过调(diào)节灯亮的时(shí)间(jiān)与整个周期的比例来调节灯(dēng)的(de)亮(liàng)度了。 二(èr)、试验与科学——Technology and Math 1、利用PWM控(kòng)制(zhì)灯的亮(liàng)度(dù) 认识“数字(zì)”代码块 “数字”代码块位(wèi)于“数学”模块中,它表示的是一个特定(dìng)的数字。 认识“赋值”代(dài)码块(kuài) “赋(fù)值”代码块位于“变量”模块(kuài)中(zhōng),它(tā)的作(zuò)用是定义一个(gè)变量,并(bìng)给这个变(biàn)量一个特定(dìng)值。 设置一个(gè)变量“i”,i的取值空间(jiān)是0到10,周期为10。 i/10就是它的(de)占空比,将i依次从0到10写入(rù)程序并下(xià)载(zǎi)到(dào)科(kē)创板(bǎn),体验(yàn)下不(bú)同占空比时LED灯的亮度变化。 大(dà)家已经做完试验(yàn)了,想必大家会有(yǒu)这样的疑问,当i=0时(shí),管脚27为高电平,0秒后为低电平,10毫秒(miǎo)后再变为高(gāo)电平(píng),如此循环,理(lǐ)论上等应(yīng)该是灭的,为什么还(hái)稍(shāo)微有点暗红(hóng)色呢? 这是因为处理器在执(zhí)行(háng)程序(xù)时本(běn)来就需要时间的,在执行这段代(dài)码时 2、初尝呼吸灯 认识“对“range”中的每个项(xiàng)目”代码块(For循环) “对“range”中的每(měi)个项目”代码块位于“控制(zhì)”模块分类中(zhōng),表示(shì)从(cóng)起(qǐ)始数(shù)到终止数中取出固定步长的变量,并执行接口中的程序。 呼吸灯是指灯光在控制(zhì)下完成由(yóu)暗到(dào)亮,再由亮(liàng)到暗的逐渐变化(huà),感(gǎn)觉好(hǎo)像是人在呼吸。 让灯光从暗(àn)到亮的逐(zhú)渐变化过程,可以转化成高电(diàn)平(píng)持续时(shí)间在固定周(zhōu)期中的比例逐渐升高(gāo)的过程,即占空比从0~1的过程。 上图所示程(chéng)序中, “range”模块(kuài)执行完要100次,执行一次周期10000微秒(miǎo),即10毫秒(miǎo)。执行完整个“range”模块需要(yào)100*10毫秒,即(jí)1秒。此为占空(kōng)比(bǐ)从0/10000~10000/10000的LED灯。 我(wǒ)们已经实现了LED灯由暗(àn)到亮的逐渐变化过程,同理可以写出LED灯(dēng)由亮到按的逐渐变化过程。将(jiāng)两个程(chéng)序(xù)块放到(dào)一起,就可以组成一(yī)个完(wán)整的呼吸灯了。 3、优(yōu)化呼(hū)吸(xī)灯(dēng) 认识“初(chū)始化PWM模拟输出”代(dài)码(mǎ)块以及“PWM模拟输出赋值”代(dài)码(mǎ)块 两个代码块(kuài)均位(wèi)于“输入\输出”模块中。其中“初始化(huà)PWM模拟(nǐ)输出”代码块作用为初(chū)始化指定管脚的PWM模拟输出值; “PWM模拟输出赋值”代码块作用(yòng)为将指定PWM管(guǎn)脚赋值为(wéi)特定值(0或1)。 此(cǐ)前PWM的原理以及(jí)应用,我们已(yǐ)经学会了(le)。但是我们还有(yǒu)更简单的(de)程序(xù)应(yīng)用,那就是用我们(men)科创板自(zì)带的PWM模块。 科创板自带PWM的赋值范围为0~1023,即占(zhàn)空比从0到1。 板载PWM呼吸灯程序: 执(zhí)行(háng)以上(shàng)程序(xù),就(jiù)可以点(diǎn)亮板载四个(gè)绿色呼吸灯了。 三、延(yán)伸与扩展——Arts 想一想,能(néng)不能设(shè)计一款流水呼吸灯呢,怎样去实(shí)现? 请以小组(zǔ)的(de)形(xíng)式进(jìn)行合作(zuò),尝试让多彩(cǎi)LED灯(dēng)的(de)三色(sè)灯光(guāng)轮流完(wán)成(chéng)一个呼吸灯流(liú)程。 设计要求: (能够让(ràng)多(duō)彩LED灯交依次完(wán)成一个呼吸灯流程(chéng); (保证控制(zhì)方式安全可靠(kào)。 |