-
-
Erfahrener Benutzer
Roboter Genie
Ich hab das program mal auf meiner asuro geflashed. Aber ich krieg gar keinen ruckwarts links kurven. Aber ich habe auch keinen schwarze strichen auf meinen boden.
Da ist aber ein fehler in dein program. Und den compiler muss ihr schon da uber gemeldet haben mit einer warnung im zeile 73:
if (S
=1)
{
while (i<(DrehL))
Nur ein 'gleich-an' zeichen meint ein zuweisung von 1 and S. Einer doppelte gleich-an zeichen ist einer logische stellung, "ist S gleich 1?". Weil einer zuweisung als war gesehen wird hat das deine Asuro die falsche entscheidung machen lassen. Er ist dan gleich dammit von der meinung er ist den 10-en linie ubergegangen (weil S gleich 1 gemacht ist.) Er uberpruft den folgende while schleife aber das macht er nicht weil i nicht kleiner ist wie DrehL (das wird es aber auch nie, weil sie am anfang beiden gleich 0 sind, und nur i inkrementiert wird bei eine linie ubergang.) Beiseitens, DrehL zwischen runde klammern ist nicht notig. 
Den If nach dem While macht er aber sicher. Auch wenn keiner linie schon bemerkt ist, weil i und DrehL am anfang des programmes beiden 0 sind, und deshalb gleich (oder i grosser). Danach endet der grossen while schleife und geht von vorne wieder dran.
Wen er einer linie bemerkt hat nach dem linedata funktion wird er den i variabele hoch zahlen, den backleds anm und wartet einer sekunde. ABER HUUU!!!!, so lange mit laufende motoren! Wird er nicht den nächste linie vorbei gehen? Und wie bist du sicher das er ihn bemerkst hat. Den backleds bleiben an. Ich wurde sie nur ein augenblick leuchten lassen (nur einiger milisekunden) damit du wisst er hat was gesehen. Aber dan auch den backleds wieder aus. Sonnst wurde du sein bemerken der nachste linie nicht sehen. Und er wird es auch nicht blind vorbei gehen. Nur ist das problem er konnte die i variabele mehrfach hochzahlen bei dem selbte linie. Deshalb muss den blinkzeit auch nich zu kurz sein.
Ok Taster! Daruber muss auch nog etwas gesagt werden. Denn taster liefern meistens falsche werten. Sehr oft wegen motorstörung, oder weil er bewegt beim anstossen. Ein einfache lösung ist 2 mal den Pollswitch in 2 variabelen speichern und testen ob sie gleich sind. Dan konntest du diesen taster wert weiter analysieren fur den genaue tastern.
Weisst du aber welcher taster den wert 13 verursachen? 13=8+4+1, und das ist den meist rechter taster (K6=1, von hinten gesehen) mit den 2 inneren (K3=4,K4=
.
'<13' sind verschiedene combinationen, aber nicht alle von den 4 rechter taster. (weil 8+4+2 >13) Aber '>13' könnte ein kombination von fast alle taster sein. Wen du nur den linker oder rechter tasten wollte muss man nur diesen 3 bits testen an jeder seite. Das geht mit bit-maske und einer OR ('oder') operator.
(taste & 56) sind nur ein oder mehr der linker taster sind eingedruckt,
(taste & 7) sind nur ein oder mehr der rechter taster sind eingedruckt.(nochmal, nur von hinten gesehen)
Oder hattest du bestimte taster-eindruck-wunschen?
Ob das gesamt deine auftrag losst bin ich noch nicht sicher, von aber damit muss ihr schon weiter kommen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen