chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于CW32系列MCU的GY-33顏色識(shí)別模塊設(shè)計(jì)

jf_qE49KoVBr8 ? 來(lái)源:武漢芯源半導(dǎo)體 ? 2023-09-27 13:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、簡(jiǎn)介

1.GY-33是一種基于TCS34725顏色傳感器的顏色識(shí)別模塊。TCS34725是一種高精度光學(xué)傳感器,能夠檢測(cè)紅、綠、藍(lán)三個(gè)基本色的光譜信息,從而實(shí)現(xiàn)對(duì)物體顏色的準(zhǔn)確識(shí)別,該模塊的具體應(yīng)用場(chǎng)景包括以下幾個(gè)方面:

(1)電子設(shè)備顏色校準(zhǔn):在電子設(shè)備制造過(guò)程中,顏色一致性非常重要。使用GY-33模塊可以幫助制造商檢測(cè)和校準(zhǔn)電子設(shè)備的顏色,確保不同設(shè)備之間的顏色表現(xiàn)一致。

(2)色彩分析和精確匹配:GY-33模塊在顏色分析和匹配方面有廣泛應(yīng)用。例如,在印刷行業(yè)中,可以使用該模塊來(lái)檢測(cè)和匹配顏色樣本,從而確保印刷品的準(zhǔn)確顏色表現(xiàn)。

(3)機(jī)器人視覺(jué)系統(tǒng):GY-33模塊可以用于機(jī)器人視覺(jué)系統(tǒng),幫助機(jī)器人在環(huán)境中對(duì)不同顏色的物體進(jìn)行識(shí)別和分類。這在物流、倉(cāng)儲(chǔ)和自動(dòng)導(dǎo)航系統(tǒng)中非常有用,機(jī)器人可以根據(jù)物體的顏色屬性執(zhí)行相應(yīng)的任務(wù)。

二、所需物料

本實(shí)驗(yàn)使用到了CW32F030C8小藍(lán)板、GY-33顏色識(shí)別模塊、0.96寸OLED顯示屏,RGB全彩LED模塊、輕觸開(kāi)關(guān)模塊及Keil5開(kāi)發(fā)環(huán)境。

0f9e45be-5cf7-11ee-939d-92fbcf53809c.png

CW32F030C8小藍(lán)板

0fbb42ae-5cf7-11ee-939d-92fbcf53809c.png
GY-33顏色識(shí)別模塊
0fc88cca-5cf7-11ee-939d-92fbcf53809c.png
RGB全彩LED模塊

0fe5ae5e-5cf7-11ee-939d-92fbcf53809c.png

實(shí)物展示

【GY-33與單片機(jī)連線】:VCC<-->+3.3V

GND<-->GND

DR<-->PA5

CT<-->PA4

【LED與單片機(jī)連線】:V<-->+3.3V

R<-->PA0

G<-->PA1

B<-->PA2

【輕觸開(kāi)關(guān)與單片機(jī)連線】:VCC<-->+3.3V

GND<-->GND

OUT<-->PB9

此模塊有兩種方式讀取數(shù)據(jù),即串口UART或者 MCU_IIC,本次實(shí)驗(yàn)采用MCU_IIC的方式。

0ff81134-5cf7-11ee-939d-92fbcf53809c.png

100e91e8-5cf7-11ee-939d-92fbcf53809c.png

101da1b0-5cf7-11ee-939d-92fbcf53809c.png

有簡(jiǎn)單的7種顏色識(shí)別,單片機(jī)不參與數(shù)據(jù)處理工作,不需要計(jì)算RGB值,直接讀取吧 數(shù)據(jù)即可。需要特別注意的是:

103e020c-5cf7-11ee-939d-92fbcf53809c.png

1052d2ea-5cf7-11ee-939d-92fbcf53809c.png

三、核心代碼

main.c:
#include "main.h"
#include "RGB.h"
#include "GTIM.h"
#include "Delay.h"
#include "GY_33.h"
#include "OLED.h"
#include "Key.h"
#include "BTIM.h"


#define LENGTH 3   //讀取數(shù)據(jù)的長(zhǎng)度
uint8_t press_flag=0; //按鍵按下標(biāo)識(shí)
uint8_t data[LENGTH]={0}; //存放讀取到的RGB數(shù)據(jù)
uint8_t color[1]={0};  //存放模塊識(shí)別到的顏色數(shù)據(jù)
char *str[]={"blue","dblue","green","black","white","pink","yellow","red"};//模塊可以識(shí)別到的顏色


