“SKU:RB-02S161 IIC 颜色传感器”的版本间的差异

来自ALSROBOT WiKi
跳转至: 导航搜索
example2_Arduino
第95行: 第95行:
  
 
* 示例程序
 
* 示例程序
 +
<pre style='color:blue'>
 +
 +
#include <Wire.h>
 +
#include <ALS_TCS34725.h>
 +
#include <ChainableLED.h>
 +
#include <Servo.h>
 +
float r, g, b;
 +
 +
Servo myservo;
 +
#define NUM_LEDS  1
 +
ChainableLED leds(5, 6, NUM_LEDS);
 +
 +
ALS_TCS34725 tcs = ALS_TCS34725(TCS34725_INTEGRATIONTIME_24MS, TCS34725_GAIN_1X);
 +
const int interruptPin = 2;
 +
volatile boolean state = false;
 +
int pos = 0;
 +
 +
//Interrupt Service Routine
 +
void isr()
 +
{
 +
  state = true;
 +
}
 +
 +
void getRawData_noDelay(uint16_t *r, uint16_t *g, uint16_t *b, uint16_t *c)
 +
{
 +
  *c = tcs.read16(TCS34725_CDATAL);
 +
  *r = tcs.read16(TCS34725_RDATAL);
 +
  *g = tcs.read16(TCS34725_GDATAL);
 +
  *b = tcs.read16(TCS34725_BDATAL);
 +
}
 +
 +
 +
void setup() {
 +
  myservo.attach(10);
 +
  myservo.write(20);
 +
 
 +
  leds.init();
 +
 
 +
  pinMode(interruptPin, INPUT_PULLUP); //TCS interrupt output is Active-LOW and Open-Drain
 +
  attachInterrupt(digitalPinToInterrupt(interruptPin), isr, FALLING);
 +
 +
  Serial.begin(9600);
 +
 
 +
  if (tcs.begin()) {
 +
  } else {
 +
    while (1);
 +
  }
 +
 
 +
  // Set persistence filter to generate an interrupt for every RGB Cycle, regardless of the integration limits
 +
tcs.write8(TCS34725_PERS, TCS34725_PERS_NONE);
 +
tcs.setInterrupt(true);
 +
 
 +
Serial.flush();
 +
}
 +
 +
 +
void loop() {
 +
  checkcolor();
 +
    for (pos = 20; pos <= 160; pos += 1) {
 +
    myservo.write(pos);             
 +
    checkcolor();
 +
    for (byte i=0; i<NUM_LEDS; i++)
 +
    leds.setColorRGB(i, (int)r, (int)g, ( int)b);
 +
  }
 +
 
 +
  for (pos = 160; pos >= 20; pos -= 1) {
 +
    myservo.write(pos);           
 +
    checkcolor();
 +
    for (byte i=0; i<NUM_LEDS; i++)
 +
leds.setColorRGB(i, (int)r, (int)g, (int)b);
 +
  }
 +
 +
}
 +
 +
void checkcolor()
 +
{
 +
  if (state) {
 +
    uint16_t  red, green, blue,clear;
 +
    getRawData_noDelay(&red, &green, &blue,&clear);
 +
    uint32_t sum = clear;
 +
 
 +
  r = red; r /= sum;
 +
  g = green; g /= sum;
 +
  b = blue; b /= sum;
 +
  r *= 256; g *= 256; b *= 256;
 +
Serial.print("\tR:\t"); Serial.print(r);
 +
Serial.print("\tG:\t"); Serial.print(g);
 +
Serial.print("\tB:\t"); Serial.print(b);
 +
Serial.println();
 +
Serial.flush();
 +
 +
tcs.clearInterrupt();
 +
state = false;
 +
  }
 +
  }
 +
</pre>
  
 
* 程序效果
 
* 程序效果

2018年9月4日 (二) 17:02的版本

02S16100.jpg

目录

产品概述

IIC颜色传感器使用TCS34725颜色传感器进行颜色识别。TCS34725是一款高性价比的RGB全彩颜色识别传感器,传感器通过光学感应来识别物体的表面颜色。支持红、绿、蓝(RGB)三基色,支持明光感应,可以输出对应的具体数值,帮助您还原颜色本真。
为了提高精度,防止周边环境干扰,我们在传感器上添加了一个镜头罩,有效减少外界杂光干扰传感器,让颜色管理更加准确。板载自带2个高亮LED,可以让传感器在低环境光的情况下依然能够正常使用,实现“补光”的功能。模块采用I2C通信,拥有4P防插反接口,更加便利。

产品参数

基本参数

1.品名:IIC颜色传感器
2.货号:RB-02S161
3.品牌:奥松机器人
4.产地:哈尔滨
5.尺寸:25*40
6.固定孔:M3*2

电气参数

1.接口类型:KF2510-4P防插反接口
2.信号类型:IIC通讯
3.指示灯:高亮LED
4.工作电压:5V
5.工作电流:100mA
6.引脚定义:

+:电源正极
-:电源负极
SDA:IIC数据端口
SCL:IIC时钟端口

7.扩展接口:

