-         

Ergebnis 1 bis 6 von 6

Thema: Was ist an diesem Programm falsch?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    05.01.2007
    Ort
    Göttingen
    Alter
    27
    Beiträge
    30

    Was ist an diesem Programm falsch?

    Anzeige

    Hi Leute,


    Ich hoffe ihr könnt mir helfen, denn ich weiss nicht was ich an diesem Programm ändern soll.
    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;
    }
    Ich progge mit Programmers Notepad 2 und es kommt keine Fehlermeldung, aber 3 Warnungen:

    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

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2007
    Ort
    Lunz/See
    Alter
    29
    Beiträge
    29
    Hallo

    entferne den ; nach while(1)

    dann müsste es gehen


    mfg Hissi

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    18.12.2006
    Ort
    Bayern
    Beiträge
    15

    Re: Was ist an diesem Programm falsch?

    Moin,

    Zitat Zitat von Momchilo
    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'
    Du musst die Meldungen lesen und richtig interpretieren lernen.
    "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

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    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

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    05.01.2007
    Ort
    Göttingen
    Alter
    27
    Beiträge
    30
    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.
    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;
    }
    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.
    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

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    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

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •