极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10332|回复: 0

求助怎么将取色模块和变色LED相连,使LED正常发光?

[复制链接]
发表于 2015-5-25 01:07:24 | 显示全部楼层 |阅读模式
今天尝试将tcs3200取色模块和变色LED相连,通过tsc3200模块取色,LED发取色模块取到的颜色,但是失败了。自己怀疑是代码上出了问题,有些弄不懂的地方,我把代码放在下面,求大神们帮我看看哪里有问题~
  1. #include <TimerOne.h>
  2. #define S0     6   // Please notice the Pin's define
  3. #define S1     5
  4. #define S2     4
  5. #define S3     3
  6. #define OUT    2

  7. int   g_count = 0;    // count the frequecy
  8. int   g_array[3];     // store the RGB value
  9. int   g_flag = 0;     // filter of RGB queue
  10. float g_SF[3];        // save the RGB Scale factor
  11. int   f[3];
  12. int   y[3];

  13. void TSC_Init()
  14. {
  15.   pinMode(S0, OUTPUT);
  16.   pinMode(S1, OUTPUT);
  17.   pinMode(S2, OUTPUT);
  18.   pinMode(S3, OUTPUT);
  19.   pinMode(OUT, INPUT);
  20.   digitalWrite(S0, LOW);// OUTPUT FREQUENCY SCALING 2%
  21.   digitalWrite(S1, HIGH);
  22.   pinMode(9, OUTPUT);
  23.   pinMode(10, OUTPUT);
  24.   pinMode(11, OUTPUT);
  25.   pinMode(12, OUTPUT);
  26.   digitalWrite(12, LOW);
  27.   //12 pin as gnd
  28.   // 打开13脚led作为电源指示:
  29. }

  30. // Select the filter color
  31. void TSC_FilterColor(int Level01, int Level02)
  32. {
  33.   if(Level01 != 0)
  34.     Level01 = HIGH;
  35.    
  36.   if(Level02 != 0)
  37.     Level02 = HIGH;
  38.    
  39.   digitalWrite(S2, Level01);
  40.   digitalWrite(S3, Level02);
  41. }
  42. void TSC_Count()
  43. {
  44.   g_count ++ ;
  45. }
  46. void TSC_Callback()
  47. {
  48.   switch(g_flag)
  49.   {
  50.     case 0:
  51.       Serial.println("->WB Start");
  52.       TSC_WB(LOW, LOW);              //Filter without Red         
  53.       break;
  54.     case 1:
  55.       Serial.print("->Frequency R=");
  56.       Serial.println(g_count);
  57.       g_array[0] = g_count;
  58.       TSC_WB(HIGH, HIGH);            //Filter without Green        
  59.       break;   
  60.     case 2:
  61.       Serial.print("->Frequency G=");        
  62.       Serial.println(g_count);
  63.       g_array[1] = g_count;
  64.       TSC_WB(LOW, HIGH);             //Filter without Blue
  65.       break;
  66.     case 3:
  67.       Serial.print("->Frequency B=");
  68.       Serial.println(g_count);
  69.       Serial.println("->WB End");
  70.       g_array[2] = g_count;
  71.       TSC_WB(HIGH, LOW);             //Clear(no filter)   
  72.       break;
  73.     default:     
  74.       g_count = 0;        
  75.       break;
  76.   }
  77. }

  78. void TSC_WB(int Level0, int Level1)  //White Balance
  79. {
  80.    g_count = 0;
  81.    g_flag ++;
  82.    TSC_FilterColor(Level0, Level1);
  83.    Timer1.setPeriod(1000000);
  84. }
  85. void setup()
  86. {
  87.    TSC_Init();
  88.   pinMode(13, OUTPUT);
  89.   digitalWrite(13, HIGH);
  90.    Serial.begin(9600);
  91.    Timer1.initialize();             // defaulte is 1s
  92.    Timer1.attachInterrupt(TSC_Callback);  
  93.    attachInterrupt(0, TSC_Count, RISING);   
  94.    delay(4000);
  95.    for(int i=0; i<3; i++)
  96.    Serial.println(g_array[i]);
  97.    g_SF[0] = 255.0/ g_array[0];     //R Scale factor
  98.    g_SF[1] = 255.0/ g_array[1] ;    //G Scale factor
  99.    g_SF[2] = 255.0/ g_array[2] ;    //B Scale factor
  100.    Serial.println(g_SF[0]);
  101.    Serial.println(g_SF[1]);
  102.    Serial.println(g_SF[2]);
  103. }
  104. void loop()
  105. {
  106.    g_flag = 0;
  107.    delay(4000);
  108.    for(int i=0; i<3; i++)
  109.    {
  110.     f[i]=g_array[i] * g_SF[i];
  111.    Serial.println(f[i]);
  112.    }
  113.   analogWrite(9,g_array[0] * g_SF[0] );
  114.   analogWrite(10,g_array[1] * g_SF[1] );
  115.   analogWrite(11,g_array[2] * g_SF[2] );

  116. }
复制代码
回复

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 07:24 , Processed in 0.056072 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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