arduino学习笔记10-调光灯制作
- 格式:docx
- 大小:101.74 KB
- 文档页数:2
Arduino 入门到精通例程113、PWM 调控灯光亮度实验Pulse Width Modulation 就是通常所说的PWM,译为脉冲宽度调制,简称脉宽调制。
脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法,由于计算机不能输出模拟电压,只能输出0 或5V 的的数字电压值,我们就通过使用高分辨率计数器,利用方波的占空比被调制的方法来对一个具体模拟信号的电平进行编码。
PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么是5V(ON),要么是0V(OFF)。
电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。
通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。
只要带宽足够,任何模拟值都可以使用PWM 进行编码。
输出的电压值是通过通和断的时间进行计算的。
输出电压=(接通时间/脉冲时间)*最大电压值PWM 被用在许多地方,调光灯具、电机调速、声音的制作等等。
下面介绍一下PWM 的三个基本参数:1、脉冲宽度变化幅度(最小值/最大值)2、脉冲周期(1 秒内脉冲频率个数的倒数)3、电压高度(例如:0V-5V)Arduino 控制器有6 个PWM 接口分别是数字接口3、5、6、9、10、11,前面我们已经做了按键控制小灯的实验,那是数字信号控制数字接口的实验,我们也做过电位计的实验,这次我们就来完成一个用电位计控制小灯的实验。
需要的元器件有:电位计模块*1红色M5 直插LED*1220Ω直插电阻面包板*1面包板跳线*1 扎电位计即为模拟值输入我们接到模拟口,小灯我们接到PWM 接口上,这样通过产生不同的PWM 信号就可以让小灯有亮度不同的变化。
我们先按照下面的原理图连接实物图。
我们也可以把11脚和13脚用跳线连起来,我们就不用接LED的线了,更方便。
效果一样。
在编写程序的过程中,我们会用到模拟写入analogWrite(PWM 接口,模拟值)函数,对于模拟写入analogWrite()函数,此函数用法也很简单,我们在本实验中读取电位计的模拟值信号并将其赋给PWM 接口使小灯产生相应的亮度变化,再在屏幕上显示出读取的模拟值,大家可以理解为此程序是在模拟值读取的实验程序中多加了将模拟值赋给PWM 接口这一部分,下面给大家提供一段参考源程序。
1. 了解调光台灯的基本原理和组成。
2. 学习电子电路的基本知识和技能。
3. 培养动手能力和创新意识。
二、实验原理调光台灯是一种可以调节亮度的台灯,主要由电源、调光电路、灯泡和灯座等组成。
调光电路通常采用模拟电路或数字电路来实现亮度调节。
本实验采用模拟电路实现调光功能。
三、实验器材1. 50W白炽灯泡1个2. 220V/50Hz电源1个3. 可调电阻1个(500Ω)4. 电阻1kΩ1个5. 电阻10kΩ1个6. 电阻100kΩ1个7. 二极管1个(1N4007)8. 三极管1个(8050)9. 灯座1个10. 线路板1块11. 电烙铁1把12. 剪线钳1把13. 电工刀1把14. 万用表1个15. 实验指导书1本1. 准备工作:将所有器材准备好,了解各元件的功能和作用。
2. 设计电路:根据实验要求,设计调光电路。
本实验采用三极管开关电路和可调电阻来实现亮度调节。
3. 制作电路板:按照电路图,将元件焊接在电路板上。
4. 连接电源:将电源线接入电路板,确保电路板上的电源接口与电源线相连接。
5. 连接灯泡:将灯泡插入灯座,然后将灯泡的引脚焊接在电路板上。
6. 连接可调电阻:将可调电阻的一端焊接在电路板上,另一端连接到电源的正极。
7. 测试电路:打开电源,用万用表测量电路板上的电压和电流,确保电路正常工作。
8. 调节亮度:旋转可调电阻,观察灯泡亮度的变化,记录亮度调节范围。
9. 分析结果:根据实验结果,分析电路的工作原理和调光效果。
五、实验结果与分析1. 实验结果:通过调整可调电阻,可以实现灯泡亮度的调节,亮度调节范围在0-50W之间。
2. 分析结果:本实验采用的调光电路是通过改变电路中的电阻值来改变电流,从而实现亮度调节。
当电阻值增大时,电流减小,灯泡亮度降低;当电阻值减小时,电流增大,灯泡亮度提高。
六、实验总结1. 本实验成功制作了一款调光台灯,实现了亮度调节功能。
2. 通过实验,掌握了电子电路的基本知识和技能,提高了动手能力和创新意识。
Arduino 入门教程(13)—彩灯调光台我们已经接触过 RGB LED 了,可以实现变色,这回儿我们需要加入互动元素进去。
通过三个电位器来任意变换对应的R、G、B,组合成任何你想要的颜色,在家做个心情灯吧,随心情任意切换。
所需材料1×5mm RGB LED 灯3×220 欧电阻3×10K 电位器STEP 1:硬件连接STEP 2:输入代码1. int redPin = 9;// R – digital 92.int greenPin = 10;// G – digital 103.int bluePin = 11;// B – digital 114.// 电位器1 – analog 0 int potRedPin = 0;5. int potGreenPin = 1; // 电位器2 – analog 16. int potBluePin = 2; // 电位器3 – analog 27.8. void setup(){9. pinMode(redPin,OUTPUT);10. pinMode(greenPin,OUTPUT);11. pinMode(bluePin,OUTPUT);12. Serial.begin(9600); // 初始化串口13. }14.15. void loop(){16. int potRed = analogRead(potRedPin); // potRed存储模拟口0读到的值17. int potGreen = analogRead(potGreenPin); // potGreen存储模拟口1读到的值18. int potBlue = analogRead(potBluePin); // potBlue存储模拟口2读到的值19.20. int val1 = map(potRed,0,1023,0,255); //通过map函数转换为0~255的值21. int val2 = map(potGreen,0,1023,0,255);22. int val3 = map(potBlue,0,1023,0,255);23.24. //串口依次输出Red,Green,Blue对应值25. Serial.print("Red:");26. Serial.print(val1);27. Serial.print("Green:");28. Serial.print(val2);29. Serial.print("Blue:");30. Serial.println(val3);31.32. colorRGB(val1,val2,val3); // 让RGB LED 呈现对应颜色33. }34.35. //该函数用于显示颜色36. void colorRGB(int red, int green, int blue){37. analogWrite(redPin,constrain(red,0,255));38. analogWrite(greenPin,constrain(green,0,255));39. analogWrite(bluePin,constrain(blue,0,255));40. }下载代码,旋转三个电位器,可以变化出不同的颜色。
【Arduino学习笔记05】Arduino数字输⼊、输出和脉冲宽带调制--⼩项⽬:彩⾊⼩台灯基本功能:长按控制按钮开机,长按控制按钮关机(>3s)通过三个调节按钮调节灯的颜⾊,每⼀个按钮分别对应R,G,B值模式切换:短按控制按钮切换模式(长亮模式/闪烁模式)元器件清单:Arduino Uno R3⼩号⾯包板跳线10kΩ电阻(×4)220Ω电阻(×3)USB电缆按键(×4)5mm 共阴极 RGB LED知识回顾:(参考书⽬《Arduino魔法书》) 1. 脉冲宽度调制(P25 - P27)PWM的输出可以写⼊数值的范围:0~255PWM的⼯作原理:⽅波(占空⽐的概念)“你并没有改变输送到LED的电压,为何⼜能在降低占空⽐时让LED变暗呢?......如果LED每1ms就开关⼀次,它看起来就是近乎⼀半的亮度,这是因为它闪烁的速度超过了⼈眼能察觉的速度。
因此,⼤脑实际上时平均了这个信号,并欺骗你相信这个LED只有⼀半的亮度。
” 2. 上拉电阻和下拉电阻(P28 ~ P30)没有使⽤下拉电阻的情况按键没有按下时,要读取的输⼊引脚什么也没有接——这个输⼊引脚被称为“悬空”。
由于这个引脚没有实际地接到0V或者5V,读取它时会导致意料之外的结果,因为附近的电⽓噪声会导致其值在⾼低电平之间来回波动。
下拉电阻:将输出端拉⼀根导线连接到地 上拉电阻:将输出端拉⼀根导线连接到电源 3. 按钮的消抖动(P30 ~ P33)1/*2 * 消抖动函数:3 * button: 要消抖动的按钮4 * last: 该按钮的上⼀个状态5 * 返回值:消抖动后读回的按钮状态67 * - 这⾥所谓的消抖动,实际上就是如果检测到电压变化后先不操作,因为可能是抖动阶段的8 * 电压改变,等5m之后再读取当前值,避开抖动阶段。
9 * - 如果没有使⽤消抖动函数,在抖动的过程中电压多次变化,会得到很多次“按钮按下”的10 * 结论,从⽽造成短时间内频繁的开灯关灯。
arduino点亮led灯实验原理Arduino是一种开源的电子原型平台,可以用于快速、简单地构建各种物联网设备和交互式项目。
它基于易于使用的硬件和软件,并且非常适合初学者和专业人士使用。
在本文中,我们将学习如何使用Arduino来点亮LED灯。
LED(Light Emitting Diode)是一种半导体器件,可以将电能转化为可见光。
它是一种常用的光源,具有低功耗、长寿命、高亮度等优点,在各种电子设备中被广泛应用。
我们需要准备以下材料:1. Arduino开发板2. 一块面包板3. 一颗LED灯4. 一根220欧姆电阻5. 杜邦线若干接下来,我们按照以下步骤进行实验:步骤一:连接电路将Arduino开发板和面包板相连接。
在面包板上插入一根电阻,然后将LED灯的长脚(正极)插入电阻的一端,将LED灯的短脚(负极)插入面包板的负极列。
然后将Arduino的数字引脚13连接到电阻的另一端。
步骤二:编写代码打开Arduino IDE(集成开发环境)并新建一个空白文件。
然后输入以下代码:```void setup() {pinMode(13, OUTPUT);}void loop() {digitalWrite(13, HIGH);delay(1000);digitalWrite(13, LOW);delay(1000);}```以上代码首先通过`pinMode()`函数将数字引脚13设置为输出模式。
然后在`loop()`函数中,使用`digitalWrite()`函数将数字引脚13的电平设置为高(即将LED灯点亮),然后延迟1秒钟。
接着再将数字引脚13的电平设置为低(即将LED灯熄灭),再延迟1秒钟。
这样就实现了循环点亮和熄灭LED灯的效果。
步骤三:上传代码将Arduino开发板通过USB线连接到计算机上。
在Arduino IDE 中选择正确的开发板和串口,并点击上传按钮将代码上传到Arduino开发板上。
Arduino 入门教程(10)—感光灯这个项目中将介绍一个新元件——光敏电阻。
从名字可以看出,这个器件是依赖光作用的。
在黑暗的环境中,光敏电阻具有非常高阻值的电阻。
光线越强,电阻值反而越低。
通过读取这个电阻值,就可以检查光线的亮暗了。
我们这里选用的是光敏二极管,光敏二极管其实就是光敏电阻中的一种,只是它还具有正负极性。
我们这次做的这个非常好玩,叫做感光灯。
它能随着光线明暗而选择是否亮灯。
这个光感灯非常适合用做夜晚使用的小夜灯。
晚上睡觉的时候,家中灯关掉后,感光灯感觉到周围环境变暗了,就自动亮起。
到了白天,天亮后,感光灯就又恢复到关闭的状态了。
所需材料1×5mm LED 灯1×220 欧电阻1×10k 电阻1×光敏二极管1×手电筒(可选)STEP 1:硬件连接LED 灯还是和以往一样的接法。
而光敏二极管是有正负极的,和LED 一样,也是遵循长脚(+),短脚(-)的原则。
还需注意的与光敏二极管相连的电阻是10k,而不是 220Ω。
STEP 2:输入代码完成硬件连接后,打开Arduino IDE,输入下面这段代码。
1. int LED = 13; //设置LED灯为数字引脚132. int val = 0; //设置模拟引脚0读取光敏二极管的电压值3.4. void setup(){5. pinMode(LED,OUTPUT); // LED为输出模式6. Serial.begin(9600); // 串口波特率设置为96007. }8.9. void loop(){10. val = analogRead(0); // 读取电压值0~102311. Serial.println(val); // 串口查看电压值的变化12. if(val<1000){ // 一旦小于设定的值,LED灯关闭13. digitalWrite(LED,LOW);14. }else{ // 否则LED亮起15. digitalWrite(LED,HIGH);16. }17. delay(10); // 延时10ms18. }19.下载完代码后,LED 灯会亮起,这时,你需要拿一个手电筒照你的光敏二极管(用手机后置摄像头的闪光灯应该也可以),这时你会发现LED 灯神奇般的自动熄灭。
arduino学习笔记10-调光灯制作
线性电位器是一个模拟量的电子元器件,模拟量和数字量有什么区别呢?简单的说,数字量只有0和1两种状态,对应的就是开和关,高电平和低电平。
而模拟量则不一样,他的数据状态呈现线性状态例如1到1023。
一、实验现象
通过旋转电位器来调节LED灯光明暗度。
二、实验器材:控制板、LED1个、电阻1个、电位器1个、面包板和杜邦线。
三、实验所用函数及语句
int analogRead (pin):读模拟引脚pin, 返回[0-1023]之间的值. 每读一次需要花1微妙的时间。
long map(long x, long in_min, long in_max, long out_min,long out_max ):等比映射,将位于[in_min, in_max]之间的x映射到[out_min, out_max]。
四、实验电图
五、程序编写
void setup()
{
pinMode(11,OUTPUT);//注意LED要接在PWM端口(~)
}
void loop()
{
int val = analogRead(A0); //读取模拟端口A0的值:范围0-1023之间的一个数
val = map(val, 0, 1023, 0, 255); //将范围0-1023的值映射到0-255之间的一个数 analogWrite(10, val);
}。