Для связи с платой Arduino с компьютера Windows необходимо установить PySerial .См. Инструкции по установке PySerial на вашем компьютере: Веб-сайт PySerial
И убедитесь, что вы установили правильный драйвер последовательного порта для вашей платы.Это должно быть установлено с вашей платой программного обеспечения.Но, если вам нужно сделать это вручную, вот две ссылки, которые могут быть полезны: Инструкции для драйвера Sparkfun и Инструкции для драйвера Arduino
Затем убедитесь, чтовы используете правильный ком-порт.Запустите вашу arduino IDE, загрузите вашу программу в arduino, а затем в меню Tool (в IDE) установите com-порт и запустите последовательный монитор.Затем на последовательном мониторе введите 's' и убедитесь, что вы видите свет и сообщения о выключении.
Вот ваши коды arduino и python, сведенные к минимальному набору инструкций для демонстрации вашего примера.плюс оператор println () (в коде arduino) для отображения полученных символов в шестнадцатеричном виде.Это утверждение отладки поможет вам разобраться с переводами строки и т. Д. При разработке кода.
Коды, перечисленные здесь, работают на моей плате и на машине Linux после изменения номера контакта для реле и устройства.название для порта.Функция close () закомментирована только для того, чтобы показать вам, что она работает без этой строки.
На arduino:
#include <stdlib.h>
char serial;
#define RELAY1 7
void setup()
{
Serial.begin(9600);
pinMode(RELAY1, OUTPUT);
}
void loop()
{
if(Serial.available() > 0)
{
serial = Serial.read();
Serial.println( serial, HEX);
if (serial=='s')
{
digitalWrite(RELAY1,0);
Serial.println("Light ON");
delay(2000);
digitalWrite(RELAY1,1);
Serial.println("Light OFF");
delay(2000);
}
}
}
Код Python:
import time
import serial
def foo():
print("sent")
ardu= serial.Serial('/dev/ttyACM0',9600, timeout=.1)
time.sleep(1)
ardu.write('s'.encode())
time.sleep(1)
#ardu.close()
foo()