Signale für hell/dunkel sind kalr, habe ich mit doc asuro getestet. Dennoh auch wenn nur der rechte sensor hd[1] einen Wert von kleiner gleich 23 aufweißt wird die while(h==1) schleife einmal durchlafuen, dabei ist es auf grund der logig nicht möglich (für h=1 müssen beide sensoren werte kleiner gleich 23 haben) haben sie aber SICHER nicht. Kann mir jmd helfen? Warum durchläuft der ASURO (AtMega8 prozessor) die schleife dennoch einmal? Mfg c code ist im anhang.
:
Hi! Überlege mal diesen Konstrukt und frage dich was h für einen Wert bekommt wenn hd[1]>23 ist if (hd[0]>23) { h=0; } if (hd[1]>23) { h=0; } Viel Erfolg, Uwe
Ja null eben, solls ja auch,wenn der Asuro über eine schwarze querlinie fährt, soll er solange in dieser Schleife ausgehalten sein, dass er für die Überquerung den Counter nur einmal erhöht. allerdings geht der Asuro ebenfalls in diese Schleife, wenn er nur mit dem rechten Liniensensor dessen Wert in hd[1] gespeichert wird über eine dunkle linie fährt, dannach verlässt er die schelfie weil aus der nächsten auslesung ja eindeutig hervorgeht dass eine der beiden sensoren nciht auf einer schwarzen linie sein kann, dadurch wird h =0 und die schleife wird unterbrochen. Das Problem ist aber, dass h erst garnicht eins werden kann, solange nicht beide werte des arrays kleiner als 23 sind. Wenn der Asuro mit dem rechten liniensensor auf der schwarzen linie steht & mit dem linken aufm weißem untergrund ist hd[0]=33 und hd[1]=17 somit darf es nciht sein, dass h=1 ist und dann darf die schleife garnicht durchlaufen, passiert aber trotzdem? Mfg
Ich habe Probleme mit deiner Beschreibung, ich sehe nur den Code und eine Symptombeschreibung aber keine Aufgabe. Den Code im Anhang habe ich so umgeschrieben, dass ich ihn verstehe und dass der Asuro so arbeitet, wie ich meine, dass es seine Aufgabe ist: Schwarze Linie suchen, versuchen draufzubleiben und stoppen, wenn die Linie 2 mal verlassen wurde. Achtung: Der Code hat noch keinen Compiler, Simulator, Hardware gesehen.
vielen dank, für die viele mühe und den guten & überishctlichen code :) Ohh entschuldige, habe in der eile vergessen die eigentlich aufgabe des programmes zu erläutern. zuerst habe ich ein programm geschrieben, mit dem der asuto blinker einer hellen led erkennen und zählen kann. dieses kommt dann vor dieses programm. der asuro wird später als eine art polizei auf einer selbstentworfenen rennbahn tätig sein. durch das auslösen einer lichtschranke, durch die man mit einem kleinen fergestuerten auto fährt registriert ein seperater microcontroller der auf der strecke verbaut ist wo man gerade rumfährt (rundkurs). und gibt einen blinkcode an den asuro weiter ( 1 mal blinken zwei mal blinken etc.) der asuro folgt einer schwarzen linie, an vorgesehenen punkten (auf denen eine schwarze querlinie über die eigentliche linie geht) soll der asuro stehn bleiben um eine straßensperre zu machen. die sensoren des asuro sind so angeordnet : o--o o = sensor; die linie ist so schmal, dass sie beide normalen linienverfolgung nur unter einem der beiden sensoren sein kann. kommt allerdings soewtas: | ----- liegt die querlinie unter beidne sensoren, | erst dann dürfte der asuro beide werte als dunkel erkennen. kommt er allerings mit dem rechten sensor auf eine dunkle linie und steht mit dem linken auf weißem papier, meint er dennoch eine schwarze querlinie zu erkennen, was ja eigentlich garnicht möglich ist. liebe grüße
habe jetzt einfach noch eine art absicherung reingemacht, die ein falsches erkennen verhindern sollte.. werd ich nacherd mla ausprobieren.. nur dass sich hier keiner mehr die mühe macht den ganzen code durch zu werkeln :D liebe grüße christian
Ah, diese Beschreibung macht dein Vorhaben wesentlich klarer! In dem "alten" Code hatte ich angenommen, dass der Asuro auf der Fahrlinie so lange einen eingeschlagenen Kurs fortsetzt, wie beide Sensoren "schwarz" melden. D.h. die Fahrlinie müsste dafür so breit sein, dass dies möglich ist. Und wenn der Asuro 2x von der Linie runter ist, soll er anhalten. Gemäß deiner Beschreibung sollen beide Sensoren auf der Fahrlinie nie gleichzeitig "schwarz" sehen, d.h. die Fahrlinie muss schmal sein und der Asuro fährt quasi einen kleinen Schlingerkurs um ständig auf der Fahrlinie zu bleiben. Zum Code... lange, sinnvolle Variablennamen und Kommentare kosten keinen Speicherplatz auf dem µC. Warum sich die Arbeit mit kryptischen Namen schwer machen, wenn man aussagekräftige Namen benutzen kann?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.