如何使用Arduino和LDR传感器实现LCD液晶屏亮度的自动调节

描述

  本文将介绍如何使用Arduino和LDR传感器实现LCD液晶屏亮度的自动调节。这是一个简单的Arduino项目,项目主要由三大部分组成:传感器,Arduino控制板和LCD模块。基本原理是:Arduino通过LDR传感器读取环境光强度,并将室内温度和湿度显示在LCD上,同时在光线不足时实现液晶屏幕亮度的自动调整。

  智能亮度控制威廉希尔官方网站 图

LDR

  LDR和DHT11(传感器部分)

  为了能够检测到光强度,这里选用了LDR光强度传感器。LDR(光敏电阻)是一种特殊的电阻,当检测到有高强度的光照时,它呈低阻状态;反之,它呈现高阻状态。扩展阅读: Arduino的光强度检测 。LDR的电阻值与它探测到的光强度成反比,所以当环境中有足够的光线时,LDR的电阻值就会很低,经过LDR的电压降也就很低。本项目中,我们将通过LDR降低的电压作为输入,输入到arduino板的模拟输入针脚 A4。

  项目中的温度和湿度是通过DHT-11模块获取的。DHT11是一个常见的、低成本的数字温湿度传感器。扩展阅读: 如何基于Arduino制作DHT22控制的风扇。DHT11内置了电容式湿度传感器和热敏电阻来测量周围的空气,并通过 data 引脚上发出数字信号。Arduino为它提供了一个专用库,这使我们从DHT11模块获取数据变得相对容易。

  Arduino UNO(主控部分)

  Arduino UNO是Arduino家族中非常常见的产品,本项目中它将作为主控板,UNO 包含了电源,USB接口,以及Atmel芯片。采用Arduino作为主控,简化了建立控制系统的过程,Arduino提供了完整的单片机,我们只需要编程上传并连接功能模块即可,而不需要去完成复杂的PCB设计。本项目中,arduino主控板是通过读取连接到模拟输入A4的LDR传感器和连接到第6个数字输入针的DHT11模块的数据来完成控制的。Arduino模拟输入的电压范围是0~5V,这个模拟范围值,可通过 analogRead () 命令转换为 0-1023 的数字值。

  LCD Module (显示部分)

  本项目使用的是LCD 1602 液晶屏模块,关于该模块的接口定义可查阅: 1602 LCD液晶屏接口定义

LDR

  程序代码部分

#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”函数中,“Serial.begin(9600);”命令将打开Arduino和串口监视器之间的通信。在“ loop”函数中,我们将从传感器模拟针 A4读取数据,并将这些数据存储在“ldr_out”变量中,然后将这些值映射到0-255的范围。然后利用这个映射值在arduino的第10引脚(连接LCD模块led+的引脚)上生成一个pwm信号(脉冲宽度调制)输出。从而实现LCD的背光亮度就可以随周围的光强度变化而变化了。

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

全部0条评论

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

×
20
完善资料,
赚取积分