Python не общается с Arduino через Serial - PullRequest
0 голосов
/ 18 мая 2019

Я пытался отправить некоторые последовательные данные с python на мой Arduino и включить / выключить светодиод, над последовательным монитором Arduino IDE, он работает нормально, но как только я пытаюсь сделать это через код Python, он выиграл 't работа

Вот код Arduino:


int LED = 7;
char serialData;

void setup() {
  pinMode(LED, OUTPUT); 
  Serial.begin(9600);
}

void loop() {

  serialData = Serial.read();


if(serialData == '1'){
  digitalWrite(LED, HIGH);
}

if(serialData == '2'){
  digitalWrite(LED, LOW);
}

}

А это код Python:

import serial
import time

ser = serial.Serial()
ser.baudrate = 9600
ser.port = 'COM5'

time.sleep(10)

ser.write("1")

Теперь, что он должен делать, когда я запускаю код Python, чтобы послать «1» через последовательный на Arduino, Arduino должен получить его и зажечь светодиод.

1 Ответ

0 голосов
/ 20 мая 2019

Я думаю, что ваш код Arduino в порядке, за исключением того, что вы просто ждете, пока не получите какой-либо ввод в последовательный порт (строка serialData = Serial.read();).Если это задумано, это нормально, но если нет, то вам следует рассмотреть проверку Serial.available () .

Основная проблема заключается в коде Python.Как описано в документации pyserial , вам необходимо открыть последовательный порт.Кроме того, вам следует рассмотреть возможность закрытия этого в конце кода (вам не нужно беспокоиться, если вы используете with, чтобы открыть последовательный порт, как описано здесь ).

Я добавил оператор for, чтобы вы могли визуализировать мигание на Arduino.

import serial
import time

ser = serial.Serial()
ser.baudrate = 9600
ser.port = 'COM5'

ser.open()

for i in range(10):
    ser.write("1")
    time.sleep(1)
    ser.write("2")
    time.sleep(1)

ser.close()
...