я делаю код чтобы когда я выбираю цвет в color picker из модуля Tkinter, он отправлялся на порт Ардуино.
Вот мои коды:
Arduino:
#include <FastLED.h>
#define NUM_LEDS 53
#define DATA_PIN 6
CRGB leds[NUM_LEDS];
void setup() {
Serial.begin(9600);
FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
}
void loop() {
while (Serial.available() > 0) {
// look for the next valid integer in the incoming serial stream:
int red = Serial.parseInt();
// do it again:
int green = Serial.parseInt();
// do it again:
int blue = Serial.parseInt();
// look for the newline. That's the end of your sentence:
if (Serial.read() == '\n') {
red = constrain(red, 0, 255);
green = constrain(green, 0, 255);
blue = constrain(blue, 0, 255);
FastLED.setBrightness(255);
fill_solid( leds, NUM_LEDS, CRGB(red, green, blue));
FastLED.show();
}
}
}
Python:
from tkinter import *
from tkinter import colorchooser
import serial
import time
arduino = serial.Serial(port='COM3', baudrate=9600, timeout=.1)
def choose_color():
color_code = colorchooser.askcolor(title ="Choose color")
def write_read(x):
arduino.write(bytes(x, 'utf-8'))
time.sleep(0.05)
data = arduino.readline()
return data
root = Tk()
button = Button(root, text = "Select color",
command = choose_color)
button.pack()
root.geometry("300x300")
root.mainloop()
while 1:
color_code = choose_color(color_code[0])
color_result_rgb = ' '.join(str(int(x)) for x in rgb_tuple)
value = write_read(color_result_rgb)
time.sleep(1)
В командную строку ничего не выводится, и на порт ничего не отправляется, помогите исправить.