文章目录

  • 1 前言
  • 2 色彩介绍
    • 2.1 传感器数据
    • 2.2 lcd屏幕数据
  • 3 硬件连接
  • 4 代码
  • 5 结果

1 前言

本章测试色彩识别传感器TCS34725。

模块官网介绍及代码:https://doc.openluat.com/wiki/21?wiki_page_id=2746

参考文章:STM32读取TCS34725源代码,RGB转HSL代码,已通过实际测试

2 色彩介绍

以下是结合部分资料整合的个人理解,如果有错误欢迎指正。

2.1 传感器数据

传感器获取的数值为RGBC,其中的c表示clear,即所有色彩都通过。其他的三个就是红绿蓝三色。
原理大概是有传感器加上了红、绿、蓝三个偏光板,然后获取三个颜色的强度,然后clear就是不加,直接获取全部色彩。
最终传感器得到四个数值,R,G,B,C
根据参考文章的理解,使用R/G/B三色数据除以C得到一个比值。
这个比值再乘以255得到确定数值,也就是255:255:255的色彩数据格式。

2.2 lcd屏幕数据

我使用的是合宙的st7735驱动的lcd屏幕
下图为介绍。
其中提到色彩为16位。
16位分为5:6:5,由于对于绿色较为敏感,所以绿色位6位,这样绿色的数值范围就大一倍,分的更细致。
16位高5位为红色,低5位为蓝色,中间的6位为绿色。

我们可以尝试在lcd上显示如下代码,其中2048,32,1表示的偏移,二进制转换分别是右移11位,右移6位,不右移。

lcd.fill(0,129,128,160,0xFFFF)       --白色-- 显示蓝色
R,G,B = 0,0,31
temp_rgb16 = R* 2048+G* 32+B * 1
lcd.fill(0,129,128,160,temp_rgb16 )-- 显示绿色
R,G,B = 0,61,0
temp_rgb16 = R* 2048+G* 32+B * 1
lcd.fill(0,129,128,160,temp_rgb16 )-- 显示红色
R,G,B = 31,0,0
temp_rgb16 = R* 2048+G* 32+B * 1
lcd.fill(0,129,128,160,temp_rgb16 )

至此我们可以把色彩对应到lcd屏幕上。

获取到传感器的原始数据rgb
然后除以c得到比例
再乘以31,61,31,得到16位真彩色的实际数值
使用lcd显示对应的色彩

3 硬件连接

由于改传感器也是i2c,所以连线相同。


只连接红色的这三个引脚就可以正常工作了,其他三个后续有空再看。

4 代码

-- main.lua
PROJECT = "sensor"
VERSION = "1.0.0"-- require "log"
-- require "sys"
-- require "misc"
local sys = require("sys")
require("sen_TCS34725")-- i2c ID
i2cid = 2-- i2c 速率
speed = 100000sys.taskInit(function()sys.wait(3000)TCS34725_init(i2cid,0x29,speed) -- TCS34725地址默认为0x29while true doTCS34725_get()sys.wait(1000)endend)sys.init(0, 0)
sys.run()
--sen_TCS34725.lua
-- 色彩传感器
-- 初始化spi
function TCS34725_init_spi(t_spi_id,t_addr,t_speed)if i2c.setup(t_spi_id, t_speed, -1, 1) ~= t_speed thenlog.error("i2c", "setup fail", addr_TCS34725)returnendaddr_TCS34725 = t_addr
end-- 读取数据
function TCS34725_send(...)sys.wait(10)if not addr_TCS34725 then log.info("i2c", "addr_TCS34725 err")return endlocal t = {...}if i2c.send(i2cid, addr_TCS34725, t) ~= #t thenlog.error("i2c", "send fail", #t)returnendreturn true
end-- 发送数据
function TCS34725_read(n)sys.wait(10)if not addr_TCS34725 then log.info("i2c", "addr_TCS34725 err")return "\x00" endval = i2c.recv(i2cid, addr_TCS34725, n)if val and #val>0 thenreturn valendreturn "\x00"
end-- 初始化
function TCS34725_init(t_spi_id,addr,t_speed)TCS34725_init_spi(t_spi_id,0x29,t_speed)  -- addr默认为0x29TCS34725_send(0x83, 0xff)TCS34725_send(0x81, 0x00)TCS34725_send(0x8f, 0x00)TCS34725_send(0x80, 0x03)
end-- 颜色识别传感器
function TCS34725_get()-- 发送命令TCS34725_send(0x94)-- 接收数据_, c, red, green, blue = pack.unpack(TCS34725_read(8), "<HHHH")-- 判定结果if red and green and blue thenlux = (-0.32466 * red) + (1.57837 * green) + (-0.73191 * blue)log.info("red", red)log.info("green", green)log.info("blue", blue)log.info("c, lux", c, lux)elselog.info("TCS34725", "err")endreturn luxend

5 结果



