python - 使用 Python(Pygame、Pynput 或其他)将串行数据写入 Arduino 以控制 Helm 机

标签 python arduino pygame pyserial pynput

首先,我是 Python 的新手,但我正在尝试编写一个 Python 程序来将串行数据写入我的 Arduino 以控制伺服系统。我基本上是想让我的电脑键盘充当 Helm 机的 Controller 。该过程将如下所示:

  1. 一旦按下一个键, Helm 机就会开始向某个方向移动。
  2. 如果按住该键, Helm 机将继续移动
  3. 一旦松开按键, Helm 机就会停止移动。

我尝试过使用 Pygame 和 Pynput,但无法正常工作。我一直在使用 Pyserial 连接到 Arduino。

如有任何相关问题已在此处、帮助或其他链接中提出,我们将不胜感激。

最佳答案

最简单的方法是使用基本的串行 I/O。

我将这种设置用于我的数据记录器,偶尔需要 Arduino 根据数据或时钟采取行动。

示例:

假设您想要使用 USB 端口(例如在 RPi3 上),假设您想要发送一条命令,使 Arduino 发出两声长嘟嘟声。 (或者它可能会触发继电器,无论如何)代码看起来像这样:

Python 方面:

#!/usr/bin/python
import serial

首先打开端口:

(通常如图所示,但对于 CHG340 Arduinos 将更像 /dev/ttyACM0)

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

要从端口读取,请使用:

linein = ser.readline()

写入 Arduino 使用:

ser.write("A")

ARDUINO SIDE,(记住它将以 char 类型到达)

在设置中()

char cTMP;
int beePin=12;

Serial.begin(9600);
while (Serial.available()>0) cTMP=Serial.read();  // flush the buffer

然后在 loop() 的某处

if (Serial.available) > 0) {
    if (serIn=='A') {
      digitalWrite(beePin,HIGH); delay(2000); digitalWrite(beePin,LOW);
      delay(2000);
      digitalWrite(beePin,HIGH); delay(2000); digitalWrite(beePin,LOW);
    }

}

我倾向于坚持对 Arduinos 使用单字母命令


此设置的美妙之处在于,您还可以在 RPi3 上运行 Arduino IDE 进行 Arduino 编程,并且您可以使用 VNC 或 xrdp(使用 Windows 远程桌面或 remmina)远程访问它.

我称之为 Piduino。

关于python - 使用 Python(Pygame、Pynput 或其他)将串行数据写入 Arduino 以控制 Helm 机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49582983/

相关文章:

python - 转换 unicode 表情符号的字符串

c++ - 如何将大小为 64 的字节数组转换为 Arduino C++ 中的 double 值列表?

python - 如何在Python中将 Sprite 设置为矩阵中的数字

python - 在 python 中升级 SVG 图像而不损失其质量

java - 高效存储三元组

python - 更改Python中列表的起始索引?

python - groupby.agg 中的本福德定律测试函数

Arduino WiFi 扩展板在 WiFi.status() 停止工作

c - Arduino伺服结构 "does not name a type"

python - Pygame 声音延迟 - 与缓冲区/采样无关