PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dritte Farbe für Bodensensor



palermo
20.08.2006, 12:52
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 ".

Weja
27.08.2006, 14:48
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.

palermo
27.08.2006, 18:15
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 \:D/

palermo
02.10.2006, 16:50
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.

palermo
02.10.2006, 16:55
"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

skg-rob
23.02.2007, 17:01
Da must du auch wieder mit value denn wert einlesen.

Gruß skg-rob



Für weitere details benachrichtige mich bitte

palermo
24.02.2007, 12:55
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

skg-rob
25.02.2007, 13:14
Ja
Ich habe einen Crash Bobby