LED:两个板载LED控制端口,悬空或高电平点亮,低电平熄灭
INT:中断引脚

8.连接线:4P 传感器连接线
9.检测范围:红、绿、蓝及白光检测
10.工作温度:-40 - 85℃
产品尺寸图:

02S16101.png

使用方法

example1_Arduino

  • 主要硬件
Arduino UNO 控制器
传感器扩展板 V5.0
IIC 颜色传感器
USB 数据线
  • 硬件连接
02S16102.png
  • 示例程序
/* Example code for the ALS_TCS34725 breakout library */

/* Connect SCL    to analog 5
   Connect SDA    to analog 4
   Connect VDD    to 5V DC
   Connect GROUND to common ground */

#include <Wire.h>
#include "ALS_TCS34725.h"

ALS_TCS34725 tcs = ALS_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);

void setup(void) {
  Serial.begin(9600);
  
  if (tcs.begin()) {
    Serial.println("Found sensor");
  } else {
    Serial.println("No TCS34725 found");
    while (1);
  }
  }

void loop(void) {
  uint16_t r, g, b, c, colorTemp, lux;
  
  tcs.getRawData(&r, &g, &b, &c);
  colorTemp = tcs.calculateColorTemperature(r, g, b);
  lux = tcs.calculateLux(r, g, b);
  
  Serial.print("Color Temp: "); Serial.print(colorTemp, DEC); Serial.print(" K - ");
  Serial.print("Lux: "); Serial.print(lux, DEC); Serial.print(" - ");
  Serial.print("R: "); Serial.print(r, DEC); Serial.print(" ");
  Serial.print("G: "); Serial.print(g, DEC); Serial.print(" ");
  Serial.print("B: "); Serial.print(b, DEC); Serial.print(" ");
  Serial.print("C: "); Serial.print(c, DEC); Serial.print(" ");
  Serial.println(" ");
}
  • 程序效果

打开 Arduino IDE 自带的串口监视器,将颜色传感器放于不同颜色的表面,可以看到串口监视器中打印不同的数值

02S16103.png

example2_Arduino

  • 主要硬件
  • 硬件连接
  • 示例程序

#include <Wire.h>
#include <ALS_TCS34725.h>
#include <ChainableLED.h>
#include <Servo.h>
float r, g, b;

Servo myservo; 
#define NUM_LEDS  1
ChainableLED leds(5, 6, NUM_LEDS);

ALS_TCS34725 tcs = ALS_TCS34725(TCS34725_INTEGRATIONTIME_24MS, TCS34725_GAIN_1X);
const int interruptPin = 2;
volatile boolean state = false;
int pos = 0; 

//Interrupt Service Routine
void isr() 
{
  state = true;
}

void getRawData_noDelay(uint16_t *r, uint16_t *g, uint16_t *b, uint16_t *c)
{
  *c = tcs.read16(TCS34725_CDATAL);
  *r = tcs.read16(TCS34725_RDATAL);
  *g = tcs.read16(TCS34725_GDATAL);
  *b = tcs.read16(TCS34725_BDATAL);
}


void setup() {
   myservo.attach(10);
   myservo.write(20);
   
   leds.init();
   
  pinMode(interruptPin, INPUT_PULLUP); //TCS interrupt output is Active-LOW and Open-Drain
  attachInterrupt(digitalPinToInterrupt(interruptPin), isr, FALLING);

  Serial.begin(9600);
  
  if (tcs.begin()) {
  } else {
    while (1);
  }
  
  // Set persistence filter to generate an interrupt for every RGB Cycle, regardless of the integration limits
tcs.write8(TCS34725_PERS, TCS34725_PERS_NONE); 
tcs.setInterrupt(true);
  
Serial.flush();
}


void loop() {
  checkcolor();
    for (pos = 20; pos <= 160; pos += 1) { 
    myservo.write(pos);              
    checkcolor();
    for (byte i=0; i<NUM_LEDS; i++)
    leds.setColorRGB(i, (int)r, (int)g, ( int)b); 
   }
   
   for (pos = 160; pos >= 20; pos -= 1) { 
    myservo.write(pos);            
    checkcolor();
    for (byte i=0; i<NUM_LEDS; i++)
 leds.setColorRGB(i, (int)r, (int)g, (int)b); 
  }

}

void checkcolor()
{
  if (state) {
    uint16_t  red, green, blue,clear;
    getRawData_noDelay(&red, &green, &blue,&clear);
    uint32_t sum = clear;
  
  r = red; r /= sum;
  g = green; g /= sum;
  b = blue; b /= sum;
  r *= 256; g *= 256; b *= 256;
 Serial.print("\tR:\t"); Serial.print(r);
 Serial.print("\tG:\t"); Serial.print(g);
 Serial.print("\tB:\t"); Serial.print(b);
 Serial.println();
 Serial.flush();

 tcs.clearInterrupt();
 state = false;
  }
  }
  • 程序效果

example_Raspberry Pi

相关资料

Erweima.png
  • IIC 颜色传感器传感器 datasheet & 示例程序

下载链接:

  • 相关资料

[ datasheet]