-
-
Erfahrener Benutzer
Fleißiges Mitglied
Dritte Farbe für Bodensensor
Hallo
Das ist mein Programm für meinen Crash Bobby wo er einer Linie folgt.
#include "qfixBobbyBoard.h"
const int SENSOR = 3;
BobbyBoard bobby;
int main()
{
// wait for the first button, then get value for white //
bobby.ledOn(0);
bobby.waitForButton(0);
int value1=bobby.analog(SENSOR);
bobby.ledOff(0);
// wait for the second button, then get value for black //
bobby.ledOn(1);
bobby.waitForButton(1);
int value2=bobby.analog(SENSOR);
bobby.ledOff(1);
int threashold = int((value1+value2)*0.55);
// wait for the third button to start //
bobby.ledOn(2);
bobby.waitForButton(2);
bobby.ledOff(2);
// turn on first LED and then run ... //
bobby.ledOn(0);
while (true) {
// on line //
if (bobby.analog(SENSOR) > threashold) {
bobby.motor(0, -180);
bobby.motor(1, 10);
}
// not on line //
else {
bobby.motor(0, -10);
bobby.motor(1, 180);
}
if (bobby.button(0)) {
bobby.motor(0, 0);
bobby.motor(1, 0);
bobby.ledOff(0);
bobby.ledOn(1);
bobby.waitForButton(1);
bobby.ledOff(1);
bobby.ledOn(0);
}
}
}
Hättet ihr eine Idee wie ich ihm beibrigen könnte dass er auch auf Grau reagiert? Also zum Beispiel " halte bei Grau immer an ".
-
Hallo palermo,
dein Sensor kann keine Farben, sondern nur Grauwerte unterscheiden, diesen Wert liest du in deinem Programm mit bobby.analog(SENSOR) aus.
Um Schwarz und Weiß zu unterscheiden hattest du einen Mittelwert ermittelt.
Dieser Wert , den du in der Varialblen -threashold- gespeichert hast entspricht einem Mittelgrau. Wenn sich dein Sensor nun genau an der Grenze zwischen Schwarz und weiß befindet wird wird dieser Wert gemessen, ebenso, wie auf einer grauen Fläche. Der einzige Unterschied besteht darin, dass eine Messung kurze Zeit später einen anderen Wert ergibt, wenn sich der sensor auf der Line befindet.
-
Erfahrener Benutzer
Fleißiges Mitglied
Danke
also um Grau zu erkennen muss ich
if (bobby.analog(SENSOR) = threashold) {
eingeben?
Muss ich morgen mal ausprobieren - habe gerade Besuch...........
Danke dass du mir geantwortet hast \/
-
Erfahrener Benutzer
Fleißiges Mitglied
Hab Qfix ne Mail geschickt und da hab ich diese Frage gleich angehängt.
Funktioniert wunderbar.
Wens interressiert hier die Antwort:
> Kann man bei dem Linien-Sensor noch eine dritte Variable einstellen
> (z.B. Grau)? Wie programmiert man dann die Variable int threashold?
> Ist *0.55 der Schwellenwert zwischen value1 und value2 (value3)?
Ja, eigentlich berechnet man den Mittelwert von zwei Werten ja durch
0.5*(Wert1 + Wert2), aber wir hatten mit 0.55 etwas bessere Erfahrungen
gemacht.
Wenn man noch Grau will, muss man zwei Threashholds (bedeutet Schwelle)
nehmen, also z.B. bis 0.3*(Wert1+Wert2) ist Weiss, über
0.7*(Wert1+Wert2) ist Schwarz und dazwischen ist Grau.
-
Erfahrener Benutzer
Fleißiges Mitglied
"also um Grau zu erkennen muss ich
if (bobby.analog(SENSOR) = threashold) {
eingeben?"
Dass hatte zwar auch irgendwie funktioniert aber war nich so zuverlässig.
trotzdem Danke Weja
-
Erfahrener Benutzer
Roboter-Spezialist
Da must du auch wieder mit value denn wert einlesen.
Gruß skg-rob
Für weitere details benachrichtige mich bitte
-
Erfahrener Benutzer
Fleißiges Mitglied
Hallo
Danke für die Antwort aber bei mir klappt das auch schon länger.
Hast du jetzt auch einen Crash Bobby? Ich meine nur weil du auf praktisch alle Crash BObby Themen plötzlich geantwortest hast.
mfg palermo
-
Erfahrener Benutzer
Roboter-Spezialist
Ja
Ich habe einen Crash Bobby
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen