Farben Lego Mindstorms ev3 einscannen?
Hallo zusammen, ich sitze gerade an einem ,,Sudokuroboter", der mit der Lego Mindstorms Software (ev3) funktionieren soll. Ich habe mich aufgrund der Sensoren für ein Farbsudoku entschieden, da Farbkästchen einfacher zu erkenne sind als Zahlen. Beim Programmieren bin ich jedoch auf das Problem gestoßen, dass der Sensorblock nur 7 Farben erkennt, ein Sudoku hat allerdings neun verschiedene Farben. Ich habe mir überlegt es mit der Funktion ,,Stärke des reflektierten Lichts" zu lösen, allerdings sind A die Werte merkwürdig, und B weiß ich auch nicht wie ich die Werte zwischenspeichern soll. (bin ich Anfänger :D) Ich bedanke mich jetzt schon für eure Hilfe LG
1 Antwort
Zwischenspeichern über eine Variable (siehe rote Karteikarte).
Die Farben geben über die Reflektion tatsächlich kaum brauchbare Unterscheidungen. Obwohl das die einzige Möglichkeit beim NXT ist. Über die Reflektion kannst Du aber unterschiedliche Grautöne verwenden. Drucke 7 verschiedene Grautöne aus. Z.B. 0%, 17%, 33%, 50%, 67%, 83% und 100%. Kalibriere den Sensor für Min mit dem Wert, den Du bei 0%, also Schwarz, erhältst und Max mit dem Wert für 100%, also Weiss.
Nun bekommst Du vom Sensor für die Grautöne in etwa die gleichen Prozentwerte für die jeweiligen Grautöne zurück, die Du ausgedruckt hast.
Die Justage für Min und Max muss bei Änderungen im Umgebungslicht evtl. angepasst werden. Wenn Du Justagefelder, also ein 0%- und ein 100%-Feld neben das Sudoku setzt, kannst Du vor dem Einlesen aller Felder jedes mal den Sensor kalibrieren und erhältst so ein fehlerfreies einlesen der Daten.
Habe doch übersehen das der Sensor beim NXT gar nicht kalibriert werden kann. Ersatzweise errechnen sich die Werte für Grau1-7 wie folgt:
Beispiel für Schwarz = 15 und Weiss = 75
Bandbreite = Schwarz - Weiss = 75 - 15 = 60
Grau1 = Min + Bandbreite / 6 * (1 - 1) = 15
Grau2 = Min + Bandbreite / 6 * (2 - 1) = 25
Grau3 = Min + Bandbreite / 6 * (3 - 1) = 35
.......................
Grau7 = Min + Bandbreite / 6 * (7 -1) = 75