//copyright Adrian.oech
// Pin-Zuweisungen
#define LED_PIN 25 // Pin für die LED
const float pi = 3.14159265;
const int brightnessMax = 255; // Maximale Helligkeit
void setup() {
// LED-Pin als Ausgang setzen
pinMode(LED_PIN, OUTPUT);
// Startnachricht
Serial.begin(115200);
Serial.println("LED Sinus-Blinken gestartet (ohne PWM-Funktionen)!");
}
void loop() {
// Sinus-Animation für die LED-Helligkeit
for (int angle = 0; angle <= 360; angle++) {
// Berechne den Sinuswert (zwischen -1 und 1) und skaliere ihn auf 0-255
float brightness = (sin(angle * pi / 180) + 1) / 2 * brightnessMax;
// Simuliere PWM durch schnelles Ein- und Ausschalten der LED
analogWriteSim(LED_PIN, (int)brightness);
// Ausgabe im seriellen Monitor
Serial.print("Winkel: ");
Serial.print(angle);
Serial.print(" -> Helligkeit: ");
Serial.println((int)brightness);
// Kurze Verzögerung für den glatten Übergang
delay(10);
}
}
// Funktion zur Simulation von analogWrite ohne ESP32-spezifische Funktionen
void analogWriteSim(int pin, int value) {
int dutyCycle = map(value, 0, 255, 0, 1000); // Skaliere auf eine Periode von 1000 µs
int offTime = 1000 - dutyCycle;
// LED für "on"-Zeit einschalten
digitalWrite(pin, HIGH);
delayMicroseconds(dutyCycle);
// LED für "off"-Zeit ausschalten
digitalWrite(pin, LOW);
delayMicroseconds(offTime);
}