Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import struct
- import ctypes
- from time import sleep
- from serial import Serial
- LEDCOUNT = 30
- BAUDRATE = 115200
- data = ctypes.create_string_buffer(6)
- # magic word + led number + checksum which are recognized as valid by my adalight
- struct.pack_into(">3s", data, 0, "Ada")
- struct.pack_into(">H", data, 3, LEDCOUNT)
- HEADER = bytearray(data)
- HEADER[5] = HEADER[3] ^ HEADER[4] ^ 0x55
- # special header to set all leds to the same color (saves serial bandwidth)
- # requires special handling in the sketch
- ALLHEADER = ['A', 'd', 'a', 0xff, 0xff, 0x55]
- arduino = Serial('COM6', BAUDRATE)
- LEDBYTES = LEDCOUNT * 3 # r,g,b bytes
- LEDBUF = [0] * LEDBYTES # buffer
- def setLedColor(num, r, g, b):
- idx = num * 3
- LEDBUF[idx] = chr(r)
- LEDBUF[idx + 1] = chr(g)
- LEDBUF[idx + 2] = chr(b)
- def setAllLedsFast(r, g, b):
- arduino.write(ALLHEADER)
- arduino.write(chr(r))
- arduino.write(chr(g))
- arduino.write(chr(b))
- arduino.flushOutput()
- def setAllLeds(r, g, b):
- for idx in range(0, LEDCOUNT):
- setLedColor(idx, r, g, b)
- display()
- def display():
- arduino.write(HEADER)
- arduino.write(LEDBUF)
- arduino.flushOutput()
- def setStripColor(c):
- if (c <= 255):
- r = 255 - c
- g = c
- b = 0
- elif (c <= 511):
- r = 0
- g = 255 - (c - 256)
- b = c - 256
- else:
- r = c - 512
- g = 0
- b = 255 - (c - 512)
- setAllLedsFast(r, g, b)
- sleep(0.01)
- def checkColors():
- for c in range(0, 768):
- setStripColor(c)
- for c in range(0, 768):
- setStripColor(768 - c - 1)
- while 1:
- sleep(2) # wait for Arduiono initialization after reset
- setAllLeds(0x00, 0x00, 0x00)
- sleep(1)
- setAllLeds(0xff, 0x00, 0x00)
- sleep(1)
- setAllLedsFast(0x00, 0xff, 0x00)
- sleep(1)
- setAllLedsFast(0x00, 0x00, 0xff)
- sleep(1)
- checkColors()
- for i in range(0, 4):
- setAllLedsFast(0x00, 0x00, 0x00)
- LEDBUF = [0] * LEDBYTES
- sleep(1)
- for n in range(0, LEDCOUNT):
- if i % 2 == 0:
- LEDBUF = [0] * LEDBYTES
- if i % 4 == 0:
- setLedColor(n, 0xff, 0xff, 0xff)
- else:
- setLedColor(LEDCOUNT - n - 1, 0xff, 0xff, 0xff)
- else:
- setLedColor(n, 0x00, 0x00, 0xff)
- display()
- sleep(0.02)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement