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


import tkinter as tk
import serial

try: ser = serial.Serial('COM3', 9600)
except: ser = None

root = tk.Tk()
root.title("CyberSteer AI")
root.geometry("400x400")
root.configure(bg="#2c3e50")
root.iconphoto(False, tk.PhotoImage(file="left.png"))  

img_u = tk.PhotoImage(file="up.png")
img_d = tk.PhotoImage(file="down.png")
img_l = tk.PhotoImage(file="left.png")
img_r = tk.PhotoImage(file="right.png")

def send(c):
    if ser: ser.write(c.encode())

fr = tk.Frame(root, bg="#2c3e50")
fr.place(relx=0.5, rely=0.5, anchor=tk.CENTER)

b_f = tk.Button(fr, image=img_u, text="Вперед", compound=tk.LEFT, width=100, height=50)
b_b = tk.Button(fr, image=img_d, text="Назад",  compound=tk.LEFT, width=100, height=50)
b_l = tk.Button(fr, image=img_l, text="Влево",  compound=tk.LEFT, width=100, height=50)
b_r = tk.Button(fr, image=img_r, text="Вправо", compound=tk.LEFT, width=100, height=50)

b_f.grid(row=0, column=1, pady=10, padx=10)
b_l.grid(row=1, column=0, pady=10, padx=10)
b_r.grid(row=1, column=2, pady=10, padx=10)
b_b.grid(row=2, column=1, pady=10, padx=10)

b_f.bind("<ButtonPress-1>", lambda e: send('F'))
b_f.bind("<ButtonRelease-1>", lambda e: send('S'))
b_b.bind("<ButtonPress-1>", lambda e: send('B'))
b_b.bind("<ButtonRelease-1>", lambda e: send('S'))
b_r.bind("<ButtonPress-1>", lambda e: send('R'))
b_r.bind("<ButtonRelease-1>", lambda e: send('S'))
b_l.bind("<ButtonPress-1>", lambda e: send('L'))
b_l.bind("<ButtonRelease-1>", lambda e: send('S'))

root.mainloop()
ардуино
#include <Stepper.h>
#include <Servo.h>

Stepper steps(2048, 8, 10, 9, 11);
Servo s;

void setup() {
  Serial.begin(9600);
  steps.setSpeed(15);
  s.attach(5);
  s.write(90);
}

void loop() {
  if (Serial.available() > 0) {
    char c = Serial.read();
    if (c == 'F') { s.write(90);  steps.step(150); }
    if (c == 'B') { s.write(90);  steps.step(-150); }
    if (c == 'R') { s.write(135); steps.step(150); }
    if (c == 'L') { s.write(45);  steps.step(150); }
    if (c == 'S') { s.write(90); }
  }
}