gpt4 book ai didi

python - 使用 python arduino 移动伺服

转载 作者:行者123 更新时间:2023-12-04 10:11:50 28 4
gpt4 key购买 nike

在这里,我试图用 Tkinter 制作的 slider GUI 控制我的 sg90 伺服,并将 slider 的当前值通过串行发送到 Arduino。现在的问题是,每当我将 slider 从 72 快速移动到 77 时,它在串行监视器中显示的值是 7374757677。

这是python代码:

from tkinter import *

screen = Tk()
screen.geometry("400x400")

#some commands for arduino
import serial
uno = serial.Serial('/dev/ttyACM0', 9600)

def servocontrol(var):
uno.write(str(servo.get()).encode())

#defining the widget
servo = Scale(screen, from_=0, to=180, orient=HORIZONTAL, command=servocontrol)

#packing the widget
servo.pack()

#running the loop
screen.mainloop()

这里是Arduino代码:
#include <Servo.h>

Servo myservo;
String pypos;

int pos = 0;

void setup()
{
myservo.attach(9);
Serial.begin(9600);
}

void loop()
{
if(Serial.available() > 0) {
pypos = Serial.readString();
Serial.println("Angle: " + pypos);
Serial.println('\n');
int pyposint = pypos.toInt();
myservo.write(pyposint);
Serial.flush();
delay(15);
}
}

现在看看输出,

enter image description here

我不知道出了什么问题。如果有人可以帮助我,那将是一个很大的帮助。

最佳答案

如果有人也在寻找这个问题的答案,我找到了一个解决方法,这就是我所做的,

我没有通过编码将数据作为字符串发送,而是将数据作为字节格式的整数发送。

uno.write(bytes([var]))

之后它工作正常。

关于python - 使用 python arduino 移动伺服,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61299882/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com