推广 热搜:

电脑显示器亮度智能调节器

   更新时间: 2026-09-11 08:09  发布时间: 1年前   290
核心提示:智能手机普遍内置的光线传感器,在一些笔记本电脑上却并没有配备。当你带着这样的笔记本电脑在某些环境下工作时,如何让笔记本随着环境光线来自动调节屏幕的亮度呢?下面我们准备用一个外加两枚光敏电阻来搞定这件事~通过这个小项目你可以学到如何让和电脑通过串口进行通信,以及光敏电阻的使用方法。组件清单 开发板(这里使用 Pro mini) × 1LDR 光敏电阻 × 210kr 电阻 × 1电路板 × 1排针座 × 2USB 线(兼容开

智能手机普遍内置的光线传感器,在一些笔记本电脑上却并没有配备。当你带着这样的笔记本电脑在某些环境下工作时,如何让笔记本随着环境光线来自动调节屏幕的亮度呢?

下面我们准备用一个 外加两枚光敏电阻来搞定这件事~

通过这个小项目你可以学到如何让 和电脑通过串口进行通信,以及光敏电阻的使用方法。

组件清单

开发板(这里使用 Pro mini) × 1

LDR 光敏电阻 × 2

10kr 电阻 × 1

电路板 × 1

排针座 × 2

USB 线(兼容 开发板) × 1

原理说明

当我们需要检测环境光线的时候,使用光敏电阻是最简单的方案。就像智能手机的光线传感器一样,将 LDR 光敏电阻朝向人的正脸并获取光线强度模拟信号。由 的 ADC 引脚读取这个数值,值域为 0 ~ 1024。

我们通过电脑上的 程序,来接收由 发送过来的光线数值,并将该数值与屏幕亮度的级别做一个映射,然后来调节屏幕的亮度。

搭建实验电路

为了验证这个想法,首先在面包板上搭建实验电路。原理图如下。

并编写一段简单的程序,通过 的串行监视器输出光线传感器数据。

// pin int = A3; void setup() { // set here .begin(9600); // init at 9600 bps } void loop() { // int = (); // read the input on pin A3: .(); // send data over delay(200); // a delay to make work }

完整的代码在项目文件库中可以下载:

运行之后可以看到在不同的光线强度下,输出的数值在 0 ~ 950 这个区间。

设计 PCB

使用 设计出 PCB。我选用了两枚传感器,这样让这个小设备如图一直蜗牛,更加可爱。实际上左边的 LDR 光敏电阻并未使用。

然后就交给 PCB 板厂打样吧。

焊接并完成组装

这块板很简单,没有太多的组件。焊接好一组排针座和光敏电阻就好了。

然后把 插进排针座。

编程

将 用 USB 线连接到电脑,打开 IDE 将下面的代码上传到 上。

// pin int = A3; void setup() { // set here .begin(9600); // init at 9600 bps } void loop() { // int = (); // read the input on pin A3: .(); // send data over delay(200); // a delay to make work } 安装 程序

通过上面的步骤, 已经可以将光线数值通过串口传给计算机了。下面要做的是编写一个 程序,在计算机上运行,任务是接收发来的传感器数值并依此调节屏幕亮度。

如果你的计算机上还没装过 环境,请在这里下载好 并完成安装:

打开终端,安装两个库,分别用于串口和屏幕亮度控制方面的支持。

$ pip $ pip --

在项目文件库中下载源码:

找到 .py,其程序如下:

""" Hack! (C) : GPL3- : """ """ - $ pip $ pip -- """ # # for .tools. # to get port ntrol as # to # (bit per ) # ( to your need) = 9600 # Pro Micro"s buad rate is 9600 PORT = "" # get port = list(.tools..()) # get list of ports for in : # all ports if " Micro" in .: # look for Pro Micro board PORT = str([0]) # select first found board and break # # with = .(PORT, ) def ( =0, =1024, =0, =100): """ To map . sends from 0 to 1024. My goal is to make them in 0 to 100.""" int((value - ) * ( - ) / ( - ) + ) # while 1: # byte data into then = int(.().("utf-8")) # get data = (value=) # map value ( in ) #print() print() .() # set # close port so that can use it .close()

运行它,同时确保 也连接在计算机上。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯频道
推荐图文
推荐资讯频道
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020015483号-17