本文將介紹如何使用Arduino和LDR傳感器實現(xiàn)LCD液晶屏亮度的自動調(diào)節(jié)。這是一個簡單的Arduino項目,項目主要由三大部分組成:傳感器,Arduino控制板和LCD模塊。基本原理是:Arduino通過LDR傳感器讀取環(huán)境光強(qiáng)度,并將室內(nèi)溫度和濕度顯示在LCD上,同時在光線不足時實現(xiàn)液晶屏幕亮度的自動調(diào)整。
LDR和DHT11(傳感器部分)
為了能夠檢測到光強(qiáng)度,這里選用了LDR光強(qiáng)度傳感器。LDR(光敏電阻)是一種特殊的電阻,當(dāng)檢測到有高強(qiáng)度的光照時,它呈低阻狀態(tài);反之,它呈現(xiàn)高阻狀態(tài)。擴(kuò)展閱讀: Arduino的光強(qiáng)度檢測 。LDR的電阻值與它探測到的光強(qiáng)度成反比,所以當(dāng)環(huán)境中有足夠的光線時,LDR的電阻值就會很低,經(jīng)過LDR的電壓降也就很低。本項目中,我們將通過LDR降低的電壓作為輸入,輸入到arduino板的模擬輸入針腳 A4。
項目中的溫度和濕度是通過DHT-11模塊獲取的。DHT11是一個常見的、低成本的數(shù)字溫濕度傳感器。擴(kuò)展閱讀: 如何基于Arduino制作DHT22控制的風(fēng)扇。DHT11內(nèi)置了電容式濕度傳感器和熱敏電阻來測量周圍的空氣,并通過 data 引腳上發(fā)出數(shù)字信號。Arduino為它提供了一個專用庫,這使我們從DHT11模塊獲取數(shù)據(jù)變得相對容易。
Arduino UNO(主控部分)
Arduino UNO是Arduino家族中非常常見的產(chǎn)品,本項目中它將作為主控板,UNO 包含了電源,USB接口,以及Atmel芯片。采用Arduino作為主控,簡化了建立控制系統(tǒng)的過程,Arduino提供了完整的單片機(jī),我們只需要編程上傳并連接功能模塊即可,而不需要去完成復(fù)雜的PCB設(shè)計。本項目中,arduino主控板是通過讀取連接到模擬輸入A4的LDR傳感器和連接到第6個數(shù)字輸入針的DHT11模塊的數(shù)據(jù)來完成控制的。Arduino模擬輸入的電壓范圍是0~5V,這個模擬范圍值,可通過 analogRead () 命令轉(zhuǎn)換為 0-1023 的數(shù)字值。
LCD Module (顯示部分)
本項目使用的是LCD 1602 液晶屏模塊,關(guān)于該模塊的接口定義可查閱: 1602 LCD液晶屏接口定義
程序代碼部分
#include
#include
#define DHT11_PIN 8
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
dht DHT;
int LDR_pin=A1;
int back_light=10;
int led=9;
int LDR_out;
int pwm_back_light;
int pwm_led;
int humidity;
int temperature;
void setup()
{
pinMode(LDR_pin,INPUT);
pinMode(back_light,OUTPUT);
pinMode(led,OUTPUT);
lcd.begin(16,2);
Serial.begin(9600);
}
void loop()
{
// READ DATA
int chk = DHT.read11(DHT11_PIN);
// DISPLAY DATA TO LCD
humidity=(DHT.humidity);
temperature=(DHT.temperature);
lcd.setCursor(0,0);
lcd.print("Humidity=");
lcd.print(humidity);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Temperature=");
lcd.print(temperature);
lcd.print((char)223);
lcd.print("C");
LDR_out=analogRead(LDR_pin);
pwm_led=LDR_out/4;
pwm_back_light=255-(LDR_out/4);
Serial.println(pwm_back_light);
analogWrite(back_light,pwm_back_light);
analogWrite(led,pwm_led);
delay(1000);
}
在程序中,首先我們配置了arduino uno的A4 針作為輸入針,讀取LDR傳感器輸出。在“setup”函數(shù)中,“Serial.begin(9600);”命令將打開Arduino和串口監(jiān)視器之間的通信。在“ loop”函數(shù)中,我們將從傳感器模擬針 A4讀取數(shù)據(jù),并將這些數(shù)據(jù)存儲在“l(fā)dr_out”變量中,然后將這些值映射到0-255的范圍。然后利用這個映射值在arduino的第10引腳(連接LCD模塊led+的引腳)上生成一個pwm信號(脈沖寬度調(diào)制)輸出。從而實現(xiàn)LCD的背光亮度就可以隨周圍的光強(qiáng)度變化而變化了。
-
lcd
+關(guān)注
關(guān)注
34文章
4477瀏覽量
169877 -
Arduino
+關(guān)注
關(guān)注
188文章
6481瀏覽量
189446 -
LDR
+關(guān)注
關(guān)注
0文章
100瀏覽量
7774
發(fā)布評論請先 登錄
相關(guān)推薦
條形液晶屏和長條液晶屏的亮度問題分析
LCD液晶屏使用注意事項
基于光照傳感器TSL2550的LCD亮度自動調(diào)節(jié)系統(tǒng)設(shè)計
DID液晶屏的特點(diǎn)
高亮LCD液晶屏應(yīng)如何選擇?
高亮的LCD液晶屏應(yīng)該如何選擇

LCD液晶屏的原理說明
戶外高亮LCD液晶屏有什么樣的特點(diǎn)

LCD段碼液晶屏有什么優(yōu)勢

LCD段碼液晶屏到底有什么優(yōu)勢
選擇LCD高亮液晶屏的注意事項
Arduino實現(xiàn)超聲波測距+LCD液晶屏實時顯示

評論