发新帖我要提问
12
返回列表
打印
[STM32F4]

STM32F429 使用 TCS34725 颜色传感器的驱动程序

[复制链接]
楼主: 范德萨发额
手机看帖
扫描二维码
随时随地手机跟帖
21
范德萨发额|  楼主 | 2021-11-19 23:26 | 只看该作者 回帖奖励 |倒序浏览
我这里让它直接干活去了,注意从 Idle 模式退出后,需要 2.4 ms 的时间来进行 RGBC 初始化,所以给个 3 ms 的延时就可以了。干完一次活后,如果不让它回去睡觉(Disable),就会自动继续干活,开始一个新的循环。(经@weixin_41605180提醒,原来这里写错了,应该是在设置AEN之后等待2.4 ms 的RGBC Init)

使用特权

评论回复
22
范德萨发额|  楼主 | 2021-11-19 23:40 | 只看该作者
/***************************************************************************//**
* @brief TCS34725使能
*
* @return None
*******************************************************************************/
void TCS34725_Enable(void)
{
        unsigned char cmd = TCS34725_ENABLE_PON;
       
        TCS34725_Write(TCS34725_ENABLE, &cmd, 1);
        //delay_ms(3);//延时应该放在设置AEN之后
        cmd = TCS34725_ENABLE_PON | TCS34725_ENABLE_AEN;
        TCS34725_Write(TCS34725_ENABLE, &cmd, 1);
        delay_ms(3);
}
/***************************************************************************//**
* @brief TCS34725失能
*
* @return None
*******************************************************************************/
void TCS34725_Disable(void)
{
        unsigned char cmd = 0x00;
       
        TCS34725_Read(TCS34725_ENABLE, &cmd, 1);
        cmd = cmd & ~(TCS34725_ENABLE_PON | TCS34725_ENABLE_AEN);
        TCS34725_Write(TCS34725_ENABLE, &cmd, 1);
}

使用特权

评论回复
23
范德萨发额|  楼主 | 2021-11-19 23:42 | 只看该作者
然后我们就可以拿到转换数据了,这里我根据自己的需要对 Arduino 的代码做了些修改

/***************************************************************************//**
* @brief TCS34725**单个通道数据
*
* @return data - 该通道的转换值
*******************************************************************************/
uint16_t TCS34725_GetChannelData(unsigned char reg)
{
        unsigned char tmp[2] = {0,0};
        uint16_t data = 0;
       
        TCS34725_Read(reg, tmp, 2);
        data = ((uint16_t)tmp[1] << 8) | tmp[0];
       
        return data;
}
/***************************************************************************//**
* @brief TCS34725**各个通道数据
*
* @return 1 - 转换完成,数据可用
*              0 - 转换未完成,数据不可用
*******************************************************************************/
uint8_t TCS34725_GetRawData(uint16_t *r, uint16_t *g, uint16_t *b, uint16_t *c)
{
        unsigned char status[1] = {0};

        status[0] = TCS34725_STATUS_AVALID;
       
        TCS34725_Read(TCS34725_STATUS, status, 1);
       
        if(status[0] & TCS34725_STATUS_AVALID)
        {
                *c = TCS34725_GetChannelData(TCS34725_CDATAL);       
                *r = TCS34725_GetChannelData(TCS34725_RDATAL);       
                *g = TCS34725_GetChannelData(TCS34725_GDATAL);       
                *b = TCS34725_GetChannelData(TCS34725_BDATAL);
                return 1;
        }
        return 0;
}
好了,到这里 TCS34725 的驱动程序就完成啦

使用特权

评论回复
24
tfqi| | 2021-12-11 09:11 | 只看该作者
这个是识别颜色的吗

使用特权

评论回复
25
wiba| | 2021-12-11 09:12 | 只看该作者
这种传感器的原理是什么呢

使用特权

评论回复
26
zljiu| | 2021-12-11 09:13 | 只看该作者
都可以识别多少种颜色呢

使用特权

评论回复
27
coshi| | 2021-12-11 09:14 | 只看该作者
通过光谱的识别是吗

使用特权

评论回复
28
aoyi| | 2021-12-11 09:15 | 只看该作者
本质其实还是对能量的捕获吧

使用特权

评论回复
29
modesty3jonah| | 2022-11-19 12:14 | 只看该作者
光线输出色彩是固定值数值吗?              

使用特权

评论回复
30
vivilyly| | 2022-11-20 10:50 | 只看该作者
tcs34725如何校对颜色?   

使用特权

评论回复
31
lihuami| | 2022-11-20 12:13 | 只看该作者
使用tcs34725颜色传感器可以在黑暗的情况下吗

使用特权

评论回复
32
mickit| | 2022-11-20 15:47 | 只看该作者
如何根据数值判断是否什么颜色范围呢?

使用特权

评论回复
33
cemaj| | 2022-11-24 15:50 | 只看该作者
这个tcs34725这个模块的灯怎么关?  

使用特权

评论回复
34
iyoum| | 2022-11-24 16:09 | 只看该作者
支持通过I2C接口输出RGB颜色数据和光照强度,具有高灵敏度、宽动态范围和测量精确等优点。

使用特权

评论回复
35
phoenixwhite| | 2022-12-12 13:40 | 只看该作者
每次使用TCS34725都需要校准的。

使用特权

评论回复
36
lzbf| | 2022-12-12 13:50 | 只看该作者
可以使用硬件iic驱动的吗?              

使用特权

评论回复
37
mikewalpole| | 2022-12-12 15:08 | 只看该作者
这个颜色的判断不准确的。              

使用特权

评论回复
38
wilhelmina2| | 2022-12-18 20:00 | 只看该作者
怎么才能判断颜色的范围呢?              

使用特权

评论回复
39
zerorobert| | 2022-12-19 20:36 | 只看该作者
STM32F429是否可执行图像的识别来判断颜色?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则