“做一个明亮的火花,把灯关到天黑!” 有时我们忘记关灯和浪费电力,你一定也看到白天打开了路灯。我们已经在黑暗探测器上构建了一些电路,如果外面很亮,灯会自动关闭,如果外面很暗,灯会自动打开。但是这一次,在这个电路中,我们不仅根据光照条件打开和关闭灯,而且还根据外部光线条件改变光的强度。在这里,我们将LDR和PWM概念与Arduino一起使用,以自动降低或增加1瓦功率LED的亮度。
基本上,PWM是指脉宽调制,通过PWM引脚的输出信号将是模拟信号,并从Arduino获取为数字信号。它使用数字波的占空比来生成信号的顺序模拟值。并且,该信号进一步用于控制电源LED的亮度。
所需材料
Arduino UNO
LDR
电阻器(510,100k欧姆)
电容器 (0.1uF)
晶体管 2N2222
1 瓦电源指示灯
连接线
面包板
电路图
代码和说明
最后给出了自动LED调光器的完整Arduino代码。
在下面的代码中,我们定义了PWM引脚和要在代码中使用的变量。
int pwmPin = 2; // assigns pin 12 to variable pwm
int LDR = A0; // assigns analog input A0 to variable pot
int c1 = 0; // declares variable c1
int c2 = 0; // declares variable c2
现在,在循环中,我们首先使用命令“analogRead(LDR)”读取值,然后将模拟输入保存到名为“value”的变量中。通过进行一些数学计算,我们正在生成PWM信号。在这里,我们仅在模拟值小于500时才使用PWM控制光的强度,如果超过500,则完全关闭灯。
int value = analogRead(LDR);
Serial.println(value);
c1= value;
c2= 500-c1; // subtracts c2 from 1000 ans saves the result in c1
if (value < 500)
{
digitalWrite(pwmPin, HIGH);
delayMicroseconds(c2);
digitalWrite(pwmPin, LOW);
delayMicroseconds(c1);
}
if (value > 500)
{
digitalWrite(2,LOW);
}
}
它如何自动控制光强度:
根据电路图,我们使用LDR和100k电阻制作了分压器电路。分压器输出馈送到 Arduino 的模拟引脚。模拟引脚感测电压并为Arduino提供一些模拟值。模拟值根据LDR的电阻而变化。因此,如果LDR上暗,则其电阻增加,因此电压值(模拟值)减小。因此,模拟值改变PWM输出或占空比,并且占空比进一步与功率LED的光强度成正比。所以LDR上的光会自动控制电源LED的强度。下面是这将如何工作的流程图,向上箭头符号表示“增加”,向下箭头符号表示“减少”。
光强度(在 LDR 上) ↓ - 电阻↑ - 模拟引脚电压↓ - 占空比 (PWM)↑ -功率指示灯亮度↑
如果其外部完全亮起(当模拟值增加超过 500 时),电源 LED 将熄灭。
这就是使用 LDR 自动控制光强度的方法。
int pwmPin = 2; // assigns pin 12 to variable pwm
int pot = A0; // assigns analog input A0 to variable pot
int c1 = 0; // declares variable c1
int c2 = 0; // declares variable c2
void setup() // setup loop
{
pinMode(pwmPin, OUTPUT);
pinMode(pot, INPUT);
Serial.begin(9600);
}
void loop()
{
int value = analogRead(pot);
Serial.println(value);
c1= value;
c2= 500-c1; // subtracts c2 from 1000 ans saves the result in c1
if (value < 500)
{
digitalWrite(pwmPin, HIGH);
delayMicroseconds(c2);
digitalWrite(pwmPin, LOW);
delayMicroseconds(c1);
}
if (value > 500)
{
digitalWrite(2,LOW);
}
}
全部0条评论
快来发表一下你的评论吧 !