TigerJython4Kids | HomeTurtlegrafikRobotikDatenbanken |
DU LERNST HIER... |
der Roboter mit seinem Colorsensor die Farben der Unterlage erkennen kann |
WIE FUNKTIONIERT EIN COLORSENSOR |
|
Die RGB-Werte , die der Sensor misst, sind abhängig von der Umgebungsbeleuchtung und von der Entfernung zum Objekt. Die besten Ergebnisse erreicht man in einer Entfernung von 2-5 Millimeter. |
MUSTERBEISPIELE |
from grobot import * RobotContext.useBackground("sprites/colors.png") RobotContext.setStartPosition(250, 480) setSpeed(10) forward() repeat: c = cs3.getColor() print(c) delay(100)
Beispiel 2: Farben und Sound
In deinem Beispiel bewegt sich der Roboter hin und her auf einem Farbstreifen und spielt für jede Farbe einen anderen Ton ab. Da der Sensor alle 100 ms eine Messung vornimmt, muss du in deinem Programm dafür sorgen, dass der Ton nur dann abgespielt wird, wenn er eine neue Farbe sieht. Dazu verwendest du die Variable oldColor, in der du jeweils den aktuellen Farbwert speicherst. Ein Ton wird nur dann abgespielt, wenn eine neue Farbe erkannt wird (color != oldColor). Im realen Modus musst du die Geschwindigkeit reduzieren.
from grobot import * RobotContext.useBackground("sprites/colors.png") RobotContext.setStartPosition(250, 480) #setSpeed(5) oldColor = "UNDEFINED" while not button_escape.was_pressed(): color = cs3.getColor() if (color != oldColor): oldColor = color if color == "BLACK": playTone(264, 500) forward() elif color == "BLUE": playTone(297, 500) elif color == "GREEN": playTone(330, 500) elif color == "YELLOW": playTone(352, 500) elif color == "RED": playTone(396, 500) backward() print(color) delay(100) exit()
from grobot import * while not button_escape.was_pressed(): c = cs3.getColorRGB() print(c) delay(300) exit() Bei einer ähnlichen Vorlage wie auf dem oberen Bild, erhältst du im Realmodus etwa folgende Werte:
from grobot import * setSpeed(5) while not button_escape.was_pressed(): c = cs3.getColorRGB() if c[0] < 10 and c[1] < 10 and c[2] < 10: forward() if c[0] < 10 and c[1] > 15: leftArc(0.06) if c[0] > 50 and c[1] > 35: rightArc(0.06) delay(10) exit()
Beispiel 4: Color-Sensor kalibrieren (nur Realmodus) Es kommt oft vor, dass der ColorSensor die Farben nicht richtig erkennt, Mit dem Befehl calibrateColor(colors, True) kannst du die Grundfarben "BLACK", "BLUE", GREEN", "YELLOW" , "RED" und "WHITE" kalibieren. Ist der zweite Parameter True, wird neu kalibriert, bei False werden die Ergebnisse der letzten kalibrierung verwendet. Um zum Beispiel die Farben rot und blau richtig zu erkennen. führst du folgendes Programm aus: from grobot import * cs3.calibrateColor(["RED", "BLUE"], True) while not button_escape.was_pressed(): c = cs3.getColor() print(c) delay(500) Die neuen RGB-Werte für die Farben rot und blau werden auf der SD-Karte gespeichert. Falls danach die gleichen Farben verwendet werden, kann man mit dem Parameter False bewirken, dass die auf der SD-Karte gespeicherten Farben für die aufgeführten Farben verwendet werden. Für die übrigen Farben werden die Standardwerte verwendet. Im nächsten Beispiel wird die breits kalibrierte Farbe "RED" verwendet, für "BLACK" die Standardwerte. Der Roboter bewegt sich hier wieder auf dem Farbstreifen. Er stertet auf dem schwarzen Feld und bewegt sich vorwärts. Falls er rot "sieht", fährt er rückwärts. from grobot import * cs3.calibrateColor(["RED"], False) setSpeed(20) while not button_escape.was_pressed(): c = cs3.getColor() print(c) if c == "BLACK": forward() elif c == "RED": backward() delay(500) |
MERKE DIR... |
Mit cs3.getColor() erkennt der am Port 3 angeschlossene Colorsensor die Grundfarben RED, BLUE, YELLOW, GREEN, BLACK und WHITE. Mit cs3.getColorRBG() gibt der Colorsensor die drei Farbkomponenten als Liste zurück (nur Realmodus) Der Colorsensor muss sich im Abstand 2 - 5 mm von der Farbfläche befinden. Mit dem Befehl cs3.calibrateColor(["RED", "BLUE"], True) werden die RGB-Werte der aufgeführten Farben neu bestimmt und auf der SD-Karte gespeichert. Beim Parameter False werden für aufgeführten Farben die Werte der letzten Kalibrierung verwendet. |
ZUM SELBST LÖSEN |
|
Der Begriff RGB bezeichnet einen Farbraum, der die Farben durch das additive Mischen der drei Grundfarben Rot, Grün und Blau darstellt. Die Farbanteile der einzelnen Farben werden mit Zahlen zwischen 0 un 255 dargestellt.
Beispiele:
rot: (255, 0, 0)
grün: (0, 255, 0)
blau: (0, 0, 255)
gelb: (255, 255, 0)