找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2820|回复: 0
打印 上一主题 下一主题
收起左侧

STM32CubeMX配置的颜色识别模块源程序

[复制链接]
跳转到指定楼层
楼主
用oled屏幕显示,具体接线方案程序中都有,经过调试确实可用的

  H指hue(色相)、S指saturation(饱和度)、L指lightness(亮度)、V指value(色调)、B指brightness(明度)。


  色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。
  饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。
  明度(V),亮度(B),取0-100%。         

   0度: 红色,RGB:(255, 0, 0), 255:R, 0:B,G+  
   60度: 黄色,RGB:(255,255, 0),255:G, 0:B, R-  
   120度: 绿色,RGB:( 0,255, 0),255:G, 0:R,B+  
   180度: 青色,RGB:( 0,255,255),255:B, 0:R,G-  
   240度: 蓝色,RGB:( 0, 0,255),255:B, 0:G,R+  
   300度: 紫色,RGB:(255, 0,255),255:R, 0:G,B-  
   360度: 红色,RGB:(255, 0, 0),255:R, 0:B,G+        


  RGB转化到HSV的算法                                                
    max=max(R,G,B)
    min=min(R,G,B)
     if R = max, H = (G-B)/(max-min)
    if G = max, H = 2 + (B-R)/(max-min)
    if B = max, H = 4 + (R-G)/(max-min)
    H = H * 60
    if H < 0, H = H + 360
    V=max(R,G,B)
    S=(max-min)/max
/接线方法
/VCC 接3.3
/GND 接GND
/LED 接3.3
#define S0 PCout(6)
#define S1 PCout(7)
#define S2 PCout(8)
#define S3 PCout(9)
#define OUT PAin(8)
******************************************************************************/
//oled的接线方法
//////////////////////////////////////////////////////////////////////////////////         
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//中景园电子
//
//  文 件 名   : main.c
//  版 本 号   : v2.0
//  作    者   : HuangKai
//  生成日期   : 2014-0101
//  最近修改   :
//  功能描述   : OLED 4接口演示例程(51系列)
//              说明:
//              ----------------------------------------------------------------
//              GND    电源地
//              VCC  接5V或3.3v电源
//              D0   接PA5(SCL)
//              D1   接PA7(SDA)
//              RES  接PB0
//              DC   接PB1
//              CS   接PA4               
//              ----------------------------------------------------------------
// 修改历史   :
// 日    期   :
// 作    者   : HuangKai
// 修改内容   : 创建文件
//版权所有,盗版必究。
//Copyright(C) 中景园电子2014/3/16
/* USER CODE END 0 */

        tcs3200_init(0,1);
        whitebalance();//开机的时候最好模块测量的颜色是不反光的白色,推荐使用白纸
        
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
                        t=' ';
  while (1)
  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
//=================================================================================
                R = tcs3200_RED();
                G = tcs3200_GREEN();        //取RGB值
                B = tcs3200_BLUE();         
//================================================================================
                OLED_Clear();
//显示汉字
/*void OLED_ShowCHinese(u8 x,u8 y,u8 no)
  x,y分别代表要显示的汉字在屏上的坐标位置,最后一位是汉字在汉字数组的位数        
*/               
                /*占空比显示是调试时为了证明频率采集成功才显示的,具体使用时可以去掉*/
                /*以下三个分别是对R,G,B的数值显示*/
                sprintf(str,":%d Duty: %d",R,duty);
                OLED_ShowString(0,0,"R");/*显示ASCII字符R*/          OLED_ShowString(18,0,str);
               
                /*频率:10000Hz*/
                sprintf(str,":%d",G);
                OLED_ShowString(0,2,"G");/*显示ASCII字符G*/                OLED_ShowString(18,2,str);
               
                sprintf(str,":%d",B);
                OLED_ShowString(0,4,"B");/*显示ASCII字符B*/          OLED_ShowString(18,4,str);
               
                /*频率显示*/
                sprintf(str,": %.dHz",freq);
                OLED_ShowCHinese(0,6,13); OLED_ShowCHinese(18,6,14);        OLED_ShowString(36,6,str);
               
                delay_ms(2000);

  }


全部资料51hei下载地址:
颜色识别模块.7z (684.63 KB, 下载次数: 43)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表