Hallo,
jetzt eleganter ...
@ Udo: Warum nimmst Du die Wurzelfunktion und dann noch doppelt? Welchen anderen Effekt hat das zur Folge? Andere Steilheiten oder? Das habe ich noch nicht rausbekommen. Und wenn ich Deine Formel nachrechne erhalte ich negative delay Werte. Wie geht das denn?
// Arduino Mega 2560
int LED = 1;
int Pause;
void setup()
{
Serial.begin(9600);
DDRC = 255; // Port.C komplett Ausgang
PORTC = 255; // Port.C alle Ausgänge Ein - Funktionstest
delay(500);
PORTC = 0; // Port.C alle Ausgänge Aus
delay(500);
}
void loop()
{
// beschleunigen CW
for (int i=15; i>=0; i--)
{
PORTC = LED;
if (i > 0) {LED = LED << 1;}
if (LED > 128) {LED = 1;}
Pause = (sq(i)*5)+6;
delay(Pause);
// Serial.print(i); Serial.print(" ");Serial.print(Pause); Serial.print(" "); Serial.println(LED);
}
delay(200);
// abbremsen CCW
for (int i=0; i<=15; i++)
{
PORTC = LED;
if (i < 15) {LED = LED >> 1;}
if (LED < 1) {LED = 128;}
Pause = (sq(i)*5)+6;
if (i == 14) {Pause = Pause + 800;} // letzter Würfelumkippeffekt
delay(Pause);
// Serial.print(i); Serial.print(" ");Serial.print(Pause); Serial.print(" "); Serial.println(LED);
}
}