All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.silverspoon.bulldog.devices.led.Led Maven / Gradle / Ivy

There is a newer version: 0.3.0
Show newest version
package io.silverspoon.bulldog.devices.led;

import io.silverspoon.bulldog.core.gpio.Pwm;
import io.silverspoon.bulldog.core.gpio.util.PwmController;
import io.silverspoon.bulldog.core.util.easing.Easing;
import io.silverspoon.bulldog.core.util.easing.EasingOptions;
import io.silverspoon.bulldog.core.util.easing.SineEasing;

public class Led {

   private Pwm pwm;
   private PwmController pwmController;
   private Easing defaultEasing;

   public Led(Pwm pwm) {
      this(pwm, new SineEasing());
   }

   public Led(Pwm pwm, Easing defaultEasing) {
      this.pwm = pwm;
      this.defaultEasing = defaultEasing;
      this.pwmController = new PwmController();
      pwm.setFrequency(10000.0);
      pwm.setDuty(0.0);
      pwm.enable();
   }

   public void fadeOut(int milliseconds) {
      fadeOut(milliseconds, defaultEasing);
   }

   public void fadeOut(int milliseconds, Easing easing) {
      pwmController.dutyTransition(pwm, 0.0, milliseconds, easing, EasingOptions.EaseOut);
   }

   public void fadeIn(int milliseconds) {
      fadeIn(milliseconds, defaultEasing);
   }

   public void fadeIn(int milliseconds, Easing easing) {
      pwmController.dutyTransition(pwm, 1.0, milliseconds, easing, EasingOptions.EaseIn);
   }

   public void fadeToBrightness(int milliseconds, double toBrightness, Easing easing) {
      pwmController.dutyTransition(pwm, toBrightness, milliseconds, easing, EasingOptions.EaseIn);
   }

   public void fadeToBrightness(int milliseconds, double toBrightness) {
      fadeToBrightness(milliseconds, toBrightness, defaultEasing);
   }

   public void setBrightness(double brightness) {
      pwm.setDuty(brightness);
   }

   public void on() {
      pwm.enable();
   }

   public void off() {
      pwm.disable();
   }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy