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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
TSC3200快速检测RGB 直接上单片机代码
/ N  e8 M) K' a3 Q9 r# _0 c# ^  K4 `3 z$ d. E
* G7 M8 s8 e: p
! z. O; G8 I, |& D  }$ `
//测试颜色识别模块TCS3200
: i: B$ f! E% W  ]const int s0 = 8;* W5 `$ B4 N1 e" _4 a/ D9 @
const int s1 = 9;0 s3 j1 G1 |3 G' L+ X
const int s2 = 12;4 p4 M) }& q$ [7 J/ h( B; G
const int s3 = 11;  ?1 w' {( f' U" [  T
const int out = 10;
/ k3 h! }3 L; \6 ?9 R   ' |9 y" @! `' k- j3 u
//RGB颜色色值4 M  z/ C: j/ L/ p. [5 w* h: j
int red = 0;
1 u! V/ I. {/ o! O& v. f# zint green = 0;: p. J! g% z! H+ p2 \& q( C' a
int blue = 0;, x( \- Q+ i+ M8 y- {6 m. b
$ t% M5 N1 C+ J8 k, r0 k- n1 I
//信号灯
/ j: }" ]3 _# J, W: l% [int inforLED = 13;! e2 `, L0 d( y  [, D) ~8 F- g

7 d0 [/ [% R$ o+ T. g! UString gifKey ="01020121010102";
- f9 L" g" w5 _5 {. r! @9 pbyte keyCursor = 0;  //核对密码的游标
+ `3 L* u, I; T: t. w' P; m+ O; Bbyte currentColor = -1; //扫描得到的颜色
# m" q) m, F7 D# {    1 V5 R8 ~: {2 B9 f
void setup()   5 x. o3 t5 a2 d; Q
{  6 V& L) B# D; Z; U" M* f8 _0 q
  pinMode(s0, OUTPUT);  * x/ ^5 c# r- P
  pinMode(s1, OUTPUT);  
5 T  c$ L7 O4 s. t2 s  pinMode(s2, OUTPUT);  ( _# N0 r: N3 K; Z4 M
  pinMode(s3, OUTPUT); & ]4 {0 P& Z1 G" U6 ?
  pinMode(inforLED,OUTPUT);
$ ?; r& h+ f  _% d  t) O  pinMode(out, INPUT);   
, |3 ~" f) l5 _: w: {  Serial.begin(9600);  - e1 j- J' p) d' x9 U3 z; P
  digitalWrite(s0, HIGH);  
; o1 |3 E8 s+ }  digitalWrite(s1, HIGH);  ( Q2 O: ^$ K: i
}  
% K( \$ p: I5 z' X! y7 U   
6 N# }$ N5 ]) H& ivoid loop()
& M; {# t+ V& q- C$ Z: W{    @! _7 ~8 b) f
  color();( i& a# I! h: a
  //输出RGB各色值: ?) x3 x! P& u- @
  Serial.print("Red:");  8 d. l3 E6 ?8 h2 I  ?
  Serial.print(red, DEC);  2 N* d$ c; j" Y) u) q
  Serial.print("Green:");  " B! O" H) [% N' a
  Serial.print(green, DEC);  8 y# q- W2 d* j# ^/ @, e
  Serial.print("Blue:");  4 U/ n* s( J* @3 t$ W6 f
  Serial.print(blue, DEC);  # X: U% ^+ [: U* V9 l5 a; m1 D% J
  Serial.println();  ! Z/ n  o8 j% h0 l

3 q' c$ K  N, U2 V# Q% E; m3 l3 j  //检验结果是否红色 2 C* m1 e* t6 g: d0 t
  if (red < blue && red < green && red > 30 && red <1000)  % C" [. {: E$ i# }
  {  , ?: \' l$ b) i" A/ y
//   Serial.println("Red 0");
( V: i( K, ~1 B2 H& R   currentColor = 0;& ]# l) c# g6 V- I, N! H) w0 l
  } else if (blue < red && blue < green && blue > 30 && blue <1000) { //检验结果是否绿色  # ]  \0 X4 X: E2 ~: ?# I
//   Serial.println("Blue 2");
1 L. G+ C5 q0 V   currentColor = 2;
4 b. r5 p- l# i8 Y5 w; i3 X4 p1 e  m  } else if (green < red && green < blue && green > 30 && green <1000) { //检验结果是否蓝色  
5 D. g5 ?3 e, Y& |8 ?//   Serial.println("Green 1");6 m  a* @% f, I  J
   currentColor = 1;   
! A& F. t8 u/ N. e, D5 _  }
7 ^; N* G% i0 d1 d! d  Serial.print("currentColor:");( E" V) j% O" t
  Serial.print(currentColor);- i" k; l9 x, F
  Serial.print(" ");
" [1 I$ m: V9 e0 U0 t, P  1 F0 ~; G# V; c' i$ u
   if(currentColor == (byte(gifKey[keyCursor])-48) ) {- J5 _2 a9 r/ p. P
     keyCursor ++;
/ ]# d: r5 [7 ]0 ?# g   } else {+ U7 J+ T' v3 z* ?* u
    if(keyCursor == 0) {
' y3 E! X( H: i9 d, B    } else {
" ~6 X6 z- y4 b1 q+ w3 f: \0 B        if(currentColor == (byte(gifKey[keyCursor-1])-48) ) {
0 h2 R/ D, r! ~: b8 h        }  else {9 B  q; ^+ U! L7 t( E1 V9 X  `/ {
          keyCursor = 0;
. Q$ R2 K6 `4 l; Y. ?5 Z8 U        }1 c, z- E, b& n8 u1 G  p, ?# d
    } + w. q5 n0 E+ N0 r" Z+ G5 I
   }) W. l) r4 g/ W8 m8 S4 X0 R& g
//  if(currentColor == gifKey[keyCursor+1]) {& A/ t$ }% @4 Y5 ?0 x
//    keyCursor ++;  ; s1 Y+ g' B( Y$ n
//  } else {
+ L. J% q' Y6 T0 j+ I//    if(keyCursor == -1) {
- {/ v5 z& S5 u//    } else {; d4 h+ U' @' Q6 w9 s
//      if(currentColor == gifKey[keyCursor]) {7 X+ w! |" c- N. ?# t
//      } else {) b# _8 l9 B# G: u  x: L0 D: B
//        keyCursor = -1;
& K9 U2 e  |1 y- C//      }  
' K+ X2 t: c( x# i! ]- C$ L4 s//    }
3 v+ U. k4 D# g2 a0 X//  }
4 }# q1 `1 e- p9 |* g0 u; w6 PSerial.print("keyCursor:");+ h( E* _5 g0 R; f) u
Serial.println(keyCursor);& z( a5 I  D8 k3 v! f/ O% l: Y( ]
  if(keyCursor == 14) {9 O0 \4 P  {" j. C4 i& c0 `2 E
    digitalWrite(inforLED,HIGH);% l% R; w  V0 W) h0 j8 M: I
    Serial.println("open lock successfully!");
, I6 i+ J8 Y$ t4 x- y' S    delay(3000);" K. @$ F; b/ i- ^: m* i
    digitalWrite(inforLED,LOW);
  V6 f( |. J2 i) k8 a  }
. N/ T9 ]/ ^* ]2 I5 O' a+ o+ M9 p3 M+ a0 [5 k9 ]
  
7 p' t' {& S0 k( P  f8 A  Serial.println();  
4 p* ^  X/ w9 n  //延时两秒后关闭所有LED 1 C( M8 A2 I. K
}  $ S& D' D' X/ q: X
    . k* n7 a% u5 }. l! k
void color()  6 O/ [* b4 }! t3 {& v1 Y
{  % `' E- H1 v/ W  c% o+ T
  //设置好S2、S3端口,准备读取颜色值
) c; ]! U& n% M  digitalWrite(s2, LOW);  / q- H4 S) E' v! ?
  digitalWrite(s3, LOW);  & z' j/ r9 l7 J) p1 x, j
  //红色光RED
7 b6 Z) x% L3 N% D  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  / i: m9 j' V$ }- G+ o2 N1 }
  digitalWrite(s3, HIGH);  
8 q7 H( q% ]8 P6 L- E  //蓝色光BLUE  
  C' I6 O* ~2 ^( h0 c. _  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  
5 Z: B2 z; I" \  digitalWrite(s2, HIGH);  
' f* t5 h9 z  E* w" \% @$ @8 w  //绿色光GREEN  . U2 Q* @/ _/ f
  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);  7 a# A" H0 _7 B& h
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 15:59 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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