2017-06-02 40 views
1

所以,基本上我想要做的是:ColorSensor LEJOS NXT

我讓我的NXT驅動跑酷,雖然他這樣做,他必須顯示在一張紙上的顏色(他開車在紙上)。

顏色是紅色,綠色和藍色。

不工作的一件事是:閱讀或「看見」顏色並在屏幕上顯示它們。

我現在得到的代碼是:

ColorSensor cs = new ColorSensor(SensorPort.S1); 
    Color color = cs.getColor(); 

    int groen = color.getGreen(); 
    int rood = color.getRed(); 
    int blauw = color.getBlue(); 

    String text = ""; 

    if (color.getColor() == groen){ 
     text = "groen"; 
    } 
    else if (color.getColor() == rood){ 
     text = "rood"; 
    } 
    else if (color.getColor() == blauw){ 
     text = "blauw"; 
    } 


    LCD.drawString("kleur is: " + text, 0, 0); 
    Thread.sleep(6000); 
+0

您能查看你getGreen,GetBlue進行,getRed和的getColor獲得不同的值,並將其添加到您的文章? –

+1

一個'Color'由三個分量組成,紅,綠和藍(RGB)。像getGreen()這樣的getter只能獲得整個顏色的綠色部分,不能將其與其他顏色進行比較,並期望獲得有意義的結果。 – f1sh

回答

0

Color對象的getter方法不返回任何綠色,藍色或紅色的恆定值,他們會告訴你怎麼綠色,紅色或藍色的是檢測到的顏色,從0到256.

例如,一個黃色的ish顏色應該返回一個低的紅色分量,以及更高的藍色和綠色值,它們之間非常相似。

你可以嘗試這樣的:

ColorSensor cs = new ColorSensor(SensorPort.S1); 
Color color = cs.getColor(); 
String text; 

if (color.getGreen()>color.getRed() && color.getGreen()>color.getBlue()) { 
    text="green"; 
} else if (color.getBlue()>color.getRed() && color.getBlue()>color.getGreen()) { 
    text="blue"; 
} else { 
    text="red"; 
}