Связка wemos D1 mini и программы на python
[Цель - подсветка в пк из RGB(НЕ ARGB!!!) ленты. Из средств для реализации: сама лента, различные ардуинки(Nano, Uno, Leonardo, Mega, Wemos D1 Mini clone, NodeMCU v3), модуль на три транзистора и сам пк. Сообщений об ошибках нет нигде. При отправке строки в порт вручную(строка вида $255 255 255;) все работает. Была попытка сделать к подсветке прогу на Python, сама прога должна делать открывать выбор цвета, и позже преобразовывать строку из вида ((255, 255, 255), #FFFFFF) в строку вида $255 255 255;.
Пробовал решения похожих проблем с хабра и киберфорума, не помогли. Пробовал запускать на других версиях Python, не помогло. Код прилагается:
Python:
from tkcolorpicker import askcolor
import serial
s = askcolor((0, 255, 80))
strcol = ''.join(map(str, s))
strcol_list = strcol.split('(')
strcol = strcol_list[1]
strcol_list = strcol.split(')')
strcol = strcol_list[0]
strcol_list = strcol.split(',')
r = strcol_list[0]
gstr = strcol_list[1]
bstr = strcol_list[2]
glist = gstr.split(' ')
blist = bstr.split(' ')
g = glist[1]
b = blist[1]
strsend = ""
strsend += '$'
strsend += r
strsend += ' '
strsend += g
strsend += ' '
strsend += b
strsend += ';'
strbytes = strsend.encode('utf-8')
port = serial.Serial("COM4")
port.baudrate = 115200
port.timeout = 0
port.write(strbytes)
resp = port.readline()
d_resp = resp.decode('utf-8')
print(d_resp)
Arduino
#include <String.h>
#include "GParsingStream.h"
#define PARSE_AMOUNT 3 // число значений в массиве, который хотим получить
const int red = 12;
const int green = 14;
const int blue = 13;
int intData[PARSE_AMOUNT]; // массив численных значений после парсинга
void setup() {
Serial.begin(115200);
}
void loop() {
parsingStream((int*)&intData); // функция парсинга, парсит в массив!
if (dataReady()) { // если получены данные
for (byte i = 0; i < PARSE_AMOUNT; i++) { // выводим элементы массива
Serial.print(intData[i]); Serial.print(" ");
}
}
analogWrite(red, intData[0]);
analogWrite(green, intData[1]);
analogWrite(blue, intData[2]);
}
Кодилось всё для Wemos D1 Mini Clone, с ESP8266 Generic Module в платах в Arduino IDE
Ответы (1 шт):
Вот пробую послать:
import serial
strsend= '$255 255 255;'
strbytes = strsend.encode('utf-8')
ser = serial.Serial(port='COM1', baudrate=115200, bytesize=serial.EIGHTBITS, parity=serial.PARITY_EVEN, stopbits=serial.STOPBITS_ONE, timeout = 2 )
ser.open()
ser.write(strbytes)
ser.close()
И наблюдаю в AccessPort (данные в предпоследней строке):