|
发表于 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恐怕会有问题。
|
|