Following on the first part of the Blync hack, I want to be able to control the color from a terminal.
Let's create a simple protocol
Command | Input in byte | Output in byte |
---|---|---|
Default mode | 0..7: 0 (AUTO) | no output |
Get current RGB value | 0..7: 1 (GET) | 0..7: Red as [0..255] 8..15: Green as [0..255] 16..23: Blue as [0..255] |
Set RGB value | 0..7: 2 (SET) 8..15: Red as [0..255] 16..23: Green as [0..255] 24..31: Blue as [0..255] |
0..7: 1 (ACK) |
Here is the Arduino code.
And here is the demo code in Python using pyserial.
pip install pyserial
#!/usr/bin/env python3 from time import sleep import serial CMD_AUTO = 0 CMD_GET = 1 CMD_SET = 2 CMD_ACK = 1 if __name__ == "__main__": ser = serial.Serial('/dev/ttyACM0', 9600) for i in range(0, 256): ser.write(bytearray([CMD_SET, i, i, i])) assert ser.read(1)[0] == CMD_ACK ser.write(bytearray([CMD_GET])) print(ser.read(3)) ser.write(bytearray([CMD_AUTO]))