#include <math.h>
using namespace std;
double berechneFunktion(double x) {
// return exp(-x * x); // Funktion f(x)=e^(-x^2) (anschwellende & abschwellende Beschleunigung)
return x; // Funktion f(x)=x (konstante Beschleunigung)
//Die Funktion gibt den Beschleunigungsverlauf an
}
double Umdrehungen = 8;
double Beschleunigung = 2; // Anzahl der Umdrehungen bis RPSmax erreicht ist
double RPMmax = 60; // maximale Drehzahl 1/min
double RPSmax = RPMmax / 60; // RotationsPerSeconds Umdrehung/Sekunde
double k = (Umdrehungen-2*Beschleunigung)*200; // Anzahl der Steps mit RPSmax
double startX = 0.01;
double endX = 1.01;
double deltaX = (endX-startX)/(200*Beschleunigung); // Schrittweite 200 entspricht einer Umdrehung
void setup() {
pinMode(5, OUTPUT);
}
void loop() {
for (double x = startX; x <= endX-deltaX; x += deltaX) {
double Drehzahl = RPSmax*berechneFunktion(x);
digitalWrite(5, HIGH);
delay(5/Drehzahl/2);
digitalWrite(5, LOW);
delay(5/Drehzahl/2);
}
for (double i = 0; i < k; i++) {
double Drehzahl = RPSmax;
digitalWrite(5, HIGH);
delay(5/Drehzahl/2);
digitalWrite(5, LOW);
delay(5/Drehzahl/2);
}
for (double x = (endX-startX); x > deltaX; x -= deltaX) {
double Drehzahl = RPSmax*berechneFunktion(x);
digitalWrite(5, HIGH);
delay(5/Drehzahl/2);
digitalWrite(5, LOW);
delay(5/Drehzahl/2);
}
delay(3000);
}