int main()
{  
  uint8_t i;  
  OLED_Init();      //OLED顯示
  RGB_GPIO_Init();  //RGB燈GPIO初始化
  GTIM2_Init();     //GTIM2初始化配置為PWM輸出模式
  I2C_GPIO_Init();  //GY-33模塊GPIO初始化
  Key_GPIO_Init();  //按鍵GPIO初始化
  BTIM_Init();      //BTIM定時(shí)器初始化,定時(shí)控制按鍵掃描周期
//  WriteData(GY33_ADDR,Config,0x51);  //啟動(dòng)白平衡,等級(jí)亮度為5


  while(1)
  {
    if(press_flag==1)  //若按鍵標(biāo)識(shí)已打開(kāi),代表有按鍵按下,執(zhí)行按鍵功能
    {
      OLED_Clear(); //清屏
      if(ReadData(GY33_ADDR,R,data,LENGTH)) //讀取模塊檢測(cè)顏色并進(jìn)行處理后返回的RGB值
      {
        OLED_ShowString(1,1,"RGB:");
        OLED_ShowNum(1,5,data[0],3);  //R值
        OLED_ShowNum(2,5,data[1],3);  //G值
        OLED_ShowNum(3,5,data[2],3);  //B值
      }
      RGB_Running(data);  //RGB全彩LED燈根據(jù)讀取到的RGB進(jìn)行顯示
      Delay_ms(100);      //數(shù)據(jù)讀取間隔應(yīng)不小于100ms
      if(ReadData(GY33_ADDR,Color,color,1))//讀取模塊檢測(cè)顏色并進(jìn)行處理后的顏色信息返回值
      {
        for(i=0;i<8;i++) //8-bits數(shù)據(jù),逐位判斷
        {
          if((color[0]>>i)==1) //判斷哪一位為1
          {
            OLED_ShowString(4,1,"Color:");
            OLED_ShowString(4,7,str[7-i]); //顯示對(duì)應(yīng)顏色
            break;
          }
        }
      }
      press_flag=0; //執(zhí)行完關(guān)閉按鍵標(biāo)識(shí)
    }  
  }
}


void BTIM1_IRQHandler(void)  //BTIM1中斷服務(wù)函數(shù)
{
  static unsigned int cnt = 0;
  
  if(BTIM_GetITStatus(CW_BTIM1,BTIM_IT_OV))  
  {
    if(++cnt>=20)  //20ms定時(shí),執(zhí)行一次按鍵掃描
    {
      cnt = 0;
      if(Key_Scan()==1)  //返回值不為0時(shí)
        press_flag=1;    //打開(kāi)按鍵標(biāo)識(shí)
    }
    BTIM_ClearITPendingBit(CW_BTIM1,BTIM_IT_OV); //清除標(biāo)志位
  }
}


GY-33.c:
#include "main.h"
#include "Delay.h"
#include "GY_33.h"


void I2C_GPIO_Init(void)   //GY-33顏色識(shí)別模塊GPIO初始化
{
  __RCC_GPIOA_CLK_ENABLE();
  
  GPIO_InitTypeDef GPIO_InitStruct; 
  GPIO_InitStruct.IT=GPIO_IT_NONE;
  GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_OD;      //開(kāi)漏輸出
  GPIO_InitStruct.Pins=GPIO_PIN_4|GPIO_PIN_5;
  GPIO_InitStruct.Speed=GPIO_SPEED_HIGH;
  GPIO_Init(CW_GPIOA, &GPIO_InitStruct);
  
  SCL(1);
  SDA(1);
}


void I2C_Delay() //I2C延時(shí)函數(shù)
{
  Delay_us(time);
}


uint8_t I2C_Start(void)  //發(fā)送起始信號(hào)
{
  SDA(1);
  SCL(1);
  I2C_Delay();
  if(ReadSDA==0) return 0;
  SDA(0);
  I2C_Delay();
  if(ReadSDA==1) return 0;
  SCL(0);
  I2C_Delay();
  
  return 1;
}


void I2C_Stop(void)  //發(fā)送停止信號(hào)
{
  SDA(0);
  SCL(0);
  I2C_Delay();
  SCL(1);
  I2C_Delay();
  SDA(1);
}


void I2C_SendACK(uint8_t ackbit)  //發(fā)送應(yīng)答
{
  SDA(ackbit);
  SCL(1);
  I2C_Delay();
  SCL(0);
  I2C_Delay();
}


