2017-06-02 3 views
1

Also, im Grunde, was ich versuche zu tun:color leJOS NXT

i mein NXT lassen einen Parkour fahren, und während er das tut, hat er die Farben von einem Stück Papier anzuzeigen (er fährt über das Papier) auf dem LCD.

Die Farben sind rot, grün und blau.

Die eine Sache, die nicht funktioniert, ist: Lesen oder "sehen" der Farbe und zeigt sie auf dem Bildschirm.

der Code ich habe jetzt:

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

Können Sie die verschiedenen Werte überprüfen, die Sie mit getGreen, GetBlue, getRed und getColor erhalten, und fügen Sie sie in Ihrem Beitrag? –

+1

Eine '' Color'' besteht aus den drei Komponenten Rot, Grün und Blau (RGB). Ein Getter wie '' getGreen() '' bekommt nur die grüne Komponente der ganzen Farbe, du kannst das nicht mit einer anderen Farbe vergleichen und ein bedeutungsvolles Ergebnis erwarten. – f1sh

Antwort

0

Die Getter des Color-Objekt keine grün, blau oder rot konstante Werte zurückgeben, sie Ihnen sagen, wie grün, rot oder blau ist die Farbe erkannt von 0 bis 256.

Zum Beispiel sollte eine gelb-ish-Farbe eine niedrige rote Komponente und höhere blaue und grüne Werte zurückgeben, die zwischen ihnen sehr ähnlich sind.

Sie könnten versuchen, so etwas wie:

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"; 
}