Example #1
0
	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 __init__(self, hardware, vid, pid):
        self._hardware = hardware
        super(RespeakerMicArrayV2,
              self).__init__(self._hardware['numberOfLeds'])

        self._leds = pixel_ring.find(vid=int(vid, 16), pid=int(pid, 16))

        if self._leds is None:
            raise InterfaceInitError(
                'Respeaker Mic Array V2 not found using pid={} and vid={}'.
                format(pid, vid))

        self._colors = self._newArray()

        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)
Example #3
0
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
class RespeakerMicArrayV2(Interface):
    def __init__(self, hardware, vid, pid):
        self._hardware = hardware
        super(RespeakerMicArrayV2,
              self).__init__(self._hardware['numberOfLeds'])

        self._leds = pixel_ring.find(vid=int(vid, 16), pid=int(pid, 16))

        if self._leds is None:
            raise InterfaceInitError(
                'Respeaker Mic Array V2 not found using pid={} and vid={}'.
                format(pid, vid))

        self._colors = self._newArray()

        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 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 setPixel(self, ledNum, red, green, blue, brightness):
        if ledNum < 0 or ledNum >= self._numLeds:
            self._logger.warning('Trying to access a led index out of reach')
            return

        index = ledNum * 4
        self._colors[index] = red
        self._colors[index + 1] = green
        self._colors[index + 2] = blue
        self._colors[index + 3] = brightness

    def setPixelRgb(self, ledNum, color, brightness):
        self.setPixel(ledNum, color[0], color[1], color[2], brightness)

    def clearStrip(self):
        self._colors = self._newArray()
        self.show()

    def show(self):
        self._leds.customize(self._colors)

    def setVolume(self, volume):
        self._leds.set_volume(volume)

    def setVadLed(self, state):
        if state == 1:
            self._leds.set_vad_led(state)
        else:
            self._leds.set_vad_led(0)

    def _newArray(self):
        return [0, 0, 0, 0] * self._numLeds

    def doa(self):
        if self._doa:
            try:
                return self._doa.get_direction()
            except:
                pass

        return 0