Exemplo n.º 1
0
 def set_rgb(self, value=[], offset=0):
     """
     Sets (doesn't write out to IC) the given value in the local DC register. Values in 0-255.
     """
     if (offset + 3) <= self.numberof_leds:
         self.DCLevels[offset:offset + 3] = [self.clamp(value[i] >> 2, 0, 63) for i in range(3)]
         return True
     else:
         logger.warning("Whoopsie.. Cannot address over %i RGB LEDs." % self.numberof_RGBleds)
         return False
Exemplo n.º 2
0
    def fadeto(self, targetlevels=[], offset=0, steps=64, duration=0.2):
        """
        Fades linearly to new value, writes to internal register and IC directly.
        Usable for any number of LEDs, no specific colour handling.
        Foe now no delay nor timing is implemented.
        """
        count = len(targetlevels)
        if (offset + count) > self.numberof_leds:
            logger.warning("Whoopsie.. Cannot address over %i LEDs. Truncating input." % self.numberof_leds)
            count = self.numberof_leds - offset

        targetlevels = [self.clamp(x >> 2, 0, 63) for x in targetlevels]                # scale and boundary confinement
        _origlevels = self.DCLevels[offset:(offset + count)]                            # Save original levels
        _deltas = [targetlevels[i] - self.DCLevels[offset + i] for i in range(count)]   # Calculate deltas

        for i in range(steps + 1):                                                      # Do fade loop
            scaler = float(i)/steps
            self.DCLevels[offset:(offset + count)] = [int(_origlevels[i] + (_deltas[i] * scaler)) for i in range(count)]
            self.write_dc(self.DCLevels)
            sleep(duration/steps)