const byte input_pin = 3; // Pin 2 am ATtiny45 (PB3) const byte output_pin = 4; // Pin 7 am ATtiny45 (PB2) bool last_state = HIGH; unsigned long last_trigger_time = 0; const unsigned long min_interval = 50; // Mikrosekunden // Für Impulssteuerung bool pulse_pending = false; bool pulse_active = false; unsigned long pulse_start_delay_time = 0; unsigned long pulse_start_time = 0; const unsigned long pulse_delay = 20; // Mikrosekunden Verzögerung vor Impuls const unsigned long pulse_duration = 20; // Mikrosekunden Impulsdauer void setup() { pinMode(input_pin, INPUT); pinMode(output_pin, OUTPUT); digitalWrite(output_pin, LOW); } void loop() { bool current_state = digitalRead(input_pin); unsigned long now = micros(); // LOW → HIGH Übergang erkennen if (last_state == LOW && current_state == HIGH) { if (now - last_trigger_time > min_interval) { // Impuls vorbereiten mit Verzögerung pulse_pending = true; pulse_start_delay_time = now; last_trigger_time = now; } } // Impuls starten nach Verzögerung if (pulse_pending && (now - pulse_start_delay_time >= pulse_delay)) { digitalWrite(output_pin, HIGH); pulse_active = true; pulse_start_time = now; pulse_pending = false; } // Impuls beenden nach pulse_duration if (pulse_active && (now - pulse_start_time >= pulse_duration)) { digitalWrite(output_pin, LOW); pulse_active = false; } last_state = current_state; }