| 
 | 
 
 
发表于 2011-2-6 01:11:45
|
显示全部楼层
 
 
 
回复 oalaio 的帖子 
- // 取样时间
 
 - #define dt 500
 
  
- // 定义颜色传感器
 
 - #define COLORSENSOR SENSOR_2
 
  
- task main()
 
 - {
 
 - int error = 0;
 
 - int i;
 
 - float setpoint = 0;
 
 - float actual_position = 0;
 
  
- // 开传感器
 
 - // SetSensorColorFull(IN_2);
 
 - SetSensorType(IN_2, SENSOR_TYPE_COLORFULL);
 
 - SetSensorMode(IN_2, SENSOR_MODE_RAW);
 
  
- // 传感器在黑线上方为启示状态
 
 - TextOut(1,LCD_LINE1,"Setpoint");
 
 - setpoint = COLORSENSOR;
 
 - NumOut(50,LCD_LINE1,setpoint);
 
  
- // 循环
 
 - while (true)
 
 -   {
 
 -    // 读取传感器实施数值
 
 -    actual_position = COLORSENSOR;
 
 -    TextOut(1,LCD_LINE2,"Actual");
 
 -    NumOut(50,LCD_LINE2,actual_position);
 
 -    i++;
 
  
-    // 等待取样时间
 
 -    Wait(dt);
 
 -    }
 
 - }
 
  复制代码 我按你提供的代码,改了一个简单的只显示颜色传感器值的程序。实际上是,不论按你的程序,设成SetSensorColorFull(IN_2); 
或是按我现在的程序,设成SetSensorMode(IN_2, SENSOR_MODE_RAW); 
最后读回的值,都并非原始的光强值,而是颜色代码,1-6分别代表不同的颜色。 
如果是在黑/白边界寻边的话,这个值就是在1, 6两个值间变换。用PID恐怕会有问题。 
 |   
 
 
 
 |