【问题标题】:Moving servo with python arduino使用 python arduino 移动伺服
【发布时间】:2020-04-19 05:15:42
【问题描述】:

在这里,我尝试使用 Tkinter 制作的滑块 GUI 控制我的 sg90 伺服,并通过串行将滑块的当前值发送到 Arduino。现在的问题是,每当我将滑块从 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);
  }  
}

现在看看输出,

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

【问题讨论】:

    标签: python tkinter arduino pyserial


    【解决方案1】:

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

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

    uno.write(bytes([var]))
    

    之后一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多