void I2C_SendByte(uint8_t Byte)  //發(fā)送1字節(jié)(8-bit)的數(shù)據(jù)
{
  uint8_t i;
  SCL(0);
  for (i = 0; i < 8; i++)
  {
    if(Byte&0x80) SDA(1);
    else SDA(0);
    SCL(1);
    I2C_Delay();
    SCL(0);
    Byte<<=1;
    I2C_Delay();
  }
}


uint8_t I2C_ReceiveByte(void)  //接收1字節(jié)(8-bit)的數(shù)據(jù)
{
  uint8_t data,i;
  SDA(1);
  Delay_us(1);
  for(i=0;i<8;i++)
  {
    SCL(1);
    data<<=1;
    if(ReadSDA==1) data|=0x01;
    I2C_Delay();
    SCL(0);
    I2C_Delay();
  }
  
  return data;
}


uint8_t I2C_WaitAck(void) //等待應(yīng)答
{
  uint16_t i;
  SDA(1);
  SCL(1);
  while(ReadSDA==1)
  {
    if(++i==500)
      break;
  }
  if(ReadSDA==1)
  {
    SCL(0);
    return 0;
  }
  I2C_Delay();
  SCL(0);
  I2C_Delay();
  
  return 1; 
}


uint8_t WriteData(uint8_t Slave_Addr,uint8_t REG_Addr,uint8_t data)  //寫(xiě)操作
{
  if(I2C_Start()==0) RETURN
  
  I2C_SendByte(Slave_Addr);  
  if(I2C_WaitAck()==0) RETURN
    
  I2C_SendByte(REG_Addr);    
  if(I2C_WaitAck()==0) RETURN                
  
  I2C_SendByte(data);
  if(I2C_WaitAck()==0) RETURN              
  
  I2C_Stop();                    //發(fā)送停止信號(hào)
  
  return 1;
}


uint8_t ReadData(uint8_t Slave_Addr,uint8_t REG_Addr,uint8_t *data,uint8_t length) //讀操作
{  
  if(I2C_Start()==0) RETURN        
    
  I2C_SendByte(Slave_Addr);    
  if(I2C_WaitAck()==0) RETURN        
    
  I2C_SendByte(REG_Addr);            
  if(I2C_WaitAck()==0) RETURN
  
  if(I2C_Start()==0) RETURN
    
  I2C_SendByte(Slave_Addr+1); 
  if(I2C_WaitAck()==0) RETURN                
    
  while(--length)
{
    *data++=I2C_ReceiveByte();
    I2C_SendACK(0);
    Delay_ms(110);
  }
  *data=I2C_ReceiveByte();
  I2C_SendACK(1);
  I2C_Stop();                    //發(fā)送停止信號(hào)
  
  return 1;              
}

四、實(shí)物展示+效果演示

10672204-5cf7-11ee-939d-92fbcf53809c.png

107cf944-5cf7-11ee-939d-92fbcf53809c.png

1097ceae-5cf7-11ee-939d-92fbcf53809c.png

10b52832-5cf7-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    18786

    瀏覽量

    392986
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2829

    瀏覽量

    53130
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    213

    文章

    30899

    瀏覽量

    221170
  • keil5
    +關(guān)注

    關(guān)注

    7

    文章

    48

    瀏覽量

    21375
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    299

    瀏覽量

    1743

原文標(biāo)題:【CW32】基于CW32的GY-33顏色識(shí)別模塊的應(yīng)用

