Загрузка данных


#include <Servo.h>

Servo s;
char cmd = 'S';

void setup() {
  Serial.begin(9600);
  s.attach(5);
  s.write(90);
  pinMode(8, OUTPUT); pinMode(9, OUTPUT); 
  pinMode(10, OUTPUT); pinMode(11, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    cmd = Serial.read();
    
    // Выполняем действия только в момент прихода новой команды
    if (cmd == 'F') { 
      s.write(90);  
      digitalWrite(8, HIGH); digitalWrite(9, HIGH); 
      digitalWrite(10, LOW);  digitalWrite(11, LOW); 
    }
    else if (cmd == 'B') { 
      s.write(90);  
      digitalWrite(8, LOW);  digitalWrite(9, LOW);  
      digitalWrite(10, HIGH); digitalWrite(11, HIGH); 
    }
    else if (cmd == 'R') { 
      s.write(135); 
      digitalWrite(8, HIGH); digitalWrite(9, HIGH); 
      digitalWrite(10, LOW);  digitalWrite(11, LOW); 
    }
    else if (cmd == 'L') { 
      s.write(45);  
      digitalWrite(8, HIGH); digitalWrite(9, HIGH); 
      digitalWrite(10, LOW);  digitalWrite(11, LOW); 
    }
    else if (cmd == 'S') { 
      s.write(90);  
      digitalWrite(8, LOW);  digitalWrite(9, LOW);  
      digitalWrite(10, LOW);  digitalWrite(11, LOW); 
    }
  }
}


import serial
import time

try:
    ser = serial.Serial('COM3', 9600, timeout=1)
    time.sleep(2)
except:
    print("Ошибка подключения к COM-порту")
    exit()

print("Соединение установлено. Нажимайте клавиши для управления.")

while True:
    # Запрос ввода одной буквы
    cmd = input("Команда (F/B/L/R/S/Q для выхода): ").strip().upper()
    
    if cmd == 'Q':
        ser.write(b'S') # Останавливаем робота перед выходом
        ser.close()
        break
    elif cmd in ['F', 'B', 'L', 'R', 'S']:
        ser.write(cmd.encode())