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]))