- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Errors im Quellcode

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2008
    Alter
    33
    Beiträge
    12
    Anzeige

    Praxistest und DIY Projekte
    Cool danke ich glaube das ist die Lösung auf mein Problem

    Ich probiers gleich einmal aus

    MFG Kieselstein

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2008
    Alter
    33
    Beiträge
    12

    -.-

    Oh man ich komme mir richtig bescheuert vor -.-
    Ich habe die Verzögerung jetzt zwar hinbekommen jedoch macht der ASURO nicht das was ich will:

    Code:
    #include "asuro.h"
    
    unsigned int i;
    
    int main(void)
    {
       Init();
       while(1)
       {
          if(PollSwitch() == 0)
          {
             MotorDir(FWD,FWD);
             MotorSpeed(150,150);
          }
          else
          {
             MotorDir(RWD,RWD);
    	 MotorSpeed(150,150);
             for(i=0; i<4000; i++) Sleep(72);
          }
       }
        return(0);
    }
    Setzt man anstatt MotorDir und MotorSpeed wie oben bei dir StatusLED ein funktionierts, aber ansonsten i-wie nicht -.- Das ergibt für mich keinen Sinn aber es ist nunmal so^^

    Der ASURO fährt gleich von anfang an rückwärts und hört dann nicht mehr auf, nicht einmal wenn PollSwitch aktiv ist -.-

    Ich hab ALLES mögliche ausprobiert und nie hat es funktioniert ich weiß nich mehr weiter :'(

    MFG Kieselstein

  3. #13
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    58
    Beiträge
    847
    Hi Kieselsteín,

    das liegt wahrscheinlich daran, dass Pollswitch von Anfang an aktiv ist.

    Ich empfehle die folgendes an Anfang einzufügen:
    Code:
    for(i=0;i<10;i++) 
    { 
    PollSwitch(); 
    }
    Damit ist sichergestellt dass alle Taster nicht logisch "gedrückt" sind.

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2008
    Alter
    33
    Beiträge
    12
    Danke für den Tipp!
    Jedoch fährt mein ASURO jetzt nur noch geradeaus xD

    Aber das Problem ist schon richtig. ASURO erkennt PollSwitch von Anfang an aktiv oder inaktiv an und entscheidet sich dann für einen Weg in der IF-Anweisung.

    Ich hasse diese verdammte PollSwitch-Anweisung^^

    MFG Kieselstein

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    33
    Beiträge
    239
    hallo kieselstein,

    versuch doch mal das ergebnis von PollSwitch() in eine variable zu speichern und ein zweits mal auf zu rufen, um fehler zu vermeiden. etwa so:

    Code:
    do
    {
          t=PollSwitch();
    }while(t != PollSwitch() );
    durch den zwiemaligen aufruf werden fehler ausgefiltet

    in deinem programm musst du natürlich danach auch mit t abfragen

    Code:
    if( t == 0) //...
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2008
    Alter
    33
    Beiträge
    12

    JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!

    JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!
    DANKE hai1991!!!!

    nachdem ich heute bestimmt 5 stunden an meinem ASURO rumexperimentiert habe funktioniert es endlich durch deinen Vorschlag

    HIER DIE WUNDERBARE LÖSUNG:

    Code:
    #include "asuro.h"
    
    unsigned int i;
    unsigned int t;
    
    
    
    int main(void)
    {
       Init();
       while(1)
       {
    		do {
    		  t=PollSwitch();
    		  if(t == 0)
    			{
    			MotorDir(FWD,FWD);
    			MotorSpeed(150,150);
    			}
    
    		else 
    			{MotorDir(BREAK,RWD);}
    			{MotorSpeed(150,150);}
    			{for(i=0; i<1500; i++) Sleep(72);}	
    		}
    		while(t != PollSwitch() ); 
    	}		
    		return 0;
    }
    Du glaubst gar nicht wie dankbar ich dir bin!

    DANKE DANKE DANKE^^
    MFG Kieselstein

    Bild hier  

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    33
    Beiträge
    239
    ich hätte es zwar etwas anders gedacht, aber wenn es so auch funktioniert ist es auch schon

    mein vorschlag wäre so gewesen:
    Code:
    #include "asuro.h"
    
    unsigned int i;
    unsigned int t;
    
    
    
    int main(void)
    {
       Init();
       while(1)
       {
          do {
            t=PollSwitch();
          }while(t != PollSwitch() );   //diese schleife wird erst beendet, wenn PollSwitch zwei mal hinter einander den selben wert liefet
            if(t == 0)                  //überprüfung ob ein taster gedrückt ist
             {
             MotorDir(FWD,FWD);
             MotorSpeed(150,150);
             }
    
          else
             {MotorDir(BREAK,RWD);}
             {MotorSpeed(150,150);}
             {for(i=0; i<1500; i++) Sleep(72);}   
    
       }      
          return 0;
    }
    die do-while schleife habe ich eingebaut, weil PollSwitch() bei laufenden Motoren manchmal fehlerhafte ergebnisse liefert, diese sind aber selten zweimal hinter einander. daher braucht man nur zu warten bis man zwei mal den selben wert bekommt, und dann mit dem normalen programm fortsetzen

    weiter hin noch viel spaß und erfolg beim experimentiern / spielen mit asuro
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests