class APA102(Interface): def __init__(self, numLed, global_brightness=AAPA102.MAX_BRIGHTNESS, order='rgb', bus=0, device=1, max_speed_hz=8000000, endFrame=255): super(APA102, self).__init__(numLed) self._leds = AAPA102(numLed, global_brightness=global_brightness, order=order, bus=bus, device=device, max_speed_hz=max_speed_hz, endFrame=endFrame) try: self._power = LED(5) except: try: self._power = mraa.Gpio(12) self._power.dir(mraa.DIR_OUT) except: self._logger.info('Device not using gpiozero or mraa, ignore power') def setPixel(self, ledNum, red, green, blue, brightness): self._leds.set_pixel(ledNum, red, green, blue, brightness) def setPixelRgb(self, ledNum, color, brightness): self._leds.set_pixel_rgb(ledNum, color, brightness) def clearStrip(self): self._leds.clear_strip() def onStop(self): super(APA102, self).onStop() self.clearStrip() self._leds.cleanup()
class APA102(Interface): def __init__(self, hardware, global_brightness=AAPA102.MAX_BRIGHTNESS, order='rgb', bus=0, device=1, max_speed_hz=8000000, endFrame=255): super(APA102, self).__init__(hardware['numberOfLeds']) self._leds = AAPA102(hardware['numberOfLeds'], global_brightness=global_brightness, order=order, bus=bus, device=device, max_speed_hz=max_speed_hz, endFrame=endFrame) try: self._power = LED(5) except: try: self._power = mraa.Gpio(5) self._power.dir(mraa.DIR_OUT) except Exception as e: self._logger.info('Device not using gpiozero or mraa, ignore power: {}'.format(e)) self._hardware = hardware self._src = None if 'doa' in hardware and hardware['doa']: self._logger.info('Hardware is DOA capable') from libraries.seeedstudios.channel_picker import ChannelPicker from libraries.seeedstudios.source import Source lib = importlib.import_module('libraries.seeedstudios.' + hardware['doa']) klass = getattr(lib, 'DOA') self._src = Source(rate=hardware['rate'], channels=hardware['channels']) ch0 = ChannelPicker(channels=self._src.channels, pick=0) self._doa = klass(rate=hardware['rate']) self._src.link(ch0) self._src.link(self._doa) def setPixel(self, ledNum, red, green, blue, brightness): self._leds.set_pixel(ledNum, red, green, blue, brightness) def setPixelRgb(self, ledNum, color, brightness): self._leds.set_pixel_rgb(ledNum, color, brightness) def clearStrip(self): self._leds.clear_strip() def onStart(self): super().onStart() if self._doa: self._logger.info('Starting DOA') self._src.recursive_start() def onStop(self): super().onStop() self.clearStrip() self._leds.cleanup() if self._src: self._src.recursive_stop() def doa(self): if self._doa: try: return self._doa.get_direction() except: pass return 0