这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【换取逻辑分析仪】+体验TEMT6000环境光传感器

共1条 1/1 1 跳转至

【换取逻辑分析仪】+体验TEMT6000环境光传感器

专家
2024-11-05 11:42:26   被打赏 43 分(兑奖)     打赏

CJMCU-TEMT6000是一款环境光传感器,用于可见光的检测。最高灵敏度为 570nm,其具有 ±60° 的较宽半灵敏度角度。尽管该器件对环境光非常敏感,但它可抑制红外线 (IR) 光谱,从而可提供类似“人眼”的更高可见光谱响应性。

图片1.png

模块提供三个引脚:电源Vcc(直流3.3-5.5V)、地Gnd、Vout(模拟电压,在5工作电压情况范围0-5V),模拟输出(S)。照度范围:1--1000Lux。

本次体验,使用ESP8266,在Arduino下进行测试,使用3.3V的工作电压,搭建的电路如下:

图片5.png

图片2.png

ESP8266刚好提供有一个10位的ADC采集端,用来采集环境光传感器TEMT6000的输出电压。OLED的第一行就是ADC的采集结果。实际测试,TEMT6000确实非常灵敏,用不同介质在距离传感器10厘米位置处,仅仅因为反射,都会明显改变测试结果。在聚光手电筒照射下,立即达到最大值1024。

程序代码如下:


#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// OLED的显示宽高
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// ESP8266接线备注:SCL(GPIO5---D1), SDA(GPIO4---D2)
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
// The pins for I2C are defined by the Wire-library. 
// On an arduino UNO:       A4(SDA), A5(SCL)
// On an arduino MEGA 2560: 20(SDA), 21(SCL)
// On an arduino LEONARDO:   2(SDA),  3(SCL), ...
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)

// OLED的I2C访问地址
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32

// 声明OLED显示对象
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// 声明光检测用变量
// ADC的输入口,ESP8266只有一个ADC输入口:A0
int sensorPin = A0;
// ADC转换结果
int sensorValue = 0;

// 初始化处理
void setup() {
   // 初始化串口波特率
  Serial.begin(115200);
  
  // 检查OLED
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
     // 连接失败
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
}

// 测试用显示数据
uint16_t cnt=0;

void loop() {
   // 获得ADC转换结果
  sensorValue = analogRead(sensorPin);
  
  // 清除显示内容
  display.clearDisplay();
  // 设置显示字体的尺寸
  display.setTextSize(2); // Draw 2X-scale text
  // 设置显示色
  display.setTextColor(SSD1306_WHITE);
  // 设置显示位置
  display.setCursor(0, 0);
  // 输出ADC转换结果
  display.println(sensorValue);
  // 设置显示位置
  display.setCursor(0, 16);
  // 输出测试数据
  display.println(cnt++);
  
  // 启动显示
  display.display();
  
  // 延时
  delay(50);
}

需要引入Adafruit的GFX库和SSD1306的支持库。

测试文件:demo.zip




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]