Versuch mal so:Können in dem Programm 2 alle Delay Funktionen ebenfalls durch millis() ersetzt werden? Müsste ich dann mehrere Timer laufen lassen?!
Die Funktion blinkfunction(int ticcount) kannst du jetzt so umbauen, wie du willst. Also in Abhängigkeit von ticcount die Led dimmen. Z.B.Code:#define TIMER_AUS -1 #define TIMER_AN 0 #define LED_PIN 9 #define TASTER_PIN 8 #define TICTIME 30 // 30 ms #define TICCOUNTMAX 100 void setup() { pinMode(LED_PIN, OUTPUT); pinMode(TASTER_PIN, INPUT); } void loop() { timer(); // tue was anderes } void timer() { static unsigned long tic = millis(); static int ticcount = TIMER_AUS; if(millis() - tic > TICTIME && ticcount >= TIMER_AN) // 30 ms vergangen und Timer gestartet? { tic = millis(); // nächsten 30ms Zyklus starten ticcount++; if (ticcount > TICCOUNTMAX) { // Timer fertig? ticcount = TIMER_AUS; digitalWrite(LED_PIN, HIGH); } else blinkfunction(ticcount); // Timer läuft noch -> blinkfunction() } if(digitalRead(TASTER_PIN)) // Taste betätigt? Timer startet (neu) ticcount = TIMER_AN; } void blinkfunction(int ticcount) // in 30 ms Zeitabständen aufgerufen { // ticcount wird jeden Aufruf um 1 erhöht digitalWrite(LED_PIN, LOW); }
if(ticcount < 32) analogWrite(ticcount*8-1);...







Zitieren

Lesezeichen