Hallo,

jetzt möchte ich meinem alten Programm gerne zur Umgebungslichtkompensation was hinzufügen.
Da ich ja auf einer Schwarz-Weiß-Kante fahre, ist meine Idee folgende:
Ich stehe auf der Kante, links schwarz rechts weiß.
Ich messe nun also auf beiden Transistoren jeweils mit LED on und off.
Dann bilde ich die Differenz aus den Messwerten des linken bzw. rechten Transistors. Da links auf schwarz steht, müsste sich ja hierfür eine andere Differenz ergeben als für den rechten Transistor.

Code:
 Init();
 FrontLED(Off);
 LineData(data); //links->schwarz, rechts->weiß
 a=data[0];
 b=data[1];
 FrontLED(On);
 c=data[0];
 d=data[1];
 schwarz=c-a;
 weiß=d-b;
Das habe ich also soweit.
Das würde ich gerne in eine Funktion umgeblicht packen, damit ich im mainprogram nur noch umgeblicht aufrufen muss.
Jetzt ist aber mein Problem, dass ich an die Differenzwerte für Weiß und Schwarz nicht rankomme. Wie bekomme ich denn den Digitalwert?
Desweiteren hab ich mit der funktion so meine Probleme.

int umgeblicht (LineData(Data));
{
int a,b,c,d,schwarz,weiß;
FrontLED(Off);
LineData(data); //links->schwarz, rechts->weiß
a=data[0];
b=data[1];
FrontLED(On);
c=data[0];
d=data[1];
schwarz=c-a;
weiß=d-b;
}
so würde ich meine Funktion basteln und dann im main einbauen.
Ist das so in etwa richtig? Bin ich auf dem richtigen Kurs?

Ich weiß, das sieht alles ziemlich unkoordiniert aus

Wenn ich dann mal den Differenzwert habe, dann kann ich das in dem obigen(von damaltor) verbesserten Programm als Bedingung in den if Anweisungen einbauen.
Andererseits habe ich mir auch überlegt, dass ich die Differenz zwischen Links und Rechts bilde, das müsste ja, wenn man auf Kurs ist, immer einen festen Wert ergeben.
Beides hört sich für mich plausibel an...aber am Programmieren haperts halt wieder.

Ich hoffe ihr könnt mir mal wieder helfen!!

Liebe Grüße