“做一個明亮的火花,把燈關(guān)到天黑!” 有時我們忘記關(guān)燈和浪費電力,你一定也看到白天打開了路燈。我們已經(jīng)在黑暗探測器上構(gòu)建了一些電路,如果外面很亮,燈會自動關(guān)閉,如果外面很暗,燈會自動打開。但是這一次,在這個電路中,我們不僅根據(jù)光照條件打開和關(guān)閉燈,而且還根據(jù)外部光線條件改變光的強度。在這里,我們將LDR和PWM概念與Arduino一起使用,以自動降低或增加1瓦功率LED的亮度。
基本上,PWM是指脈寬調(diào)制,通過PWM引腳的輸出信號將是模擬信號,并從Arduino獲取為數(shù)字信號。它使用數(shù)字波的占空比來生成信號的順序模擬值。并且,該信號進一步用于控制電源LED的亮度。
所需材料
Arduino UNO
LDR
電阻器(510,100k歐姆)
電容器 (0.1uF)
晶體管 2N2222
1 瓦電源指示燈
連接線
面包板
電路圖

代碼和說明
最后給出了自動LED調(diào)光器的完整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
現(xiàn)在,在循環(huán)中,我們首先使用命令“analogRead(LDR)”讀取值,然后將模擬輸入保存到名為“value”的變量中。通過進行一些數(shù)學計算,我們正在生成PWM信號。在這里,我們僅在模擬值小于500時才使用PWM控制光的強度,如果超過500,則完全關(guān)閉燈。
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);
}
}
它如何自動控制光強度:
根據(jù)電路圖,我們使用LDR和100k電阻制作了分壓器電路。分壓器輸出饋送到 Arduino 的模擬引腳。模擬引腳感測電壓并為Arduino提供一些模擬值。模擬值根據(jù)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
+關(guān)注
關(guān)注
243文章
24576瀏覽量
690491 -
PWM
+關(guān)注
關(guān)注
116文章
5865瀏覽量
225435 -
Arduino
+關(guān)注
關(guān)注
190文章
6526瀏覽量
196791
發(fā)布評論請先 登錄
LED使用PCB上制作的arduino進行控制
使用Arduino控制帶開關(guān)的LED
使用Arduino和Android控制遠程LED
使用帶有代碼的Arduino UNO進行LED漸變
通過LDR傳感器根據(jù)周圍的光強度自動改變LED強度
使用Arduino和Python Tkinter進行RGB Led控制
使用IOT BOLT和SmartPhone控制LED的強度
如何使用Arduino對電源LED進行自動強度控制
評論