文章出處:【微信號(hào):武漢芯源半導(dǎo)體,微信公眾號(hào):武漢芯源半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    CW32 MCU有哪些系列?

    目前CW32 MCU有通用高性能MCU、安全低功耗MCU、無(wú)線射頻MCU等3個(gè)系列。其中射頻
    發(fā)表于 11-12 07:34

    CW32 MCU用什么IDE開(kāi)發(fā)?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開(kāi)發(fā)CW32 MCU應(yīng)用,其中新版本IAR EWARM直接支持CW32 M
    發(fā)表于 11-12 07:52

    請(qǐng)問(wèn)顏色傳感器GY-33 TCS34725和TCS3200有什么區(qū)別?

    請(qǐng)教顏色傳感器GY-33 TCS34725和TCS3200的具體區(qū)別?哪種用于檢測(cè)透明瓶中液體顏色更好?有沒(méi)有做過(guò)相關(guān)實(shí)驗(yàn)的朋友,希望大家給出點(diǎn)建議,非常感謝。
    發(fā)表于 03-26 07:17

    請(qǐng)問(wèn)是否有人使用過(guò)CJMCU-115或者GY-33顏色傳感器?

    請(qǐng)問(wèn)CJMCU-115或者GY-33傳感器的效果如何,是否沒(méi)有色差?采集到的16位AD值怎么轉(zhuǎn)換成RGB值?全部積分奉上,謝謝大家
    發(fā)表于 04-30 08:45

    如何使用串口通信連接GY-33顏色傳感器完成對(duì)顏色識(shí)別?

    如何使用串口通信連接GY-33顏色傳感器完成對(duì)顏色識(shí)別
    發(fā)表于 01-25 06:08

    CW32 MCU開(kāi)發(fā)資料匯總(手冊(cè)、工具、固件庫(kù))

    32L083_StdPeriph_Lib.zip4、CW32 MCU開(kāi)發(fā)工具:*附件:CW-DAPLINK調(diào)試器驅(qū)動(dòng).zip*附件:CW-DAPLINK使用手冊(cè).pdf*附件:
    發(fā)表于 07-27 14:47

    如何基于CW32系列MCU實(shí)現(xiàn)VBAT功能

    檔介紹了如何基于 CW32 系列 MCU,通過(guò)增加簡(jiǎn)單的外部電路配合軟件實(shí)現(xiàn) VBAT 功能,在系統(tǒng)電源掉電后仍能保持 RTC 時(shí)鐘正常計(jì)時(shí),以及如何降低系統(tǒng)功耗,從而延長(zhǎng)后備電池的使用壽命。
    發(fā)表于 09-15 07:24

    CJMCU-115或者GY-33傳感器的效果如何,是否沒(méi)有色差?

    CJMCU-115或者GY-33傳感器的效果如何,是否沒(méi)有色差?
    發(fā)表于 10-17 06:01

    stm32單片機(jī)使用串口通信連接GY-33顏色傳感器完成對(duì)顏色識(shí)別并且打印出其顏色和對(duì)應(yīng)的RGB值

    GY_33配套軟件,串口助手,USB轉(zhuǎn)TTL1.GY-33介紹及其接線GY-33是一款低成本顏色識(shí)別傳感器
    發(fā)表于 11-30 09:51 ?10次下載
    stm32單片機(jī)使用串口通信連接<b class='flag-5'>GY-33</b><b class='flag-5'>顏色</b>傳感器完成對(duì)<b class='flag-5'>顏色</b>的<b class='flag-5'>識(shí)別</b>并且打印出其<b class='flag-5'>顏色</b>和對(duì)應(yīng)的RGB值

    顏色識(shí)別傳感器模塊概述、特性及使用方法

    GY-33 是一款顏色識(shí)別傳感器模塊。工作電壓 3-5V,功耗小,體積小,安裝方便,其工作原理是照明 LED 發(fā)光,照射到被測(cè)物體后,返回光經(jīng)過(guò)濾鏡檢測(cè) RGB 的比例值,根據(jù) RGB
    發(fā)表于 05-24 09:36 ?3337次閱讀

    利用單片機(jī)的顏色識(shí)別系統(tǒng)設(shè)計(jì)

    整個(gè)系統(tǒng)可以通過(guò)單片機(jī)控制顏色傳感器完成對(duì)5種顏色識(shí)別,并且在LCD1602顯示屏上進(jìn)行顯示,當(dāng)按下按鍵的時(shí)候,將當(dāng)下的顏色播報(bào)出來(lái)。系統(tǒng)內(nèi)的顏色
    的頭像 發(fā)表于 09-02 09:25 ?4347次閱讀

    快樂(lè)解說(shuō)MCUCW32的工作電壓特性

    快樂(lè)解說(shuō)MCUCW32的工作電壓特性
    的頭像 發(fā)表于 09-18 10:56 ?1401次閱讀

    SM07-GY-33顏色檢測(cè)模塊說(shuō)明書(shū)

    適用于SM07-GY-33顏色檢測(cè)模塊
    發(fā)表于 08-08 16:55 ?0次下載

    基于CW32的RC522刷卡模塊的應(yīng)用

    基于CW32的RC522刷卡模塊的應(yīng)用
    的頭像 發(fā)表于 11-02 14:53 ?2460次閱讀
    基于<b class='flag-5'>CW32</b>的RC522刷卡<b class='flag-5'>模塊</b>的應(yīng)用

    基于CW32的物聯(lián)網(wǎng)應(yīng)用

    CW32】基于CW32的物聯(lián)網(wǎng)應(yīng)用
    的頭像 發(fā)表于 11-02 15:55 ?1857次閱讀
    基于<b class='flag-5'>CW32</b>的物聯(lián)網(wǎng)應(yīng)用