当然,由于色彩信息阈值为0-31、61,所以他们的数值变化对实际效果显示的较大,不够精细,如果是24位(8,8,8),实际效果会更好。
目前测试的话针对红绿蓝三色效果最好,其他的颜色通过lcd显示和人眼看到的偏差较大。

【LuatOS-sensor】4 色彩识别传感器TCS34725相关推荐

  1. RT-Thread学习笔记|TCS34725 RGB 颜色识别传感器详解

    rt-thread是什么? RT-Thread 是一个集实时操作系统(RTOS)内核.中间件组件和开发者社区于一体的技术平台,组件完整丰富.高度可伸缩.简易开发.超低功耗.高安全性的物联网操作系统.R ...

  2. TCS230颜色识别传感器

    TCS230颜色识别传感器 原理图: 管脚组合作用: S2,S3的组合是确定输出的是哪种颜色值 与单片机的连接电路,TCS230的OUT连接在P35是为了计算输出的脉冲数 实验程序: 使用T0作为定时 ...

  3. 51单片机驱动TCS3200颜色识别传感器

    51单片机驱动TCS3200颜色识别传感器 TCS3200 简介 输出频率与滤光器选择说明 实验说明 接线 驱动 驱动说明 主要代码 主函数 实验现象 验证: 实验注意事项: TCS3200 简介 T ...

  4. ATI F/T Gamma sensor( 力和力矩传感器 ) 开箱测评 + 使用说明

    型号和序列号等参数如下: Description: Six-Axis Force/Torque Sensor Manufacturer: ATI Industrial Automation Seria ...

  5. TCS3200颜色识别传感器

    颜色传感器使用 文章目录 颜色传感器使用 前言 一.原理 二.代码实现 现象 前言 TCS3200颜色传感器是一款全彩的颜色检测器,包括了一块TAOS TCS3200RGB感应芯片和4个白光LED灯, ...

  6. MSM8998(高通835处理器)外接指纹识别传感器linux驱动如何与设备树进行匹配

    驱动名称:fpc1020.c 平台:msm8998 描述指纹传感器设备的结构: struct fpc1020_data {struct device *dev;struct wake_lock ttw ...

  7. PreScan快速入门到精通第三十九讲基于车道线识别传感器的车道保持辅助算法Demo讲解

    车道保持辅助系统介绍: 什么是车道保持辅助系统? 疲劳和分心是无意中偏离车辆行驶车道线的最常见原因.车道保持辅助系统主动帮助驾驶者将其车辆保持在车道内,避免或者降低事故的发生. 车道保持辅助系统使用一 ...

  8. 指纹识别传感器 java_Nmap指纹识别与探测

    选项 解释 -sV 版本探测 --allports 全端口版本探测 --version-intensity 设置扫描强度 --version-light 轻量级扫描 --version-all 重量级 ...

  9. OpenCV色彩识别

    彩色模型 数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型.而HSV模型更符合人描述和 ...

最新文章

  1. L - Subway POJ - 2502
  2. linux中用截取一些信息,Linux如何使用cut命令截取文件信息
  3. 【测试】RPA产品初体验
  4. kaggle账号_Kaggle 数据挖掘比赛经验分享
  5. Qt文档阅读笔记-RadioButton的基本使用
  6. Spring Bean的生命周期(非常详细)
  7. android自定义底部中间突出导航栏,Android选中突出背景效果的底部导航栏功能
  8. [过年菜谱之]清蒸鲈鱼
  9. python是什么类型的编程语言-python是什么编程语言
  10. 【论文笔记】HyperFace: ADeep Multi-task Learning Framework for Face Detection
  11. 视频教程-oracle入门到大神(备mysql、java基础、javaee必经之路)-Oracle
  12. 使用Unity粒子特效的基本步骤
  13. 【微机原理与接口技术学习实践】汇编语言程序设计实现——.ASM文件、.OBJ文件、.EXE文件综合
  14. 北京明年拟新增3万个幼儿园学位 并再筹建6万套政策性产权房
  15. linux每个进程有4g,32位Linux单进程有4G内存限制
  16. CheXNet-master:CUDA out of memery
  17. eclipseme插件安装的一点心得
  18. CaysnPrinter安卓平台开发包接口说明文档及打印示例程序 - 20160926
  19. ftok()函数的使用
  20. Swift之代码优化

热门文章

  1. Linux自带的恢复工具,12款Linux系统恢复工具
  2. 计算机病毒由 编制出来,计算机病毒是不是人为编制的呢
  3. 工具-简单介绍ProcessOn线上画图
  4. 谷歌赞同“数据为王”并且拥有比原来100倍的数据量!
  5. KTV主机服务器系统,ktv总服务器主机
  6. Android利用自带摄像头实现透明桌面壁纸
  7. win7 win10开启IIS服务
  8. 一个热爱IT的少年正向您大步走来了
  9. python使用bs4获取网页排行榜数据(基础版)
  10. 华为数通HCIA笔记——链路聚合、VLAN、DHCP基础