ESP8266-Arduino编程实例-VEML6040颜色传感器驱动

VEML6040颜色传感器驱动

1、VEML6040介绍

VEML6040 颜色传感器可感应红光、绿光、蓝光和白光,并使用 CMOS 工艺将光电二极管、放大器和模拟/数字电路集成到单个芯片中。

通过应用颜色传感器,可以根据环境光源调整背光的亮度和色温,使面板看起来更舒适。 VEML6040 采用 FiltronTM 技术,实现了最接近真实人眼反应的环境光谱灵敏度。

在这里插入图片描述

VEML6040 提供出色的温度补偿能力,可在温度变化时保持输出稳定。 VEML6040 的功能通过 I2C(SMBus 兼容)接口协议的简单命令格式轻松操作。 VEML6040 的工作电压范围为 2.5 V 至 3.6 V。

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • VMEL6040传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

传感器引脚 ESP8266开发板引脚
Vin 5v
Gnd Gnd
SCL D1
SDA D2

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次实例使用如下驱动库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "Wire.h"
#include "veml6040.h"

VEML6040 RGBWSensor;

void setup() {
Serial.begin(9600);
Wire.begin();
if(!RGBWSensor.begin()) {
Serial.println("ERROR: couldn't detect the sensor");
while(1){}
}

/\*
\* init RGBW sensor with:
\* - 320ms integration time
\* - auto mode
\* - color sensor enable
\*/
RGBWSensor.setConfiguration(VEML6040_IT_320MS + VEML6040_AF_AUTO + VEML6040_SD_ENABLE);

delay(1500);
Serial.println("Vishay VEML6040 RGBW color sensor auto mode example");
Serial.println("CCT: Correlated color temperature in \260K");
Serial.println("AL: Ambient light in lux");
delay(1500);
}

void loop() {
Serial.print("RED: ");
Serial.print(RGBWSensor.getRed());
Serial.print(" GREEN: ");
Serial.print(RGBWSensor.getGreen());
Serial.print(" BLUE: ");
Serial.print(RGBWSensor.getBlue());
Serial.print(" WHITE: ");
Serial.print(RGBWSensor.getWhite());
Serial.print(" CCT: ");
Serial.print(RGBWSensor.getCCT());
Serial.print(" AL: ");
Serial.println(RGBWSensor.getAmbientLight());
delay(400);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126600103