- brightness = 255.0 /(float)speed * millis() ;
- analogWrite(ledPin, brightness);
+ shift = drift;
+ brightness = 255.0 /(float)speed * (millis() + shift);
+ analogWrite(ledPin, brightness);
+
+ previousMillis = millis();
+ };
+}
+
+void Pwm::lUp(long speed, long drift) {
+ // Aumenta usanndo millis() con correzione luminosita' LED
+ // quindi senza bloccare il processore
+ // Viene usato un float, in alternativa un coseno
+
+ if (millis() != previousMillis) { // si potrebbe togliere
+ shift = drift;
+ brightness = 255.0 /(float)speed * (millis() + shift);
+ analogWrite(ledPin, lum(brightness));
+
+ previousMillis = millis();
+ };
+}
+
+void Pwm::Down(long speed, long drift) {
+ // Riduce linearmente la luminosita' usanndo millis()
+ // quindi senza bloccare il processore
+
+ if (millis() != previousMillis) {
+ shift = drift;
+ brightness = 255 - 255.0 /(float)speed * (millis() + shift) ;
+ analogWrite(ledPin, brightness);