def run(self): """ run is called by the thread and calculates the pwm images """ global image_current, image_pwm_current, image_buffer, image_pwm_buffer while self.running: # check if the calculation is too slow if (image_current - IMAGE_BUFFER_LENGTH) >= image_pwm_current: # maybe raise an exception? print 'Buffer underrun!' if image_pwm_current < image_current: index = (image_pwm_current+1) % IMAGE_BUFFER_LENGTH for i in range(led.BOARDS): fastpwm.pwm_2bit_c(image_buffer[index], i, image_pwm_buffer[i][index]) # reverse buffer temp = led.PWM_IMAGE_SIZE/led.BOARDS/2 image_pwm_buffer_r[i][index] = image_pwm_buffer[i][index] #[:temp] + image_pwm_buffer[i][index][temp:] image_pwm_current += 1 else: time.sleep(0.01)
#!/usr/bin/env python import led import image from cython import fastpwm boards = led.init(find_all=True) buf = str(bytearray(led.PWM_IMAGE_SIZE/2)) #fastpwm.pwm_2bit_c(str(bytearray([0x0C,0x30,0xC3]*(64*344/4))), 0, buf) red = str(bytearray(([0]*16+[0]*16+[0]*16)*344)) green = str(bytearray(([0]*16+[0]*16+[0]*16)*344)) blue = str(bytearray(([0]*16+[0]*16+[0]*16)*344)) blue2 = str(bytearray(([0]*16+[0]*16+[255]*16)*344)) fastpwm.pwm_2bit_c(str(bytearray([0xC3,0x0C,0x30]*(64*344/4))), 0, red) fastpwm.pwm_2bit_c(str(bytearray([0x30,0xC3,0x0C]*(64*344/4))), 0, green) fastpwm.pwm_2bit_c(str(bytearray([0x0C,0x30,0xC3]*(64*344/4))), 0, blue) """ images = [ buf, buf, buf, buf, buf, buf, buf, buf, [0]*(led.PWM_IMAGE_SIZE/2), [0]*(led.PWM_IMAGE_SIZE/2), [0]*(led.PWM_IMAGE_SIZE/2), [0]*(led.PWM_IMAGE_SIZE/2), [0]*(led.PWM_IMAGE_SIZE/2), [0]*(led.PWM_IMAGE_SIZE/2), [0]*(led.PWM_IMAGE_SIZE/2), [0]*(led.PWM_IMAGE_SIZE/2),
#!/usr/bin/env python import led import time from cython import fastpwm dev = led.init() led.run(dev, [255] + [0]*63, timeout=2000) data = str(bytearray(led.PWM_IMAGE_SIZE/2)) img = bytearray(led.PWM_IMAGE_SIZE/2) for col in range(3): for j in range(16): for i, pixel in enumerate(img): img[i] = 0; for i, pixel in enumerate(img): if i % 48 == j*3: img[i] = 0x0C img[i+1] = 0x30; img[i+2] = 0xC3; print list(img[:48]) fastpwm.pwm_2bit_c(str(img), 0, data) print list(bytearray(data[:48])) led.run(dev, data, timeout=5000) time.sleep(0.1)