From: eaman Date: Mon, 9 Jan 2017 01:08:34 +0000 (+0100) Subject: PWM con float / coseno X-Git-Url: http://git.piffa.net/web?a=commitdiff_plain;h=0a29fddb5e1ffdf64f5a06e84287895b402914ad;p=sketchbook_andrea PWM con float / coseno --- diff --git a/.gitignore b/.gitignore index 88adc95..eaa5cc6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ libraries/aero/ *.swp *Makefile *tags +libraries/LedControl/ diff --git a/libraries/common/common.cpp b/libraries/common/common.cpp index 889c749..d9c0233 100644 --- a/libraries/common/common.cpp +++ b/libraries/common/common.cpp @@ -155,13 +155,12 @@ Pwm::Pwm(int pin) void Pwm::Up(long speed) { // Aumenta progressivamente la luminosita' usanndo millis() // quindi senza bloccare il processore + // Viene usato un float, in alternativa un coseno - analogWrite(ledPin, brightness); // La funziona analogWrite utilizza il PWM - // a 8 bit integrato nel MCU: simula un serie di valori intermedi - // nell'intervallo discreto con minimo 0 (spento) e massimo 255 (acceso). + if (millis() != previousMillis) { // si potrebbe togliere + brightness = 255.0 /(float)speed * millis() ; + analogWrite(ledPin, brightness); - if ((millis() - previousMillis) > speed / 256) { - brightness++; // Incrementiamo la luminosita' previousMillis = millis(); }; } @@ -170,26 +169,18 @@ void Pwm::Down(long speed ) { // Riduce progressivamente la luminosita' usanndo millis() // quindi senza bloccare il processore - analogWrite(ledPin, brightness); // La funziona analogWrite utilizza il PWM - // a 8 bit integrato nel MCU: simula un serie di valori intermedi - // nell'intervallo discreto con minimo 0 (spento) e massimo 255 (acceso). + if (millis() != previousMillis) { + brightness = 255 - 255.0 /(float)speed * millis() ; + analogWrite(ledPin, brightness); - if ((millis() - previousMillis) > speed / 256) { - brightness--; // Incrementiamo la luminosita' previousMillis = millis(); }; } void Pwm::UD(long speed ) { // Aumenta e riduce in sequenza la luminosita' usanndo millis() - if ((millis() - previousMillis) > speed / 512) { - brightness = brightness + increment; // Incrementiamo la luminosita' - previousMillis = millis(); - analogWrite(ledPin, brightness); - if (brightness == 0 || brightness == 255) { // Reverse direction - increment = -increment ; - }; - }; + brightness = 128 + 127 * cos(2 * PI / speed * millis()); + analogWrite(ledPin, brightness); }