- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Asuro fährt fast immer mit 255

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Anzeige

    Powerstation Test
    Also wieder verzögern ist nicht nötig? Dann ist es kein Problem das a gleich bleibt an 255.

  2. #12
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Ungetestet:
    Code:
    #include <stdio.h>
    #include <asuro.h>
    
    #define false 0 // quick&dirty!
    #define true 1
    
    int main(void)
    {
       Init();
       char aC[2];
    
    	unsigned char tanzen = false;
    	unsigned char Beschleunigung = false;
    
       int z = 0, y = 0, t = 0, gas = 0, a = 50;
    
    	while( 1 )
    	{
    	   if (z < 8)							// Tanzen?
    		{
    			tanzen = true;
             Beschleunigung = false;
    		}
    		else if (z < 12)					// oder beschleunigen?
    	   	{
    				tanzen = false;
    				Beschleunigung = true;
    			}
    			else								// oder nixtun?
    			{
    				tanzen = false;
    				Beschleunigung = false;
    			}
    
    	   if (tanzen) 						// Wir tanzen den Gastanz
    		{
    	      MotorSpeed(120,120);
    	   	if(gas < 5 )
    	      	MotorDir(FWD,RWD);
    	   		else if(gas < 15)
    	      		MotorDir(RWD,FWD);
    	   			else if(gas < 20)
    		      		MotorDir(FWD,RWD);
    	   				else if(gas < 30)
    	      				MotorDir(FWD,FWD);
    	   					else if(gas < 35)
    		      				MotorDir(RWD,FWD);
    		   					else if(gas < 45)
    		      					MotorDir(FWD,RWD);
    		   						else if(gas < 50)
    		      						MotorDir(RWD,FWD);
    		   							else if(gas < 60)
    		      							MotorDir(RWD,RWD);
    	   									else gas=0;
    	      gas=gas+1;
          }
    
    		if(Beschleunigung) 				// Linker Antrieb bis 255 beschleunigen
    		{
    	   	MotorDir(FWD,FREE);
    	   	MotorSpeed(a,0);
    	   	a=a+5;
    			if(a > 255)
    	   		a = 255;
    		}
    		else 									// keine Beschleunigung
    		{
    			MotorDir(FREE,FREE); 		// bedeutet bremsen
    			a=50;                 		// und a auf Startwert setzen
    		}
    
    	   utoa (z, aC, 10); 				// debugen
    	   SerWrite(aC, 2);
    	   SerWrite (" z\n\r", 5);
    	   for (t=0; t< 120; t++)
    	      Sleep (72);
    
    	   utoa (a, aC, 10);
    	   SerWrite(aC, 12);
    	   SerWrite ("     a\n\r", 8);
    	   for (t=0; t< 120; t++)
            	Sleep (72);
    
    	   y++; 									// Zähler weiterschalten
    	   if (y > 5)
    	   {
    		   z++;
    	      y=0;
    	   	if (z > 15)
    	      	z=0;
    		}
    	}
       return 0;
    }
    So könnte ich mir die Funktion des Programms vorstellen.

    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!

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    Danke

    Ich habe das jetzt getestet aber a ist immer 50

    Lg

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    Hallo

    Hier eine spanende Frage:

    Mein Code:

    Code:
       if ((z > 0) && (z < 8))         
    		
    		B = true;
    	
    
       if ((z > 8) && (z < 12))      
    	
    		tanzen = true;
    		a = 0;
    Wenn ich das Programm so teste ist motorspeed auch von [0 - 8] 0 aber es steht ja nur bei [8-12]

    Wieso?

    Wenn ich a = 0 weglase ist es von [0-8] nicht 0
    Lg

  5. #15
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Bist du sicher dass a immer 50 ist? Bei 48 Runden "tanzen" (z=0 bis z=7 jeweils y von 0 bis 5) sollten 48 mal die 50 für a am Terminal ausgegeben werden. Dann erst folgt die Beschleunigung mit 24 Runden, wieder gefolgt von 24 mal 50 in der Pause. Dann startet der Zyklus erneut.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von Problem
    Hallo

    Hier eine spanende Frage:

    Mein Code:

    Code:
       if ((z > 0) && (z < 8))         
    		
    		B = true;
    	
    
       if ((z > 8) && (z < 12))      
    	
    		tanzen = true;
    		a = 0;
    Wenn ich das Programm so teste ist motorspeed auch von [0 - 8] 0 aber es steht ja nur bei [8-12]

    Wieso?

    Wenn ich a = 0 weglase ist es von [0-8] nicht 0
    Lg
    Das Befehl "a=0;" gehört nicht zu den if-Befehl das oben es steht. Es ist ein 'Einzelgänger'. Und macht a immer gleich an 0. Damit a=0 wird wann z>8 UND z<12 ist solltest du die befehlen danach zwischen {} klammern schreiben.

    Code:
       if ((z > 0) && (z < 8)) B = true;
    	
    
       if ((z > 8) && (z < 12))
        {   tanzen = true;
             a = 0;
        }

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    Ach ich bin ein .................

    Ist klar wenn ich die Klammer nicht mache gilt es nur für den nächsten befehl und der ist mit ; zu ende

    Ist mir schon klar

    Dann werde ich weiter progen und versuchen es hinzubekommen

    Danke

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    So das funkt jetzt
    Noch eine Frage

    Code:
       if ((z > 0) && (z < 8))         
    		
    		B = true;
    	
    
       if ((z > 8) && (z < 12))      
    	
    		{tanzen = true;
    		a = 0;}
    kann es sein das er wegen a = 0 die motoren auch von [8-12] auf 0 schaltet obwohl ich oben bei if tanzen .. true MotorSpeed(120,120); angegeben habe ???

    Lg

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress