【问题标题】:Send data to Arduino on keypress Raspberry Pi在按键 Raspberry Pi 上向 Arduino 发送数据
【发布时间】:2015-03-28 23:30:55
【问题描述】:

我正在尝试制造一辆可以从我的 Raspberry Pi 驾驶的汽车 (Wild Thumper)。目前我正在通过 SSH 使用我的 Raspberry Pi。它应该向我的 Arduino 发送数据,以便它知道何时必须前进或何时转弯。

我尝试制作由 jQuery(Pi 上的 apache)调用的脚本并通过串行端口发送一个整数,但它需要延迟,这并不理想。 (例如 forwardStart.py:)

import serial
ser = serial.Serial('/dev/ttyACM0', 9600)
ser.open()
# here a delay is needed
ser.write('4') # go forward
ser.close()

为了解决这个问题,我尝试寻找一个可以读取我的键盘并发送正确整数的 Python 脚本。但是,所有的 keylistener 都需要显示并且不能通过 SSH 使用。

任何人都可以帮助我编写 Python 脚本或其他可行的想法吗?

谢谢!

【问题讨论】:

  • 您有什么特别的原因不想直接使用 RPi 的 GPIO 吗?
  • 因为汽车需要比覆盆子所能提供的电压更高的电压。为此,我使用了一个在 arduino 和汽车之间有电源的电机控制器。
  • 延迟应该不是问题。您应该在启动时只打开一次串行端口,以避免每次要发送命令时出现这种延迟。此外,每次您建立串行连接时,Arduino 都会重置(也许这就是您需要延迟的原因)
  • 是的,这就是我需要延迟的原因。但是为每个按键使用脚本不能保持串行端口打开。因此,我想要一个可以保持串口打开的非显示 python keylistener。

标签: python serial-port arduino raspberry-pi robotics


【解决方案1】:

您应该从here 开始阅读。这个想法类似于

import serial
ser = serial.Serial('/dev/ttyACM0', 9600)
ser.open()
# here a delay is needed

try:
    while 1:
        try:
            key = sys.stdin.read(1) # wait user input
            actionKey = key2action(key) # translate key to action
            ser.write(actionKey) # go forward
        except IOError: pass
finally:
    ser.close()

注意:这段代码会失败,它更像是伪代码来说明这个想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    相关资源
    最近更新 更多