Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
#!/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),
Ejemplo n.º 3
0
#!/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)