Also wieder verzögern ist nicht nötig? Dann ist es kein Problem das a gleich bleibt an 255.
Druckbare Version
Also wieder verzögern ist nicht nötig? Dann ist es kein Problem das a gleich bleibt an 255.
Ungetestet:
So könnte ich mir die Funktion des Programms vorstellen.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;
}
Gruß
mic
Danke
Ich habe das jetzt getestet aber a ist immer 50
Lg
Hallo
Hier eine spanende Frage:
Mein Code:
Wenn ich das Programm so teste ist motorspeed auch von [0 - 8] 0 aber es steht ja nur bei [8-12]Code:if ((z > 0) && (z < 8))
B = true;
if ((z > 8) && (z < 12))
tanzen = true;
a = 0;
Wieso?
Wenn ich a = 0 weglase ist es von [0-8] nicht 0
Lg
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.
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.Zitat:
Zitat von Problem
Code:if ((z > 0) && (z < 8)) B = true;
if ((z > 8) && (z < 12))
{ tanzen = true;
a = 0;
}
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
So das funkt jetzt
Noch eine Frage
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 ???Code:if ((z > 0) && (z < 8))
B = true;
if ((z > 8) && (z < 12))
{tanzen = true;
a = 0;}
Lg