找回密码
 注册
关于网站域名变更的通知
查看: 770|回复: 1
打印 上一主题 下一主题

TSC3200快速检测RGB 直接上单片机代码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-3 13:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
TSC3200快速检测RGB 直接上单片机代码# A  b# Z5 O0 j/ N, J4 K
" M5 H. y2 m. c) b3 p. ^

. @. {8 P0 Y. ^0 i! A' _1 X$ P, ]% B: @% W0 F
//测试颜色识别模块TCS3200
; j( n" u5 ?2 Tconst int s0 = 8;
! J1 M- E4 Z. G1 N, X3 yconst int s1 = 9;0 r) @9 r8 t( [- V- W3 ~- J; K7 {
const int s2 = 12;
* d" R5 ~; f9 `! d+ h+ qconst int s3 = 11;
" E: N+ r$ t  O' R: l$ L4 d8 }( Qconst int out = 10;0 X+ i- m8 ]3 a4 O5 Q  b4 Y
   
/ W! t, E- H: d+ t//RGB颜色色值+ r! K* J8 ^- S6 `* ]
int red = 0;, q3 q$ G& _: H! j- G  m
int green = 0;
  Q/ \+ G7 W& y7 w0 W: T" G+ bint blue = 0;
" o6 V; x1 H, H3 W( M
6 Z3 F; ^  S4 d! K//信号灯
6 j8 C- v" V) V8 R6 gint inforLED = 13;
8 x. N# c& R2 R  t7 g- y6 v, b$ W. B4 p1 |7 K
String gifKey ="01020121010102";
  j$ ~) n4 j1 U, R0 |3 {$ nbyte keyCursor = 0;  //核对密码的游标
& u( m' E. G7 f# s. Ybyte currentColor = -1; //扫描得到的颜色0 h$ y7 j* ?: b0 F9 t% C
    - |6 y/ v# Z! }
void setup()   9 r% N- i! z8 R. i2 U, s
{  
0 `% B5 {" I( _, E! Q0 V  pinMode(s0, OUTPUT);  
. N6 }, q/ A$ J/ p% S  pinMode(s1, OUTPUT);  
! V) n- f0 c: K* d1 v  pinMode(s2, OUTPUT);  
# W3 y+ c( K  h0 Z5 ~, a% J& [  pinMode(s3, OUTPUT); & H" \9 m3 V2 c- Z8 c$ h
  pinMode(inforLED,OUTPUT); ( g* s4 h3 u; M( r& {( q* ?
  pinMode(out, INPUT);   
- h6 Y+ V; z; m) t$ M& |9 t* v  Serial.begin(9600);  
" t3 @5 Z# z, m5 j( n. K  x  digitalWrite(s0, HIGH);  
4 S4 C0 m; \6 Q5 O6 @" L1 |' c  digitalWrite(s1, HIGH);  ( \6 k0 E1 f2 l9 Y: I% k
}  4 B* a! ^3 [4 j3 e' Z! \4 O
   
7 {% H+ x2 h& ^8 e, r; gvoid loop() . j6 N( g0 s1 c0 y4 @' `  t+ F$ A
{  ' ?/ I/ ]# e1 u+ S( j
  color();' O' n0 W% _& m
  //输出RGB各色值
' T" G* y4 t+ O, J/ @- M' q) B8 d  Serial.print("Red:");  
  G* {9 @* F, U5 |* T  Serial.print(red, DEC);  % {. r& H' f+ W& f; {1 |/ C7 {! k0 ~
  Serial.print("Green:");  
! o+ Y, V: r/ Z# X+ _7 G  Serial.print(green, DEC);  $ X# [7 J, I' b1 @3 b
  Serial.print("Blue:");  5 F# I; Z4 }$ Y, k, T
  Serial.print(blue, DEC);  . n: P/ ^' N" Y( K7 Q* x' \
  Serial.println();  
4 j# c  f: j. e! g. I2 Z. g# i7 T0 {; U
  //检验结果是否红色
1 h7 @8 F8 Y; C5 g4 d: S: ^4 V) L  if (red < blue && red < green && red > 30 && red <1000)  
( S5 X6 G8 E& h4 i  {  " F& }. |2 h8 K2 O
//   Serial.println("Red 0");
* k4 {, A4 M6 y' A! o) i   currentColor = 0;
3 b, r- T* C7 ?$ N2 X# w  } else if (blue < red && blue < green && blue > 30 && blue <1000) { //检验结果是否绿色  
/ v! U: U* F: l& P  N  e//   Serial.println("Blue 2"); 8 u! S& h4 ^7 j5 _4 q& n$ q
   currentColor = 2; ' u! j# a* r  J! W0 S
  } else if (green < red && green < blue && green > 30 && green <1000) { //检验结果是否蓝色  
& b$ a5 @# G/ b5 D//   Serial.println("Green 1");4 L. v7 x6 R* e( m. Q
   currentColor = 1;   5 n. [# N6 }, a+ y9 m
  }
) P8 A% l* n* F" e- Z+ j  Serial.print("currentColor:");
/ B8 C8 j! `* l, n9 L5 \7 E  Serial.print(currentColor);
  a: I. s& T; Y. Q9 P- ]1 r6 y9 g  Serial.print(" ");3 a+ q, u& j: b5 V
  
; a3 m6 r+ X: {' ?/ [   if(currentColor == (byte(gifKey[keyCursor])-48) ) {
) Q+ `: ~2 R/ b1 {+ ]6 F0 f/ E# j     keyCursor ++;
8 s: ^/ q. \- y! Z: Q6 e   } else {1 D. _% V1 L' Q& B% @
    if(keyCursor == 0) {. Z" [$ ^# A0 o* I0 W! R
    } else {
" P( X! M- B  K6 z5 T        if(currentColor == (byte(gifKey[keyCursor-1])-48) ) {1 x6 p" S6 A' p8 ]
        }  else {
2 b. p, X  ~3 c, s$ @) u          keyCursor = 0;4 b4 _2 q3 ?/ ~, W8 t
        }
( M% _* ?8 S% x8 n3 [    } 0 H  y  J) X1 Z2 B6 M
   }
( A( C/ l8 g: ]9 @) Z! h. j//  if(currentColor == gifKey[keyCursor+1]) {
. S/ v0 J% x* d- Z- a//    keyCursor ++;  3 M" P9 \/ ?; |2 e$ Q! p0 K* D' u7 ]; p
//  } else {
- y+ |9 X( N% e* _; k% \//    if(keyCursor == -1) {
( L8 T1 t; X( N  {4 }# L//    } else {
2 @; H4 ?+ z- `  H( O' G3 O. A9 L//      if(currentColor == gifKey[keyCursor]) {+ S5 y: y. ?% O! b9 `
//      } else {
' B/ o$ e  ~3 u5 ~: |4 C- S//        keyCursor = -1;: c7 y8 B) {) f0 C0 _: S
//      }  
2 i. `; t# }* W& \, n" t% }//    }1 c+ _, N/ U& f: V: C+ h( i
//  }* s, v9 U' _9 |3 v+ `& W# t
Serial.print("keyCursor:");
3 c2 ]5 A  A9 V& |, o  Q4 lSerial.println(keyCursor);
) E) r+ Z# b8 n5 \4 y5 B0 J/ v; B. x  if(keyCursor == 14) {' z) C. v+ ^/ ^
    digitalWrite(inforLED,HIGH);& H! R" W7 _2 F' `: o+ y4 S: |" E9 l  d4 b
    Serial.println("open lock successfully!");
: p: T( S$ F" Q/ u    delay(3000);
# Q+ ?4 q& C$ @" y2 _    digitalWrite(inforLED,LOW);
3 {1 a, O; |4 e/ T, k& P  z, Q  }8 ^) J0 H) V" V2 |. _9 }

8 L$ k* G3 N: E7 D2 w' Z; E& s  6 ?1 M) I' O+ }4 P% U- J
  Serial.println();  * w6 w. g! Q2 Q8 I& ^' X9 g7 o
  //延时两秒后关闭所有LED 7 Z  [! ~5 W" d. ~8 E
}  
5 k, _- ?" [) `% w; X    ' O5 d" r- C5 l
void color()  
! y+ ~) u0 s5 M7 `% b{  
/ Y- D1 @$ {  C! H4 h  //设置好S2、S3端口,准备读取颜色值; c% D7 ^' S, J8 b: g
  digitalWrite(s2, LOW);  
8 k! f( g: l  I0 ?: |3 {" {  digitalWrite(s3, LOW);  
3 i0 C6 @% z7 d: m  //红色光RED
% B$ ~% n; E* ^( {0 n" N; @) d& y1 D  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  : d) [  h4 u* d0 N4 h+ `/ i
  digitalWrite(s3, HIGH);  
! U- G2 z. C. @2 z. o  //蓝色光BLUE  ! O# m6 [& _9 B" X
  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  : y! x- N9 U& n: z. n! p5 h
  digitalWrite(s2, HIGH);  ( M6 Q1 b  n) R8 ^5 P3 W1 D9 }
  //绿色光GREEN  . q8 G- L( m2 u; \% h5 m
  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  . a" f. T( h. w6 |6 D2 K& P
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 19:42 , Processed in 0.125000 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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