- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Könnt ihr vllt mal kurz drüber schaun was falsch ist?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2007
    Beiträge
    11

    Könnt ihr vllt mal kurz drüber schaun was falsch ist?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo ich bin gerade dabei mein erstes Programm für den Asuro zu schreiben. Ich habe das Beispielprogramm aus der Anleitung ein wenig abgewandelt doch es funktioniert leider nicht Könntet ihr vielleicht mal kurz drüber schauen was falsch ist. (Bei mir sind die Motorenrichtungen vertauscht muss ich noch umlöten)
    Code:
     #include "asuro.h"
    
    int main(void)
    {
    	Init();
    	MotorDir(RWD,RWD);
    	MotorSpeed(150,155);
    	StatusLED(YELLOW);
    	while (PollSwitch()==0){
    		StatusLED(GREEN);
    		}
    		MotorDir(FWD,FWD);
    		MotorSpeed(150,150);
    		BackLED(ON,ON);
    		FrontLED(ON);
    }
    Das Problem ist das der Asuro gar nicht erst Vorwärts fährt sondern sofort Rückwärts. [/code]

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    67
    Beiträge
    531
    Hallo,

    Du solltest zuerst die umloting machen...

    vermutlich gibt die PollSwitch() Funktion irgendwo kein 0 zuruck sondern ein anderen Wert? (Dadurch dass sie motoren gerade vorher eingeschaltet werden konnte da ein dip im versorgungsspannung geben.

    Vielleicht mal die ersten
    > MotorDir(RWD,RWD);
    > MotorSpeed(150,155);
    weglassen oder ein warteschleiffe benutzen befor die Tasten abgefragt werden damit die betriebsspannung sich stabilisieren lasst.

    Gruss

    Henk

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    31.01.2007
    Ort
    kerken
    Alter
    31
    Beiträge
    69
    ich glaube, ein fehler ist schon mal, dass du schreibst,{
    StatusLED(GREEN);
    }
    und dannach schreibst du dann noch weiter an dieser funktion
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    BackLED(ON,ON);
    FrontLED(ON);
    obwohl du mit der geschweiften klammer nach dem StatusLED-Befehl die aktion schon beendet hast.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    31.01.2007
    Ort
    kerken
    Alter
    31
    Beiträge
    69
    ausserdem steht in der anleitung, dass man für diesen befehl

    taste=PollSwitch();
    if(taste=0){...;}

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    31.01.2007
    Ort
    kerken
    Alter
    31
    Beiträge
    69
    könnte es vllt sein, dass du befehle aus ner neueren lib verwendest und die dateiewn asuro.c und asuro.h aus der neuen lib nicght in den ordner getaen hast, indem das makefile und test,c gespeichert sind?

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    04.01.2007
    Beiträge
    26
    Zitat Zitat von asuroer
    ich glaube, ein fehler ist schon mal, dass du schreibst,{
    StatusLED(GREEN);
    }
    und dannach schreibst du dann noch weiter an dieser funktion
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    BackLED(ON,ON);
    FrontLED(ON);
    obwohl du mit der geschweiften klammer nach dem StatusLED-Befehl die aktion schon beendet hast.
    Nein, das passt schon so. Vom Sinn her ist das Programm richtig, aber in der Praktik leider oft unbrauchbar, da PollSwitch() oft (überhaupt am Start vom Asuro und dann später acuh) falsche Werte zurückgibt.
    edit: Deine anderen 2 Vorschläge halt ich auch für unwahrscheinlich.

    Versuch es mal ungefähr so:
    Code:
    int a,b;
    a=PollSwitch();
    b=PollSwitch();
    if (a!=b) {a=0;b=0;} //falls die ungleich sind, dann ihnen 0 zuweisen
    //jetzt mit einer der variablen vergleichen
    Das Ganze musst du nur noch richtig in deinen Code einsetzen.

    Suche mal im Forum danach, diese Probleme haben schon viele vor dir gehabt. :)

  7. #7
    Wenn man statt "StatusLED(GREEN)" z.B. "SerWrite()" nimmt, klappt das interessanterweise.
    Alles korrekt programmiert, aber in der Praxis...

  8. #8
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    liegt vielleicht daran, dass SerWrite künstlich verzögert, um auf 9600 baud zu kommen... keine ahnung
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Und diese Verzögerung beeinflußt wohl PollSwitch(). Versuche es mal mit einem Sleep(200); Oder eben mit einer zuverlässigeren Tastenabfrage.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2007
    Beiträge
    11
    Erstmal danke für die vielen Antworten.
    Ich hab im Forum gelesen, dass es anscheinend an den Spannungsschwankungen beim Anschalten des Asuros liegt und dass deshalb die Taster auch einen ungenauen Wert zurückgeben. Ich hab nun mal vor dem ganzen Programm eine Sleepfunktion eingebaut für ca. 5 sek und siehe da es funktioniert. Ich werd morgen mal die Methode von ace ausprobieren.
    Lg
    Manu

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress