Отправка команд на Arduino через Python

Отправляю команду на рутина для выставления всех сервоприводов в положение 90 градусов, ответа от устройства никакого. До этого писал на Arduno IDE всё работало.

import time
import datetime

from Project.Station.Connection.close import close_connection
from Project.Station.Connection.establishing import establishing_connection


def station_calibration():
    connection = establishing_connection()

    left_servos = [30, 32, 34, 36, 38, 40]
    right_servos = [31, 33, 35, 37, 39, 41]

    for servo in right_servos:
        command = f"#{servo}P1500T1000\n"
        connection.write(command.encode())
        print(f"[{datetime.datetime.now()}] Отправлена команда: {command.strip()}")

    for servo in left_servos:
        command = f"#{servo}P1500T1000\n"
        connection.write(command.encode())
        print(f"[{datetime.datetime.now()}] Отправлена команда: {command.strip()}")

    time.sleep(2)

    close_connection(connection)

Ответы (1 шт):

Автор решения: Revolucion for Monica

Конечно, вот как вы можете отправлять команды на Arduino из Python:

import serial
import time

def send_commands():
    # Укажите последовательный порт и скорость передачи данных (baudrate)
    port = '/dev/ttyUSB0'  # Замените на правильный последовательный порт вашей Arduino
    baudrate = 9600  # Убедитесь, что это тот же, что и в вашем скетче Arduino
    
    # Инициализация последовательного соединения
    ser = serial.Serial(port, baudrate)
    
    # Подождать, пока последовательное соединение будет готово
    time.sleep(2)
    
    # Отправка команд сервоприводам
    left_servos = [30, 32, 34, 36, 38, 40]
    right_servos = [31, 33, 35, 37, 39, 41]
    
    for servo in right_servos:
        command = "#{}P1500T1000\n".format(servo)
        ser.write(command.encode())
        print("Отправлено: {}".format(command.strip()))
    
    for servo in left_servos:
        command = "#{}P1500T1000\n".format(servo)
        ser.write(command.encode())
        print("Отправлено: {}".format(command.strip()))
    
    # Немного подождать перед закрытием соединения
    time.sleep(2)
    
    # Закрыть последовательное соединение
    ser.close()

# Вызов функции для отправки команд
send_commands()

Этот код использует библиотеку serial для установления соединения с Arduino через последовательный порт и отправки команд. Убедитесь, что вы правильно указали порт (port) и скорость передачи данных (baudrate), которые соответствуют вашему скетчу Arduino.

→ Ссылка