PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schrittweise Geschwindigkeitserhöhung



frank1210
06.01.2010, 10:36
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

hai1991
06.01.2010, 12:35
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:



#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!)

frank1210
06.01.2010, 12:48
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

radbruch
06.01.2010, 13:07
if (PollSwitch()>8); // das Semikolon ist hier falsch!

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


#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

frank1210
06.01.2010, 13:21
Klasse jetzt klappt´s.
Danke