久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32F103驅動TCS3200顏色傳感器例程
[打印本頁]
作者:
JCW546152630
時間:
2018-8-26 08:54
標題:
STM32F103驅動TCS3200顏色傳感器例程
顏色傳感器驅動代碼 STM32
單片機源程序如下:
/************************************************************************************* * TCS3200 STM32版
* RGB顏色傳感器
****************************************************************************************/
//原子開發板
#include "stm32f10x.h"
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"
#include "rtc.h"
#include "wkup.h"
#include "adc.h"
#include "dma.h"
#include "24cxx.h"
#include "flash.h"
#include "touch.h"
#include "24l01.h"
#include "mmc_sd.h"
#include "remote.h"
#include "ds18b20.h"
#include "mouse.h"
#include "text.h"
#include "fat.h"
#include "fontupd.h"
#include "tcs3200.h"
/*****************************************************************************
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
******************************************************************************/
//============================
void chromatogram(void); //函數聲明
//============================
int main(void)
{
float Max=0,Min=0;
float Rhsv=0,Ghsv=0,Bhsv=0;
float H=0,S=0,V=0;
u16 i;
u8 R=0x00,G=0x00,B=0x00;
u16 RGB=0x0000;
Stm32_Clock_Init(9);//系統時鐘設置
delay_init(72); //延時初始化
uart_init(72,9600); //串口1初始化
LCD_Init(); //初始化液晶
LED_Init(); //LED初始化
LCD_Clear(WHITE);
POINT_COLOR=RED;
LCD_ShowString(10,180,"TCS3200 init");
for(i=0;i<50;i++) delay_ms(50);
tcs3200_init(1,1);//初始化(速率調整)
whitebalance(); //白平衡
LCD_ShowString(0,0,"Rgena:");
LCD_ShowString(0,18,"Ggena:");
LCD_ShowString(0,36,"Bgena:");
LCD_ShowNum(50,0,Rgena,5,12); //顯示一個數字
LCD_ShowNum(50,18,Ggena,5,12); //顯示一個數字
LCD_ShowNum(50,36,Bgena,5,12); //顯示一個數字
POINT_COLOR=BLACK;
LCD_ShowString(30,50,"R:");
LCD_ShowString(30,70,"G:");
LCD_ShowString(30,90,"B:");
LCD_ShowString(30,110,"H:");
LCD_ShowString(30,130,"V:");
LCD_ShowString(30,150,"S:");
chromatogram();//色譜調出
while(1)
{
//=================================================================================
R = tcs3200_RED();
G = tcs3200_GREEN(); //取RGB值
B = tcs3200_BLUE();
//================================================================================
Rhsv = (float) R/25/10;
Ghsv = (float) G/25/10; //RGB轉換成0,1.
Bhsv = (float) B/25/10;
//=================================================================================
//RGB轉HSV算法
Max = (Rhsv>Ghsv)?Rhsv:Ghsv; //RGB轉HSV算法
Max = (Max>Bhsv)?Max:Bhsv; //取RGB最大值 //RGB轉HSV算法
Min = (Rhsv<Ghsv)?Rhsv:Ghsv; //RGB轉HSV算法
Min = (Min<Bhsv)?Min:Bhsv; //去RGB最小值 //RGB轉HSV算法
//RGB轉HSV算法
if(Rhsv==Max) H = (Ghsv-Bhsv)/(Max-Min); //RGB轉HSV算法
if(Ghsv==Max) H = 2+(Bhsv-Rhsv)/(Max-Min); //RGB轉HSV算法
if(Bhsv==Max) H = 4+(Rhsv-Ghsv)/(Max-Min); //RGB轉HSV算法
H =(int) (H*60); //RGB轉HSV算法
if(H<0) H = H+360; //RGB轉HSV算法
//RGB轉HSV算法
V = (Rhsv>Ghsv)?Rhsv:Ghsv; //RGB轉HSV算法
V = (V>Bhsv)?V:Bhsv; //取V的數值 //RGB轉HSV算法
//RGB轉HSV算法
S = (Max-Min)/Max; //取S的數值 //RGB轉HSV算法
//RGB轉HSV算法
V = (int) (V*100); //RGB轉HSV算法
S = (int) (S*100); //RGB轉HSV算法
//======================================================================================================
LCD_ShowNum(50,50,R,5,12); //顯示一個數字
LCD_ShowNum(50,70,G,5,12); //顯示一個數字
LCD_ShowNum(50,90,B,5,12); //顯示一個數字
LCD_ShowNum(50,110,H,5,12); //顯示一個數字
LCD_ShowNum(50,130,V,5,12); //顯示一個數字
LCD_ShowNum(50,150,S,5,12); //顯示一個數字
// R = 0xff;
// G = 0xff;
// B = 0xff;
//=====================================================
RGB = 0x0000;
RGB |=(unsigned long) R*1000/8225<<11;
RGB |=(unsigned long) G*1000/4047<<5; //轉換成屏幕的4W色顯示
RGB |=(unsigned long) B*1000/8225;
//=====================================================
LCD_Fill(10,170,80,260,RGB); //顯示色彩
delay_ms(50); //刷新次數
}
}
/**********************************************
*函數名:void chromatogram(void)
*功能:在屏幕上面顯示一張色譜
*參數:木有
*返回值:木有
***********************************************/
void chromatogram(void)
{
u16 i=0;
u16 color;
u16 Ri=0,Gi=0,Bi=0;
//======================================================================
Ri = 240;Gi = 0x00;Bi = 0x00;
for(i=0;i<60;i++)
{
color = (unsigned long) Gi*1000/4047<<5;
color |= (unsigned long) Ri*1000/8225<<11; //G加上去
color |= (unsigned long) Bi*1000/8225;
LCD_Fill(100,i,230,i,color);
Gi = Gi+4;
}
Ri = 240;Gi = 240;Bi = 0x00;
for(i=60;i<120;i++)
{
color = (unsigned long) Ri*1000/8225<<11;
color |= (unsigned long) Gi*1000/4047<<5; //R降下來
color |= (unsigned long) Bi*1000/8225;
LCD_Fill(100,i,230,i,color);
Ri = Ri-4;
}
Ri = 0x00;Gi = 240;Bi = 0x00;
for(i=120;i<180;i++)
{
color = (unsigned long) Bi*1000/8225;
color |= (unsigned long) Ri*1000/8225<<11; //B加上去
color |= (unsigned long) Gi*1000/4047<<5;
LCD_Fill(100,i,230,i,color);
Bi = Bi+4;
}
Ri = 0x00;Gi = 240;Bi = 240;
for(i=180;i<240;i++)
{
color = (unsigned long) Gi*1000/4047<<5;
color |= (unsigned long) Bi*1000/8225; //G降下來
color |= (unsigned long) Ri*1000/8225<<11;
LCD_Fill(100,i,230,i,color);
Gi = Gi-4;
}
Ri = 0x00;Gi = 0x00;Bi = 240;
for(i=240;i<300;i++)
{
color = (unsigned long) Ri*1000/8225<<11;
color |= (unsigned long) Gi*1000/4047<<5; //R加上去
color |= (unsigned long) Bi*1000/8225;
LCD_Fill(100,i,230,i,color);
Ri = Ri+4;
}
Ri = 240;Gi = 0x00;Bi = 240;
for(i=300;i<360;i++)
{
color = (unsigned long) Bi*1000/8225;
color |= (unsigned long) Ri*1000/8225<<11;
color |= (unsigned long) Gi*1000/4047<<5; //B降下來
LCD_Fill(100,i,230,i,color);
Bi = Bi-4;
}
//===========================================================================
}
復制代碼
所有資料51hei提供下載:
STM32 TCS3200.rar
(165.76 KB, 下載次數: 302)
2018-8-26 15:57 上傳
點擊文件名下載附件
STM32 103驅動顏色傳感器TCS3200
下載積分: 黑幣 -5
作者:
sblpp53
時間:
2019-3-8 12:12
謝謝分享!
作者:
123123123aaa
時間:
2019-4-27 15:52
謝謝分想啊啊
作者:
xxy2016
時間:
2019-10-12 09:43
一堆報錯,浪費資源
作者:
hgxsdhji
時間:
2019-11-11 22:50
你好可以提供一個借口定義嘛
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
人人性人人性碰国产
|
日韩在线欧美
|
亚洲小视频在线观看
|
欧美极品在线
|
香蕉一区
|
久久久久久久久久久久久久国产
|
国产91一区
|
国产一区91精品张津瑜
|
欧洲一区二区三区
|
成人av资源在线
|
中日韩毛片
|
中文字幕一区二区不卡
|
三级黄色片在线观看
|
欧美1区
|
看a网站
|
成人午夜免费视频
|
偷拍亚洲色图
|
日韩在线国产精品
|
成人在线精品视频
|
欧美在线看片
|
精品一区二区三区在线播放
|
欧美日韩电影一区
|
亚洲欧美日本在线
|
国产亚洲精品精品国产亚洲综合
|
a网站在线观看
|
国产精品久久久久久久久久久免费看
|
成人免费视频观看视频
|
久久久精品网
|
最近日韩中文字幕
|
亚洲美女在线视频
|
日韩视频一区二区
|
欧美日韩亚洲一区
|
欧美日韩一区二区三区在线观看
|
一区二区三区在线 | 欧
|
精品久久久久久
|
日日夜夜免费精品视频
|
成人免费视频观看视频
|
欧美一级三级
|
成人高清在线
|
精品综合久久
|
欧美成人精品一区二区男人看
|