Я использую Arduino Mega и python 3.7 в Windows 10 64-bit. Я пытаюсь заставить лампочку мигать, используя python и pyserial. Я хочу, чтобы лампочка оставалась включенной в течение некоторого времени, а затем выключалась. Я ввожу значения в программе Python Tkinter: https://pastebin.com/zkRmcP60 полный код. после ввода значений, которые я отправляю в Arduino через этот код:
import msgpack
import serial
arduionoData = serial.Serial('com3', 9600, timeout=1)
def sendlower(*args):
try:
global arduionoData
arduionoData.write(b"1")
while arduionoData.readline().decode() != "Send Next":
pass
first = int(firstdelay.get())
arduionoData.write(msgpack.packb(first, use_bin_type=True))
except ValueError:
print("Only Positive Integers")
def senduppper(*args):
try:
global arduionoData
arduionoData.write(b"2")
while arduionoData.readline().decode() != "Send Next":
pass
second = int(seconddelay.get())
arduionoData.write(msgpack.packb(second, use_bin_type=True))
except ValueError:
print("Only Positive Integers")
Программа Tkinter выполняет вышеуказанные функции, чтобы посетить Pastebin для всего кода.
Сначала я указываю режим, будь то задержка включения или изменение задержки выключения.
С этим кодом (программа установки и другой код опущены, пожалуйста, посмотрите в корзину для вставки.)
void readdelay(){
mode = Serial.parseInt();
if (mode == 1){
delay(200);
Serial.write("Send Next");
delay1 = Serial.parseInt();
}else if (mode == 2){
delay(200);
Serial.write("Send Next");
delay2 = Serial.parseInt();
}
}
void loop() {
if (Serial.available() > 0){
readdelay();
}
}
Прямо сейчас, если я отправлю любое положительное число в программу, оно либо выключит (когда я посылаю номер для задержки включения) индикатор полностью, либо включит его (когда я отправлю число для задержки выключения) , Я предполагаю, что всякий раз, когда Serial.parseInt();
функция получает неправильный тип ввода, она интерпретирует его как ноль.