Связка wemos D1 mini и программы на python

[Правильная передача[][1]]Неправильная передачаТоде неправильная передача1Цель - подсветка в пк из 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 шт):

Автор решения: MBo

Вот пробую послать:

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 (данные в предпоследней строке):

введите сюда описание изображения

→ Ссылка