我目前正在写一个关于检测不同颜色的球并使用乐高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 厘米。
- 房间越暗,传感器可以检测到的就越多。
所以这是我的代码来控制颜色是否为白色:
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程序员,我只是需要它用于我的学校项目,因此很抱歉我无法更详细地解释它,但我希望这个答案可以帮助一些人!;)