Arduino 您所在的位置:网站首页 传感器调试 Arduino

Arduino

2023-10-24 00:59| 来源: 网络整理| 查看: 265

一、介绍

本模块是基于 AMS 的 TCS3472XFN 彩色光数字转换器为核心的颜色传感器,传感器提供红色,绿色,蓝色(RGB)和清晰光感应值的数字输出。集成红外阻挡滤光片可最大限度地减少入射光的红外光谱成分,并可精确地进行颜色测量。具有高灵敏度,宽动态范围和红外阻隔滤波器。最小化 IR 和 UV 光谱分量效应,以产生准确的颜色测量。并且带有环境光强检测和可屏蔽中断。通过 I2C 接口通信。 在这里插入图片描述

二、 参数 工作电压:3.3V/5V控制芯片:TCS3472XFN逻辑电压:3.3V/5V通信接口:I2C 三、原理图

在这里插入图片描述

四、通信协议

1. I2C 通信:

一条数据线(SDA),一条时钟线(SCL)。 I2C 总线在传送数据 过程中共有三种类型信号:开始信号、结束信号和应答信号。

在这里插入图片描述

开始信号:SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。

结束信号:SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。

应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据 I2C 写时序 。

2. I2C 写时序:

在这里插入图片描述

首先主机会发送一个开始信号,然后将其 I2C 的 7 位地 址与写操作位组合成8 位的数据发送给从机, 从机接收到后会响应一个应答信号,主机此时将命令寄存器地址发送给从机,从机接收到发送 响应信号,此时主机发送命令寄存的值,从机回应一个响应信号,直到主机发送一个停止信 号,此次 I2C 写数据操作结束。

3. I2C 读时序: 在这里插入图片描述

首先主机会发送一个开始信号,然后将其 I2C 的 7 位地址与写操作位组合成 8位的数 据发送给从机,从机接收到后会响应一个应答信号,主机此时将命令寄存器地址发送给从机, 从机接收到发送响应信号,此时主机重新发送一个开始信号,并且将其 7 位地址和读操作位 组合成 8 位的数据发送给从机,从机接收到信号后发送响应信号,再将其寄存器中的值发送 给主机,主机端给予响应信号,直到主机端发送停止信号,此次通信结束。

4. I2C 地址:

I2C 设备地址为 0X29 注意:0X29 这个设备地址是 7 位的,8 位设备地址需要向高位移一位变成 0X52。

五、实验

测试使用的是 ARDUION UNO 开发板,波特率为 115200。

硬件连接: TCS3472X颜色传感器Ardunio_UNO R3WS2812Ardunio_UNO R3VIN5VDINPIN6GNDGNDVCC5VSCLA5GNDGNDSDAA4--

在这里插入图片描述

labirary 文件

在这里插入图片描述

测试代码 #include #include "MH_TCS34725.h" #include #ifdef __AVR__ #include #endif // Which pin on the Arduino is connected to the NeoPixels? // On a Trinket or Gemma we suggest changing this to 1 #define PIN 6 // How many NeoPixels are attached to the Arduino? #define NUMPIXELS 16 // our RGB -> eye-recognized gamma color byte gammatable[256]; MH_TCS34725 tcs = MH_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { Serial.begin(115200); Serial.println("Color View Test!"); if (tcs.begin()) { Serial.println("Found sensor"); } else { Serial.println("No TCS34725 found ... check your connections"); while (1); // halt! } pixels.begin(); // This initializes the NeoPixel library. // thanks PhilB for this gamma table! // it helps convert RGB colors to what humans see for (int i=0; i uint16_t clear, red, green, blue;//clear 函数的使用 ???? tcs.getRGBC(&red, &green, &blue, &clear); tcs.lock(); // turn off LED // Figure out some basic hex code for visualization uint32_t sum = clear; float r, g, b; r = red; r /= sum; g = green; g /= sum; b = blue; b /= sum; r *= 256; g *= 256; b *= 256; Serial.print("\t"); Serial.print((int)r, HEX); Serial.print("\t"); Serial.print((int)g, HEX); Serial.print("\t"); Serial.print((int)b, HEX); delay(1000); Serial.print("\t"); Serial.print((int)r, BIN); Serial.print("\t"); Serial.print((int)g, BIN); Serial.print("\t"); Serial.print((int)b, BIN); delay(1000); Serial.print("\t"); Serial.print((int)r); Serial.print("\t"); Serial.print((int)g); Serial.print("\t"); Serial.print((int)b); Serial.println(); //Serial.print((int)r ); Serial.print(" "); Serial.print((int)g);Serial.print(" "); Serial.println((int)b ); //Set the color lamp for(int i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有