如何使用LeJos NXJ校准乐高NXT颜色传感器



我目前正在写一个关于检测不同颜色的球并使用乐高NXT及其颜色传感器对它们进行分类的程序。一开始它工作得很好,但现在,无论我做什么,颜色传感器总是返回颜色 ID "7"(白色)。

在文档页面上,我发现了一些关于校准的内容(校准高()和校准低())。有谁知道如何使用这种校准,或者我的颜色传感器坏了?

我用这段代码试过了:

package com.mydomain;
import lejos.nxt.*;
public class HelloWorld {
  public static void main(String[] args) throws Exception {
        ColorSensor color = new ColorSensor(SensorPort.S2);
    while (true) {
      LCD.drawInt(color.getColorID(), 1, 1, 1);
    }
  }
}

首先,您必须了解以下条件:

    颜色
  1. 传感器应比颜色高出约 1 厘米。
  2. 房间越暗,传感器可以检测到的就越多。

所以这是我的代码来控制颜色是否为白色:

public boolean isWhite() {
    //Gives "True" if the color is white
    ColorSensor cs = new ColorSensor(SensorPort.S3);
    cs.setFloodlight(false);
    if (cs.getColor().getColor() == Color.WHITE) {            
      return true;
    }     
    return false;           
    }

解释:
if - 子句中的第一个cs.getColor()给出颜色的 rgb 值。
如果在第一个cs.getColor()之后调用该方法cs.getColor()(因此它将是:cs.getColor().getColor ),则它将返回其颜色 ID。
在本例中,Color.WHITE为 6。
您可以在此处查看所有数字。


注意:
我很抱歉我的英语不好,如果这个解释也不详细,也很抱歉!我不是真正的Java程序员,我只是需要它用于我的学校项目,因此很抱歉我无法更详细地解释它,但我希望这个答案可以帮助一些人!;)

最新更新