当前位置:首页 > 新闻资讯 > IT业界 > 新闻
Arduino编程——PWM 调控灯光亮度实验
  • 2018/12/27 14:41:37
  • 类型:原创
  • 来源:电脑报
  • 报纸编辑:电脑报
  • 作者:
【电脑报在线】PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么是5V(ON),要么是0V(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM 进行编码。


Pulse Width Modulation 就是通常所说的PWM,译为脉冲宽度调制,简称脉宽调制。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法,由于计算机不能输出模拟电压,只能输出0 或5V 的的数字电压值,我们就通过使用高分辨率计数器,利用方波的占空比被调制的方法来对一个具体模拟信号的电平进行编码。

PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么是5V(ON),要么是0V(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM 进行编码。

输出的电压值是通过通和断的时间进行计算的。输出电压=(接通时间/脉冲时间)*最大电压值(图1)。

 

图1

 

PWM 被用在许多地方,调光灯具、电机调速、声音的制作等等。

下面介绍一下PWM 的三个基本参数(图2):

 

图2

 

1、脉冲宽度变化幅度(最小值/最大值)

2、脉冲周期(1 秒内脉冲频率个数的倒数)

3、电压高度(例如:0V-5V)

Arduino 控制器有6 个PWM 接口分别是数字接口3、5、6、9、10、11,前面我们已经做了按键控制小灯的实验,那是数字信号控制数字接口的实验,我们也做过电位计的实验,这次我们就来完成一个用电位计控制小灯的实验。

需要的元器件有:

电位计模块*1

红色M5 直插LED*1

220Ω直插电阻

面包板*1

面包板跳线*1

电位计即为模拟值输入我们接到模拟口,小灯我们接到PWM 接口上,这样通过产生不同的PWM 信号就可以让小灯有亮度不同的变化。

我们先按照下面的原理图连接实物图(图3、4)。

我们也可以把11脚和13脚用跳线连起来,我们就不用接LED的线了更方便。效果一样

 

图3

 

图4

在编写程序的过程中,我们会用到模拟写入analogWrite(PWM 接口,模拟值)函数,对于模拟写入analogWrite()函数,此函数用法也很简单,我们在本实验中读取电位计的模拟值信号并将其赋给PWM 接口使小灯产生相应的亮度变化,再在屏幕上显示出读取的模拟值,大家可以理解为此程序是在模拟值读取的实验程序中多加了将模拟值赋给PWM 接口这一部分,下面给大家提供一段参考源程序(图5)。

参考源程序:

int potpin=0;//定义模拟接口0

int ledpin=11;//定义数字接口11(PWM 输出)

int val=0;// 暂存来自传感器的变量数值

void setup()

{

pinMode(ledpin,OUTPUT);//定义数字接口11 为输出

Serial.begin(9600);//设置波特率为9600

//注意:模拟接口自动设置为输入

}

void loop()

{

val=analogRead(potpin);// 读取传感器的模拟值并赋值给val

Serial.println(val);//显示val 变量

analogWrite(ledpin,val/4);// 打开LED 并设置亮度(PWM 输__________出最大值255)

delay(10);//延时0.01 秒

}

 

图5

 

实验现象:下载完程序,我们旋转电位计的旋钮不但可以看到屏幕上数值的变化还也可以清楚的看到我们面包板上的LED 小灯的亮度也在随之变化。

 

节日将至,老师用Scratch设计舞蹈特效

 

    Scratch编程创作过程中,角色形状的变化可以通过改变造型来实现,同时也可以通过特效模块和来实现。引入特效模块的应用,培养学生在编程创作过程中,学会一种通过反复尝试寻找到最佳效果的科学发现过程的思维方式。

一、教学目标分析

    对颜色特效的应用学生在前几节课的创作中有过体会和应用,但其他特效的应用还没有进行专门的探究尝试,有些脚本设计学生不一定能想得到。鉴于这些基本条件,《跳舞的女孩》这节课的教学目标设定如下:

 

    1.尝试运用 模块中各种特效(图1)进行创编舞姿。

    2.初步理解角色初始化的脚本设计的意义。

    3.通过尝试探究能理解范例中女孩扭动身子的脚本。

    4.会从一个作品中导出角色,再导入到另一个作品中新增角色。

    5.会从一个作品中输出声音,再导入到另一个作品中新增声音。

    6.发挥想象,自己设计一个舞蹈。

    本课重点要学习的是Scratch中和和 以及 模块设计角色舞姿的脚本。

    为了让学生能在有限的40分钟内,完成舞蹈设计,课前,老师为学生提供了同学们喜欢的音乐和图片。

 

 

二、教学过程的设计

    新颖有趣的范例能很好吸引学生,启发学生思考和创作的欲望。一个女孩穿着漂亮的衣服,在音乐的伴奏下,扭动着身子,点击小女孩,服饰发生着变化。课堂上通过老师一边说作品的表演情景,一边向学生暗示着本节课要学习和创作内容。为扫清学生在后面研习范例的障碍,课堂中将范例中核心脚本(角色舞姿)的设计,通过用自然语言过渡到脚本的设计的描述示范脚本搭建过程,帮助学生理解,突破教学中的难点。重要的几步教学过程如下:

    1.如何获取他人作品中的角色

    创作中同学们有时为寻找角色而焦急,不妨把他人作品中角色拿来,这样一是可以省时间;二是可以在别人设计的基础上加以修改为我所用。

    1)打开范例,将鼠标指向角色并点击右键后单击“输出这个角色”,保存(见图2)。

 

图2

    2)接下来,打开一个Scratch新窗口,从文件夹中导入角色小女孩。删除脚本,保留造型。

    2.核心脚本设计的教学

    演员挑选后,我用神秘的语气问:同学们,你们想不想知道女孩扭腰扭臀的动作是如何设计的?你们能想到吗?此时,我告诉学生Scratch外观模块中有一个特效模块,我们来尝试一下,首先假设利用旋转特效每次增加50,分四次逐次完成向右旋转200的变化幅度,看,小女孩开始的舞姿(见图3)。其次,利用旋转特效每次增加-50,分八次逐次完成向左旋转400的变化幅度,看,小女孩舞姿由右到左的变化过程。最后,利用旋转特效每次增加50,分四次逐次完成向右旋转200的变化幅度回到初始位。通过三次重复完成一个舞姿设计,如果,你觉得舞姿不美,还可以在改变特效模块中的数字和重复次数,再尝试寻找到你认为满意的效果。

 

学生通过老师讲解和直观演示,初步了解到旋转特效模块改变角色的样子的设计。随后,我引发学生思考,使用下拉菜单 选择不同的特效,尝试看一看小女孩的表演会出现怎样的效果?暗示学生去探究其他特效的应用。

本文出自2018-12-24出版的《电脑报》2018年第50期 A.新闻周刊
(网站编辑:PCW-hjz)


我来说两句(0人参与讨论)
发表给力评论!看新闻,说两句。
匿名 ctrl+enter快捷提交
读者活动
48小时点击排行
论坛热帖