- LiTime Speicher und Akkus         
Ergebnis 1 bis 5 von 5

Thema: Schrittweise Geschwindigkeitserhöhung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    16.12.2009
    Beiträge
    71

    Schrittweise Geschwindigkeitserhöhung

    Anzeige

    Praxistest und DIY Projekte
    Hi.
    Hab im Forum bisher nicht dazu gefunden.
    Was ist an meinem Prog falsch.

    #include "asuro.h"
    int main(void)
    {
    int p;
    Init();
    p=150;
    MotorDir(FWD,FWD);
    MotorSpeed(p,p);
    if (PollSwitch()>8);
    {p=(p+20);}
    while(1);
    return 0;
    }
    Gruß Frank

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    32
    Beiträge
    239
    hallo frank
    bei dir wird das ganze genau einmal von oben nach unten durchlaufen und dann bleibt das programm bei der endlosschleife "hängen". um die geschwindigkeit zu erhöhen musst du das ganze wiederholen:

    Code:
    #include "asuro.h"
    int main(void)
    {
    int p;
    int i;
    Init();
    p=150; //Startwert
    MotorDir(FWD,FWD); //Richtung festlegen
    while(1) //wiederhole folgendes
    {
        MotorSpeed(p,p);
        if (PollSwitch()>8);
        {
            p=(p+20);
            for(i=1;i<500;i++) //eine halbe Sekunde warten, damit es nicht zu schnell geht
                 {Sleep(72);} 
        }
    }
    while(1);
    return 0;
    }
    ich hoffe es funktioniert, da ich es nicht getestet habe

    könntest du bitte dein programm zwischen die code-tags schreiben, das würde es übersichtlicher machen:
    [code ] dein programm [/code ] (ohne leerzeichen nach code!)
    mfg hai1991

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

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    16.12.2009
    Beiträge
    71
    Hi Danke für die Antwort. Nehme mir das mit den Tabs zu Herzen.
    das Prog von dir läuft aber nicht. Wird vo selber schneller, ohne Taster.
    Gruß Frank

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    if (PollSwitch()>8); // das Semikolon ist hier falsch!

    Vermutlich werden nun die laufenden Motoren die PollSwitch()-Abfrage stören:

    Code:
    #include "asuro.h"
    int main(void)
    {
    	int p;
    	int i;
    	char t1,t2;
    
    	Init();
    	p=150; //Startwert
    	MotorDir(FWD,FWD); //Richtung festlegen
    	MotorSpeed(p,p);
    	t2=PollSwitch();
    
    	while(1) //wiederhole folgendes
    	{
        	t1=PollSwitch();
    		if ((t1>7) && (t1==t2)) // Wenn Tastenwert größer 7 und beide Lesungen gleich sind
        	{
            	StatusLED(RED);
    			if(p<235) p=p+20;
    			MotorSpeed(p,p);
            	for(i=1;i<500;i++) //eine halbe Sekunde warten, damit es nicht zu schnell geht
             	Sleep(72);
    			StatusLED(GREEN);
        	}
        	t2=t1;
    	}
    	return 0;
    }
    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!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    16.12.2009
    Beiträge
    71
    Klasse jetzt klappt´s.
    Danke

Berechtigungen

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

LiTime Speicher und Akkus