Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro soll Hindernisse umfahren - Schulprojekt
asuronoob
20.03.2008, 16:27
moin moin
könnt ihr mir bitte bei einem programm helfen, ist ein schulprojekt ](*,)
das programm sollte in etwa so aussehen
der asuro soll fahren bis er auf ein hindernis stößt dann zurückfahren und das hindernis umfahren
danke für eure hilfe
Du musst wenn du eine Funktion schreibst die keine Parameter übergeben bekommt trotzdem klammern schreiben, in die du dann void schriebst müsste dann z.B bei nachrechts so aussehen:
void nachrechts (void)
{...}
wenn du die Funktion dann aufrufst musst du die Klammern wieder mit aufnehmen sonst erkennt der Compiler nicht, dass das eine Funktion ist.
Also:
nachrechts();
mfg
Erik
damaltor
20.03.2008, 17:26
1. Bitte aussagekräftige Titel verwenden. (fast) nimand klickt auf "brauche dringend hilfe". ich habe den titel angepasst.
2. was passiert bei dem programmcode den du gepostet hast? was funktioniert nicht wie es soll? lässt er sich kompilieren oder nicht?
ein großer fehler fällt mir spontan auf: du schreibst if(x=1||x=2||....). du musst aber schreiben if(x==1||x==2||...).
ein weiterer großer fehler: du schreibst unten nachlinks und nachrechts. wenn du funktionen aufrufst, müssen die klammern mit: nachrechts(); und nachlinks(); sonst passiert nichts.
Hallo asuronoob.
1. Bei den beiden Funktionsdeklarationen fehlen die Parameterklammern(), genauso beim aufruf in der main.
2. in der main steht if(x=32...) - das '=' ist der Zuweisungsoperator, vergleichen tut man mit '=='.
3. Was soll 'for (int i=0; i<=2;i++)' in den Funktionen oben bewirken? Wenns einfach nur eine Pause sein soll, dann nutze bitte die Funktion _delay_ms() aus der <util/delay.h> oder sowas in der Art. Die Schleife wird vermutlich in weniger als 10 us durchlaufen.
hoffe ich konnt Dir etwas helfen.
MfG Mark
asuronoob
20.03.2008, 17:29
danke schonmal
das programm lässt sich nicht in eine .hex datei umwandeln also mit dem make befehl,
viele fehlermeldungen mit denen ich nix anfangen kann
zu drittens
der asuro soll eine gewisse strecke bzw. zeit rückwärts fahren ca. 2 sekunden
bevor er eine kurve fährt
damaltor
20.03.2008, 17:32
ändere alles was wir dir oben gesagt haben und probiere es erneut. nun, wennnoch fehlermeldungen kommen, poste diese hier (am besten ebenfalls mit dem code-button). evtl können wir dir dann sagen was die bedeuten.
asuronoob
20.03.2008, 17:36
programm schaut jetz so aus
fehlermeldungen sind schon weniger =D>
damaltor
20.03.2008, 17:43
in zeile 5, 10, 18, 23: du kannst in reinem C-code keine variablen in der definition der for-schleife erzeugen. du musst in der zeile davor "int i" schreiben, da das so wie du es gemacht hast strenggenommen nur in C++ erlaubt ist.
in zeile 7,20 : du hast BWD getippt. vermutlich meinstest du RWD oder FWD.
in zeile 33: die funktion heisst PollSwitch() und nicht Pollswitch(), was durchaus einen unterschied macht. das musst du an allen stellen wo es verwendet wird ändern.
in zeile 50 (letzte zeile): jeder c-code sollte mit einer leeren zeile enden. warum das so ist weiss vermutlich niemand so genau, aber es reicht wenn du bis zum ende des programmcodes scrollst und nochmal enter drückst, so dass das letzte zeichen des quellcodes ein zeilenumbruch ist, um die letzte meldung zu unterdrücken.
asuronoob
20.03.2008, 17:51
habs verbessert aber komischerweise sind neue fehlermeldungen aufgetreten
Füg mal in deinem Makefile unter CSTANDARD bzw CFLAGS ein -std=gnu99 zu, dann wirst Du die Fehler mit der Variable in for-Schleife los.
damaltor
20.03.2008, 18:07
asuronoob: lies mal den thread direkt über deinem, da stehen sachen die noch nicht korrigiert wurden.
asuronoob
20.03.2008, 18:18
juhu danke
keine fehler =D>
hab das programm jetz auf den roboter geflasht
allerdings dreht sich nur das linke rad und das rückwärts 8-[
damaltor
20.03.2008, 21:24
dann ist dein programm jetzt formal korrekt, aber leider sind logische fehler noch drin. die erkennt der compiler natürlich nicht :D
poste nochmal deinen aktuellen programmcode.
asuronoob
21.03.2008, 00:50
code gelöscht! :)
damaltor
21.03.2008, 03:35
da nur ein rad dreht, das aber in deinem programm nicht vorkommt, vermute ich ein technisches problem. hast der selbsttest funktioniert? flashe ihn nochmal und überprüfe die motoren.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.