0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arduino对电源LED进行自动强度控制

科技观察员 来源:circuitdigest 作者:潘卡伊·卡特里 2022-11-14 16:58 次阅读

“做一个明亮的火花,把灯关到天黑!” 有时我们忘记关灯和浪费电力,你一定也看到白天打开了路灯。我们已经在黑暗探测器上构建了一些电路,如果外面很亮,灯会自动关闭,如果外面很暗,灯会自动打开。但是这一次,在这个电路中,我们不仅根据光照条件打开和关闭灯,而且还根据外部光线条件改变光的强度。在这里,我们将LDR和PWM概念与Arduino一起使用,以自动降低或增加1瓦功率LED的亮度。

基本上,PWM是指脉宽调制,通过PWM引脚的输出信号将是模拟信号,并从Arduino获取为数字信号。它使用数字波的占空比来生成信号的顺序模拟值。并且,该信号进一步用于控制电源LED的亮度。

所需材料

Arduino UNO

LDR

电阻器(510,100k欧姆)

电容器 (0.1uF)

晶体管 2N2222

1 瓦电源指示灯

连接线

面包板

电路图

pYYBAGNyA1KAONJqAADdS6TQHxQ427.png

代码和说明

最后给出了自动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);

}



}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23141

    浏览量

    658533
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5147

    浏览量

    213413
  • Arduino
    +关注

    关注

    187

    文章

    6464

    浏览量

    186660
收藏 人收藏

    评论

    相关推荐

    手工制作红外遥控LED照明灯 可自动调节光度

    1.Arduino可以通过光照传感器检测外界光照强度,对LED照明灯进行自动调光; 2.Ardui
    的头像 发表于 04-27 09:44 1.8w次阅读
    手工制作红外遥控<b class='flag-5'>LED</b>照明灯 可<b class='flag-5'>自动</b>调节光度

    LED使用PCB上制作的arduino进行控制

    电子发烧友网站提供《LED使用PCB上制作的arduino进行控制.zip》资料免费下载
    发表于 08-02 10:56 0次下载
    <b class='flag-5'>LED</b>使用PCB上制作的<b class='flag-5'>arduino</b><b class='flag-5'>进行</b><b class='flag-5'>控制</b>

    LED灯条的控制强度

    电子发烧友网站提供《LED灯条的控制强度.zip》资料免费下载
    发表于 08-02 10:46 5次下载
    <b class='flag-5'>LED</b>灯条的<b class='flag-5'>控制</b><b class='flag-5'>强度</b>

    使用Arduino控制带开关的LED

    电子发烧友网站提供《使用Arduino控制带开关的LED.zip》资料免费下载
    发表于 11-11 09:28 0次下载
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>带开关的<b class='flag-5'>LED</b>

    使用Arduino和Android控制远程LED

    电子发烧友网站提供《使用Arduino和Android控制远程LED.zip》资料免费下载
    发表于 11-16 10:05 0次下载
    使用<b class='flag-5'>Arduino</b>和Android<b class='flag-5'>控制</b>远程<b class='flag-5'>LED</b>

    使用带有代码的Arduino UNO进行LED渐变

    电子发烧友网站提供《使用带有代码的Arduino UNO进行LED渐变.zip》资料免费下载
    发表于 11-21 10:21 0次下载
    使用带有代码的<b class='flag-5'>Arduino</b> UNO<b class='flag-5'>进行</b><b class='flag-5'>LED</b>渐变

    通过LDR传感器根据周围的光强度自动改变LED强度

    电子发烧友网站提供《通过LDR传感器根据周围的光强度自动改变LED强度.zip》资料免费下载
    发表于 11-23 11:35 0次下载
    通过LDR传感器根据周围的光<b class='flag-5'>强度</b><b class='flag-5'>自动</b>改变<b class='flag-5'>LED</b><b class='flag-5'>强度</b>

    使用Arduino和Python Tkinter进行RGB Led控制

    电子发烧友网站提供《使用Arduino和Python Tkinter进行RGB Led控制.zip》资料免费下载
    发表于 11-30 12:00 0次下载
    使用<b class='flag-5'>Arduino</b>和Python Tkinter<b class='flag-5'>进行</b>RGB <b class='flag-5'>Led</b><b class='flag-5'>控制</b>

    Arduino控制的RGB LED灯条

    电子发烧友网站提供《Arduino控制的RGB LED灯条.zip》资料免费下载
    发表于 12-29 11:39 4次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>的RGB <b class='flag-5'>LED</b>灯条

    Arduino手势控制LED亮度

    电子发烧友网站提供《Arduino手势控制LED亮度.zip》资料免费下载
    发表于 01-31 14:47 1次下载
    <b class='flag-5'>Arduino</b>手势<b class='flag-5'>控制</b><b class='flag-5'>LED</b>亮度

    使用Arduino蓝牙控制LED

    电子发烧友网站提供《使用Arduino蓝牙控制LED.zip》资料免费下载
    发表于 02-08 10:40 2次下载
    使用<b class='flag-5'>Arduino</b>蓝牙<b class='flag-5'>控制</b><b class='flag-5'>LED</b>

    用于LED灯串的Arduino控制电源

    电子发烧友网站提供《用于LED灯串的Arduino控制电源.zip》资料免费下载
    发表于 02-08 15:58 0次下载
    用于<b class='flag-5'>LED</b>灯串的<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b><b class='flag-5'>电源</b>

    使用Arduino Uno控制LED矩阵

    电子发烧友网站提供《使用Arduino Uno控制LED矩阵.zip》资料免费下载
    发表于 06-13 16:12 1次下载
    使用<b class='flag-5'>Arduino</b> Uno<b class='flag-5'>控制</b><b class='flag-5'>LED</b>矩阵

    使用IOT BOLT和SmartPhone控制LED强度

    电子发烧友网站提供《使用IOT BOLT和SmartPhone控制LED强度.zip》资料免费下载
    发表于 07-04 10:19 0次下载
    使用IOT BOLT和SmartPhone<b class='flag-5'>控制</b><b class='flag-5'>LED</b>的<b class='flag-5'>强度</b>

    如何使用Arduino控制RGB LED

    在本指南中,您将学习如何使用Arduino控制RGB LED。RGB(红-绿-蓝)LED可以通过混合不同强度的红、绿、蓝光来产生多种颜色。您
    的头像 发表于 02-11 10:28 4594次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>RGB <b class='flag-5'>LED</b>