Python 连载,貌似没看。 Raspberry Pi 0 到 Arduino

Python Serial Writing but seemingly not reading. Raspberry Pi 0 to Arduino

我在使用 RPI0 上的 python 脚本 运行 从 Arduino 读取串行输入时遇到问题。我知道 Arduino 的代码是正确的,因为一切都按预期工作,通过 Arduino 软件中的内置串行监视器与 Arduino 交互(发送代码 a10(代码驱动继电器高电平),Arduino 发回 11(基本上询问多长时间) ,发送代码 b5,Arduino 将引脚保持高电平 5 秒(b5))。

然而,当我尝试使用 pyserial 模块读取 python 中的任何串行输入时,没有任何反应。我知道它确实成功地将代码发送到 arduino,因为当我用 ser.write("a10b5").

重写 python 脚本时,它会在指定的秒内保持引脚高电平

串行连接不是 USB。我正在使用跨接线,在它们之间使用电压转换器,使用 Arduino 和 Pi 的 GPIO TX 和 RX 引脚。

代码如下:

import time
import serial

ser = serial.Serial(
        port='/dev/ttyAMA0',
        baudrate = 9600,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout=None
)


print("sending data over serial now")
ser.write("a10") #a10 is relay HIGH code

while True:
        x = ser.read()
        if  x == 11:    ##arduino code 11(asking for how long)
                print("recieved code 11")
                print("arduino recieved relay HIGH code and is waiting for time to hold relay for")
                print("sending time now")
                ser.write('a5') # 5 seconds
                time.sleep(1)
        if x == 13:     #arduino code 13(water success)
                print("recieved code 13")
                print("arduino reports watering complete")
        x = 0    ##this is to clear the variable every loop. Not sure if it's needed

这是一个简单的连续剧 reader 我从网上下载的。在第二个终端中打开它并 运行 同时使用我自己的脚本它实际上会像往常一样从 arduino 业务中读取代码。

#!/usr/bin/env python
import time
import serial
ser = serial.Serial(
 port='/dev/ttyAMA0',
 baudrate = 57600,
parity=serial.PARITY_NONE,
 stopbits=serial.STOPBITS_ONE,
 bytesize=serial.EIGHTBITS,
 timeout=1
)
while True:
 x=ser.readline()
 print x

什么给了?

回答我自己的问题。在我使用的arduino代码中

Serial.println(whatevergoeshere)

而不是

Serial.print(whatevergoeshere)

所以 arduino 在 arduino 串行控制台和 python 脚本未打印的每个串行行的末尾发送'\n'。将 python 中的 IF 语句更新为

if x == "11\n":

问题已解决,一切正常。