本文將介紹如何使用Arduino和LDR傳感器實(shí)現(xiàn)LCD液晶屏亮度的自動(dòng)調(diào)節(jié)。這是一個(gè)簡(jiǎn)單的Arduino項(xiàng)目,項(xiàng)目主要由三大部分組成:傳感器,Arduino控制板和LCD模塊?;驹硎牵篈rduino通過LDR傳感器讀取環(huán)境光強(qiáng)度,并將室內(nèi)溫度和濕度顯示在LCD上,同時(shí)在光線不足時(shí)實(shí)現(xiàn)液晶屏幕亮度的自動(dòng)調(diào)整。
LDR和DHT11(傳感器部分)
為了能夠檢測(cè)到光強(qiáng)度,這里選用了LDR光強(qiáng)度傳感器。LDR(光敏電阻)是一種特殊的電阻,當(dāng)檢測(cè)到有高強(qiáng)度的光照時(shí),它呈低阻狀態(tài);反之,它呈現(xiàn)高阻狀態(tài)。擴(kuò)展閱讀: Arduino的光強(qiáng)度檢測(cè) 。LDR的電阻值與它探測(cè)到的光強(qiáng)度成反比,所以當(dāng)環(huán)境中有足夠的光線時(shí),LDR的電阻值就會(huì)很低,經(jīng)過LDR的電壓降也就很低。本項(xiàng)目中,我們將通過LDR降低的電壓作為輸入,輸入到arduino板的模擬輸入針腳 A4。
項(xiàng)目中的溫度和濕度是通過DHT-11模塊獲取的。DHT11是一個(gè)常見的、低成本的數(shù)字溫濕度傳感器。擴(kuò)展閱讀: 如何基于Arduino制作DHT22控制的風(fēng)扇。DHT11內(nèi)置了電容式濕度傳感器和熱敏電阻來測(cè)量周圍的空氣,并通過 data 引腳上發(fā)出數(shù)字信號(hào)。Arduino為它提供了一個(gè)專用庫(kù),這使我們從DHT11模塊獲取數(shù)據(jù)變得相對(duì)容易。
Arduino UNO(主控部分)
Arduino UNO是Arduino家族中非常常見的產(chǎn)品,本項(xiàng)目中它將作為主控板,UNO 包含了電源,USB接口,以及Atmel芯片。采用Arduino作為主控,簡(jiǎn)化了建立控制系統(tǒng)的過程,Arduino提供了完整的單片機(jī),我們只需要編程上傳并連接功能模塊即可,而不需要去完成復(fù)雜的PCB設(shè)計(jì)。本項(xiàng)目中,arduino主控板是通過讀取連接到模擬輸入A4的LDR傳感器和連接到第6個(gè)數(shù)字輸入針的DHT11模塊的數(shù)據(jù)來完成控制的。Arduino模擬輸入的電壓范圍是0~5V,這個(gè)模擬范圍值,可通過 analogRead () 命令轉(zhuǎn)換為 0-1023 的數(shù)字值。
LCD Module (顯示部分)
本項(xiàng)目使用的是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ù)存儲(chǔ)在“l(fā)dr_out”變量中,然后將這些值映射到0-255的范圍。然后利用這個(gè)映射值在arduino的第10引腳(連接LCD模塊led+的引腳)上生成一個(gè)pwm信號(hào)(脈沖寬度調(diào)制)輸出。從而實(shí)現(xiàn)LCD的背光亮度就可以隨周圍的光強(qiáng)度變化而變化了。
-
lcd
+關(guān)注
關(guān)注
34文章
4514瀏覽量
171233 -
Arduino
+關(guān)注
關(guān)注
189文章
6497瀏覽量
190538 -
LDR
+關(guān)注
關(guān)注
0文章
100瀏覽量
7866
發(fā)布評(píng)論請(qǐng)先 登錄
Arduino 驅(qū)動(dòng)1602LCD液晶屏
條形液晶屏和長(zhǎng)條液晶屏的亮度問題分析
LCD液晶屏使用注意事項(xiàng)
基于光照傳感器TSL2550的LCD亮度自動(dòng)調(diào)節(jié)系統(tǒng)設(shè)計(jì)
DID液晶屏的特點(diǎn)
高亮LCD液晶屏應(yīng)如何選擇?
高亮的LCD液晶屏應(yīng)該如何選擇

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

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

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

評(píng)論