Um auszuschließen, dass ein komplettes Offenlassen der Kontakte Probleme macht, habe ich mal einen 10kOhm Widerstand eingesteckt, der dann Werte von ca. 1023/2 liefern sollte.
Hier der Code für die Auswertung
Code:
void sensorData(unsigned int* left, unsigned int* right)
{
static unsigned int leftBright, leftDark;
static unsigned int rightBright, rightDark;
FrontLED(OFF); Msleep(1);
leftDark = ReadADC(IR_LEFT, 7*36);
rightDark = ReadADC(IR_RIGHT, 7*36);
FrontLED(ON); Msleep(1);
leftBright = ReadADC(IR_LEFT, 7*36);
rightBright = ReadADC(IR_RIGHT, 7*36);
*left = leftBright-leftDark;
*right = rightBright-rightDark;
SerPrint("\nDark: "); PrintInt(leftDark); SerPrint(" / "); PrintInt(rightDark);
SerPrint(" Bright: "); PrintInt(leftBright); SerPrint(" / "); PrintInt(rightBright);
}
Ich benutze hier zum Test direkt ReadADC() um etwas längere Sleep-Zeiten zu haben. Sicher ist sicher.
Ergebnis:
Wenn ich die Kurzschlussbrücke und den Widerstand einstecke, bekomme ich für beide Seiten 1023. Wenn ich nur den Widerstand einstecke und die andere Seite offen lasse, bekomme ich ca. 1023/2 (meist so 514) - auch auf beiden Seiten.
Die Seite, in die man etwas einsteckt, ist dabei egal, es tritt immer das gleiche Phänomen auf: Nur der höhere ADC-Wert kommt an.
Ich hab seit Stunden alle Verbindungen durchgemessen und kann keine Kurzschlüsse o.ä. feststellen. Jetzt weiß ich nicht mehr weiter ...
Lesezeichen