如何用调光器控制灯光

电子说

1.3w人已加入

描述

这篇文章来源于DevicePlus英语网站的翻译稿。

调光器只是另一种类型的电位器。我们已经探索过如何使用一个调光器来控制伺服,本指南将展示如何使用它来控制LED。由于LED(像大多数灯一样)在通过它们的功率过大时会被烧坏,本文将能够帮助您了解如何校准电位计以限制 Arduino的电压输出。

LED和调光电位计的工作原理

LED在大多数项目中用于测试电路或指示某些部件是否正常工作。但是,在本项目中,我们想直接控制LED的亮度。我们将通过两种方式来展示如何使用电位计直接控制通过LED的电压,以及如何使用Arduino的编程来对其进行间接控制。

首先,我们需要了解LED的工作原理。当电流通过LED时,它会发光。通过LED的电流量将决定它的亮度,但电流过大会烧坏LED。这就是为什么大多数使用LED的项目需要一个220欧姆的电阻来阻碍电流流通。

电位计也是一种电阻可变的电阻器。表盘转的幅度越大,它给电路增加的电阻就越大。在接线环节的第一部分,我们将展示如何在不使用Arduino的情况下直接降低LED的亮度。然后,我们将调光器添加到电路中,以通过草图对亮度进行多的控制。

所需组件

我们在这里所进行的项目的两个版本都很简单,所以您可能已经具有所需的大部分组件了,尤其是如果您曾经购买过基本的电子设备套件的话。无论哪种版本,您都需要以下组件以及电源:

Arduino Uno led
Arduino IDE led
一个面包板 led
一个220 欧姆 电阻 led
一个电位计
任何电位计都可以,但是如果您有滑块电位计可以使用该电位计,因为在将灯光调暗时该电位计比表盘式更加自然
led

Arduino和IDE仅用于该电路的第二种版本。但是,我们将使用它为第一个版本的面包板供电。您还可以使用类似这样的电源模块来添加与 Arduino供电效果相同的电源。请注意,如果您使用其他电源(例如9V电池),第一个电路可能无法正常工作,并且可能会烧坏您的LED。

接线

我们将要使用的第一个接线模型完全不需要Arduino,所以我们首先对第一个模型进行接线。使用该电路,您将能够看到电位计是如何直接影响其电阻的。首先,使用面板板将以下组件接线:

● 首先,将电源线和地线分别连接到面包板侧面的导轨和Arduino上的5V和GND引脚。
● 将电源轨连接到电位计的一侧引脚。
● 将电位计上的中心引脚连接到LED的长引脚。
● 将LED的短引脚连接到220欧姆电阻。
● 将电阻的另一端连接到接地轨。
led

为您的Arduino或电源模块供电,LED将亮起。现在,您可以滑动电位计,电路的电阻将发生变化,从而调整流经LED的电流,使光线变得更亮或更暗。

这样就用一种小规模电路展示了大多数调光电路的工作原理。电路中加入220欧姆电阻,防止电流过载烧坏LED灯。连接好电阻后,电位计将会在可调范围内对电流进行进一步限制。

然而,直接修改电路中的电流并不是调节灯光亮度的唯一方法。为了展示另一种方案,我们将扩展电路以读取电位计的电阻,并使用草图为LED分配一个值(我们将在下一节解释)。

完成第一个版本的电路后,请进行以下更改:

● 将LED的长端插入Arduino上的引脚6(而不是之前电路中电位计的中心引脚)。
● 将电位计的中心引脚连接到Arduino的引脚A0。
● 将电位计的第三个引脚连接到接地轨(第一个引脚仍然连接到电源轨)。

在该电路中,电位计的电阻不直接影响LED的亮度,而是被Arduino读取为模拟值。然后,可以在草图中对该值进行缩放和调整,我们将在下文中进行说明。

代码

首先,这是您可以直接上传到Arduino中的完整代码。它的功能几乎与原始电路相同,只是添加了更多的软件控制。

int blueLED = 6;
int dimmerPIN = A0;
int dimmerValue = 0;
int ledValue = 0;

void setup() {
pinMode(dimmerPIN, INPUT);
pinMode(blueLED,OUTPUT);
Serial.begin(9600);
}

void loop(){
dimmerValue = analogRead(dimmerPIN);
ledValue = map(dimmerValue, 0, 1023, 0, 255);
analogWrite(blueLED, ledValue);
}

大部分代码都是相当基础的——变量声明、分配引脚等等,但是我们需要注意loop()部分中的三行。

dimmerValue = analogRead(dimmerPIN);
ledValue = map(dimmerValue, 0, 1023, 0, 255);
analogWrite(blueLED, ledValue);

这里的第一行用于从引脚A0读取电位计的值,该值的测量范围为0到1023。我们可以将此值转换为用于控制LED的引脚6的输出。该代码的第二行用于将电位计的值重新映射到0到255的范围内(PWM引脚的输出范围)。最后一行代码用于将该值写入引脚6。

但是,我们可以通过调整第二行的最后两个数字来设置最小或最大亮度。第二个0用于设施最小亮度级别(在这种情况下将完全熄灭)。提高此级别之后,即使您将调光器调到最低,灯光也会保持您所设置的最低级别的亮度。同样,此行中的255是设置的最高级别。如果您想降低最大亮度级别—毕竟LED可以变得非常亮—降低这个数字可以保证即使一直将亮度调高灯光也不会变得太亮。

在此特定示例中,将0到5V范围内的值(取决于您设置的限制)写入LED引脚输出,并且使用220欧姆电阻进一步限制通过LED的电流。当您处理更大、更复杂的灯光设备(如LED灯条、灯泡或任何电压高于Arduino可以输出的5V电压的设备)时,请牢记这一点。

led

DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

审核编辑 黄宇

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分