“成为明亮的火花,熄灭直到天黑!” 有时我们忘了关掉电灯并浪费电力,而且您一定也已经看到白天打开了路灯。我们已经在黑暗探测器上建立了几个电路,如果外面很亮,灯光会自动关闭,如果外面是黑暗,灯光会自动打开。但是这次,在这个电路中,我们不仅要根据光照条件打开和关闭灯光,还要根据外界光照条件改变光的强度。在这里,我们将LDR和PWM概念与Arduino配合使用,以自动降低或增加1瓦功率LED的亮度。
基本上,PWM是指脉宽调制,通过PWM引脚的输出信号将是模拟信号,并从Arduino作为数字信号获取。它使用数字波的占空比来生成信号的顺序模拟值。并且,该信号还用于控制电源LED的亮度。
所需材料
- Arduino UNO
- LDR
- 电阻(510,100k ohm)
- 电容(0.1uF)
- 晶体管2N2222
- 1瓦电源LED
- 连接线
- 面包板
电路原理图
代码和解释
最后给出了自动LED调光器的完整Arduino代码。
在下面的代码中,我们定义了PWM引脚和代码中要使用的变量。
int pwmPin = 2; //将引脚12分配给变量pwm int LDR = A0; //将模拟输入A0分配给变量pot int c1 = 0; //声明变量c1 int c2 = 0; //声明变量c2
现在,在 循环中, 我们首先使用命令 “ analogRead(LDR)” 读取值,然后将模拟输入保存到名为 “ value” 的变量中。通过进行一些数学计算,我们生成了PWM信号。在这里,仅当模拟值小于500时,我们才使用PWM控制光的强度;如果大于500,我们将完全关闭灯。
int值= AnalogRead(LDR); Serial.println(value); c1 =值; c2 = 500-c1; // 如果(值<500) { digitalWrite(pwmPin,HIGH); delayMicroseconds(c2); digitalWrite(pwmPin,LOW); delayMicroseconds(c1); } if(value> 500) { digitalWrite(2,LOW); } }
您可以从此处了解有关Arduino中PWM的更多信息。
它如何自动控制光强度:
根据电路图,我们使用LDR和100k电阻制作了一个分压器电路。分压器输出被馈送到Arduino的模拟引脚。模拟引脚感测电压并为Arduino提供一些模拟值。模拟值根据LDR的电阻而变化。因此,如果LDR上方很暗,则其电阻会增加,因此电压值(模拟值)会降低。因此,模拟值会改变PWM输出或占空比,并且占空比进一步与功率LED的光强度成正比。因此,LDR上的灯会自动控制电源LED的强度。下面是流程图,该流程图将如何工作,上箭头指示“增加”,下箭头指示“减少”。
光强度(在LDR上)↓-电阻↑-模拟引脚上的电压↓-占空比(PWM)↑-电源LED的亮度↑
如果其外部完全明亮(当模拟值增加超过500时),则电源LED指示灯将熄灭。
这就是您可以使用LDR自动控制光强度的方法。
在这里进一步检查我们所有与LDR相关的电路。