Hallo
entferne den ; nach while(1)
dann müsste es gehen
mfg Hissi
Hi Leute,
Ich hoffe ihr könnt mir helfen, denn ich weiss nicht was ich an diesem Programm ändern soll.
Ich progge mit Programmers Notepad 2 und es kommt keine Fehlermeldung, aber 3 Warnungen:Code:#include "asuro.h" unsigned char M; int main(void) { Init(); M=255; MotorDir(FWD,FWD); MotorSpeed(M,M); while(1); { if (Pollswitch()>0) { M=100; StatusLED(RED); BackLED(ON,ON); MotorDir(RWD,RWD); MotorSpeed(M,M); Msleep(3000); } else { M=250; StatusLed(GREEN); MotorDir(FWD,FWD); MotorSpeed(M,M); BackLED(OFF,OFF); } } return 0; }
test.c:15: warning: implicit declaration of function `Pollswitch'
test.c:22: warning: implicit declaration of function `Msleep'
test.c:27: warning: implicit declaration of function `StatusLed'
Nachdem ich das Programm geflasht habe, fährt er immer vorwärts und das wars.
Normal sollte er vorwärts fahren und sobald er auf ein Hindernis trifft 3 Sek. rückwärts fahren.
Ich brauche eure Hilfe
MfG
Momchilo
Hallo
entferne den ; nach while(1)
dann müsste es gehen
mfg Hissi
Moin,
Du musst die Meldungen lesen und richtig interpretieren lernen.Zitat von Momchilo
"implicit declaration" heisst soviel wie, "mhh.. die Funktion kenne ich noch nicht"
C ist case-sensitiv, d.h du musst Gross-, Kleinschreibung beachten.
Pollswitch = PollSwitch, Msleep = MSleep, StatusLed = StatusLED.
Weiter oben im Programm hattest du StatusLED ja schonmal korrekt verwendet.
Gruss
normido
15: PollSwitch()
27: StatusLED(GREEN)
zu 22: Msleep fällt mir grad nur ein, dass es diese Funktion erst ab Version 2 der asuro.c gegeben hat. Davor hies das einfach Sleep() und die Zeit wurde in 36igstel-irgendwas angegeben.
Gruss
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hi,
Vielen Dank für diese schnellen Antworten, um diese Uhrzeit.
Allerdings ahbe ich jetz das Problem, dass er nur noch bedingt das macht, was ich ihm sage.
Wenn ich dieses Programm ausführe, fährt er vorwärts und die Backleds blinken. Wenn ich dann auf einen Taster drück fährt er rückwärts uund die Backleds sind solange immer an (das sollen sie ja auch ). Wenn ich öfter auf ein Taster drücke blinkt irgendwann die Statusled gelb und er fährt nicht mehr rückwärts.Code:#include "asuro.h" unsigned char M; int main(void) { Init(); M=255; MotorDir(FWD,FWD); MotorSpeed(M,M); while(1) { if (PollSwitch()>0) { M=100; StatusLED(RED); BackLED(ON,ON); MotorDir(RWD,RWD); MotorSpeed(M,M); } else { M=250; StatusLED(GREEN); MotorDir(FWD,FWD); MotorSpeed(M,M); BackLED(OFF,OFF); } } return 0; }
Die Akkus sind neu und aufgeladen.
Weiss jemand warum die Backleds die ganze Zeit blinken und nach mehrmaligen drücken der Taster die Statusled gelb wird?
MfG
Momchilo
Hallo
Vermutlich funktioniert die Tastenabfrage nicht richtig. Grundsätzlich bereitet die einmalige Abfrage auf "Wert > 0" Probleme. (hier gibts schon diverse Threads dazu).
Wenn wegen gestörten Tastenabfrage laufend zwischen Vor und Zurück umgeschaltet wird, blinken deine BackLEDs und die StatusLED wird Gelb (Grün und Rot in schneller Folge)
Zum Testen kannst du dich mal auf eine oder zwei Tasten beschränken und diese mit "PollSwitch() == tastenwert" (Tastenwerte:1,2,4,8,16 oder 32) abfragen.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen