gpt4 book ai didi

python - 如何将值从 Arduino 发送到 Python,然后使用该值

转载 作者:太空狗 更新时间:2023-10-29 21:57:31 25 4
gpt4 key购买 nike

我正在构建一个机器人,该机器人使用 Python 进行远程控制,通过简单的 GUI 通过 Internet 发送控制消息。

我的部分代码运行良好,GUI 和控制系统,但我被卡住了。我正在尝试使用视差 ping 传感器从 Arduino Mega 获取到对象的距离信息。 ,并将该值发送到我的 Python 控制脚本以显示在远程 GUI 上。

我遇到的主要问题是如何将使用已经建立的 COM 端口的 Python 代码与 Arduino 集成,并发送消息告诉 Arduino 轮询 ping 传感器,然后发送到将接收的 Python 程序值,然后让我将该值插入到我的 GUI 中。

我已经有了控制 Arduino 的代码,它可以通过我简单的 GUI 运行。

import serial
ser = serial.Serial('/dev/ttyUSB0', 9600)

from PythonCard import model

class MainWindow(model.Background):
def on_SpdBtn_mouseClick(self, event):
spd = self.components.SpdSpin.value
def on_FBtn_mouseClick(self, event):
spd = self.components.SpdSpin.value
ser.write('@')
ser.write('F')
ser.write(chr(spd))
def on_BBtn_mouseClick(self, event):
spd = self.components.SpdSpin.value
ser.write('@')
ser.write('B')
ser.write(chr(spd))
def on_LBtn_mouseClick(self, event):
spd = self.components.SpdSpin.value
ser.write('@')
ser.write('L')
ser.write(chr(spd))
def on_RBtn_mouseClick(self, event):
spd = self.components.SpdSpin.value
ser.write('@')
ser.write('R')
ser.write(chr(spd))
def on_SBtn_mouseClick(self, event):
spd = self.components.SpdSpin.value
ser.write('@')
ser.write('S')
ser.write('0')
def on_PngDisBtn_mouseClick(self, event):
ser.write('~')
ser.write('P1')
ser.write('p2')

app = model.Application(MainWindow)
app.MainLoop()

我真正想做的是改进上面的代码并添加一个按钮来单击以告诉 Python 向 Arduino 发送消息以检查 ping 传感器并返回值。我非常熟悉 Arduino 代码,但我最近两周才开始玩 Python。

最佳答案

基本上,您只需向 Arduino 发送一个合适的命令,就像您已经在做的那样,然后等待 Arduino 发回一些东西;它的 python 端可能看起来像这样

ser.write('foo')
retval = ser.readline() # read a complete line (\r\n or \n terminated),
#or you could use read(n) where n is the number of bytes you want (default=1)
ping_data = retval.strip() # strip out the newline, if you read an entire line

当然,这会得到一个字符串,您可能希望将其转换为 int 或 float,以便稍后在计算中使用它(对字符串使用 int(ping_data) 或 float(ping_data),或者struct.unpack 以防它是一个字节序列,需要首先将其解包为正常的东西,但这完全取决于您如何表示传感器数据)。

关于python - 如何将值从 Arduino 发送到 Python,然后使用该值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118890/

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