物联网
您现在所在的位置:首页>企业动态>物联网

颜色传感器原理以及应用讲解

编辑:学到牛牛IT培训    发布日期: 2024-04-12 10:29:04  

颜色传感器的工作原理基于物体反射光线的颜色差异。当物体被照射光源时,其表面会反射出一定比例的光线,这些光线的波长和强度与物体本身的颜色有关。颜色传感器利用这些特性,通过光敏元件和信号处理器将光信号转换为电信号,并进行分析和识别。


颜色传感器通常由光源、滤光片、光敏元件、信号处理器等组成。光源照射在物体上,物体反射出来的光经过滤光片后进入光敏元件中,产生相应的电信号。这些电信号经过放大、滤波、数字化等处理后,可以得到物体的颜色信息。


1.png


参数表


2.png


颜色传感器采用的是内置APDS9960传感器,是一款集成ALS、红外LED和接近检测器的光学模块和环境亮度感测(ALS,Ambient Light Sensing)的环境亮度传感器,使用双光二极管来近似0.01lux照度近似人眼的视觉反应,带有上限和下限阈值的可编程中断功能,高达16位分辨率,即使在深色玻璃后也能高灵活运作。


原理图:


3.png


示例代码:

#include "SoftWire.h"

#include "Adafruit_APDS9960.h"


SoftWire sw(6,7);   //sda,scl

Adafruit_APDS9960 apds=Adafruit_APDS9960(sw);


#define RED   1

#define GREEN 2

#define BLUE  3

#define WHITE 4


int R_F = 13000;

int G_F = 19000;

int B_F = 25000;

int r_f = 768;

int g_f = 1024;

int b_f = 1280;


void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);


  if(!apds.begin()){

    Serial.println("failed to initialize device! Please check your wiring.");

  }

  else Serial.println("Device initialized!");


  //enable color sensign mode

  apds.enableColor(true);


  delay(500);

}


int colorDetect()

{

  uint16_t r, g, b, c;

  int t;

  //wait for color data to be ready

  while(!apds.colorDataReady()){

    delay(5);

  }

  apds.getColorData(&r, &g, &b, &c);


  r = map(r, r_f, R_F, 0, 255);  

  g = map(g, g_f, G_F, 0, 255);

  b = map(b, b_f, B_F, 0, 255);

  

  //Find the largest value in R, G, B. For example, the maximum is R means that the object is Red

  if (r > g)

    t = RED;

  else

    t = GREEN;

  if (t == GREEN && g < b)

    t = BLUE;

  if (t == RED && r < b)

    t = BLUE;


  //Returns the color only if the RGB value is greater than 30, otherwise returns 0

  if(t == BLUE && b > 50)

  {

    Serial.println("Blue");

    return t;

  }

  else if(t == GREEN && g > 50)

  {

    Serial.println("Green");

    return t;

  }

  else if(t == RED && r > 50)

  {

    Serial.println("Red");

    return t;

  }

  else 

    return 0;

  return 0;

}


void loop() {

  colorDetect();

  delay(200);

}


串口打印:


4.png

免费试学
课程好不好,不如实地听一听

封闭学习

2

1

联系我们

电话:028-61775817

邮箱:1572396657@qq.com

地址:成都市金牛区西城国际A座8楼

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    扫一扫,免费咨询

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    微信公众号

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

学一流技术,找高薪工作

物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

7-24小时服务热线:

028-61775817

版权声明 网站地图

蜀ICP备2021001672号

课程问题轻松问