okay, aber das hilft mir gerade in meinem Fall nicht weiter. Habs auch mal mit der FrontLED an versucht und es ändert nichts daran, dass LineData weiterhin 0 für beide ausgibt!
Werbung
okay, aber das hilft mir gerade in meinem Fall nicht weiter. Habs auch mal mit der FrontLED an versucht und es ändert nichts daran, dass LineData weiterhin 0 für beide ausgibt!
Hallo
Zweiter Versuch:Gibt es so immer noch einen "vernünftigen" Wert bei der ersten Lesung?Bei ersten Durchlauf bekomme ich tatsächlich einen vernünftigen Wert für den linken Fototransistor geliefert,Hintergrund: Die erste Lesung nach dem Umschalten des ADC-Kanal (oder der Referenz) kann fehlerhaft sein. Wenn mit dieser Änderung für Links kein vernünftiger erster Wert gelesen werden kann, sind vielleicht die Liniensensoren T9 und T10 falschrum eingelötet. Die würden dann, unabhängig von der Beleuchtungsstärke, immer sperren und die Pegel an ADC2 und ADC2 wären durch die PullDowns R14 und R15 immer auf Null Volt.Code:while (1) { data[0] = 0; data[1] = 0; LineData(data); LineData(data); SerWrite("Links ", 6); warte(100); writeUint(data[0]);
Gruß
mic
![]()
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hm, leider nein,
ich versteh es auch nicht, ich hab jetzt den Schaltplan nochmal durchgecheckt, die Widerstände 14 und 15 sind die richtigen, 20kOhm, und die Fototransistoren sind auch richtig rum drin. Mir ist das ganze ein Rätsel gerade.
Hallo
Da die Linienwerte beim orginal bestückten asuro nie 500 erreichen, sollte der erste if-Zweig nie ausgeführt werden. Mehr als 1023 werden es sicher auch nie sein, denn die Funktion liefert nur einen 10-Bit-Wert. Also reduzieren wir mal aufs wesentliche:Code:if (data[1] > 500) { if (data[1] >1024) StatusLED(GREEN); else StatusLED(YELLOW); } else if (data[1] >1 || data[0] > 1) StatusLED(RED); else StatusLED(OFF);
Funktioniert die Anzeige mit der StatusLED wie erwartet, wenn man data[0] auf 2 setzt?Code:unsigned int data[2]; while (1) { LineData(data); data[0]=2; // Test der Funktionalität der Anzeige if (data[1] >1 || data[0] > 1) StatusLED(RED); else {StatusLED(OFF); while(1);} // Programmende! while(PollSwitch() < 1) warte(1); }
Gruß
mic
![]()
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen