Я пытаюсь отправить int номер из Python на Arduino, используя PySerial, используя .write([data])
для отправки с Python и Serial.read()
или Serial.readString()
для получения на Arduino, затем .setPixelColor()
и .show()
для зажгите светодиод на матрице, положение которой соответствует int
, посылаемому Arduino (я использую Duopofun Neopixel Shield).
Но, похоже, он не работает должным образом, и я не могу использовать Serial Monitor, так как отправляю свои данные, так как порт будет занят.
Я попытался ввести число самостоятельно, используя Serial.readString()
, затем преобразовать строку в int и, наконец, вставить в мою функцию, которая отображает светодиод.
Когда я делаю это, он работает правильно, но когда я посылаю некоторые данные, все ранее светящиеся светодиоды внезапно отключаются, что может быть вызвано только сбросом платы Arduino, насколько я знаю.
Это код Python, он просто отправляет int, выбранный пользователем
import serial
a = int(input('Enter pixel position : '))
ser = serial.Serial("COM16", 9600)
ser.write([a])
И это часть программы Arduino, которая читает входящие данные.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(40, 6, NEO_GRB + NEO_KHZ800);
void setup() {
// put your setup code here, to run once:
pixels.begin();
Serial.begin(9600);
}
void loop() {
String a = Serial.readString();
int b = a.toInt();
pixels.setPixelColor(b, 30,30,30);
pixels.show();
Serial.println(a);
delay(1000);
}
Все светодиоды выключаются при отправке некоторых данных, кроме первого светодиода, положение которого соответствует 0, используемому в функции .setPixelColor()
.
Проблема в том, что светодиод должен загореться до соответствующего int, отправленного Python (например, загорится пятый светодиод для целого числа 4).