【问题标题】:Arduino single LED TypeErrorArduino单LED TypeError
【发布时间】:2019-02-24 16:10:42
【问题描述】:

我有 ArduinoUNO,我使用 Python3。我想根据命令打开和关闭单个 LED。但我得到了错误。

开启 TypeError:不支持 unicode 字符串,请编码为字节:'H' 离开 TypeError: 不支持 unicode 字符串,请编码为字节:'L'

我做错了什么? 这是我的代码:

import serial
import time


arduino = serial.Serial("COM3", 9600)

def onOffFunction():
    command = input("Type in something (on/off/bye): ");
    if command == "on":
         print ("The LED is ON")
         time.sleep(1)
         arduino.write('H')
         onOffFunction()
    elif command == "off":
        print ("The LED is OFF")
        time.sleep(1)
        arduino.write('L')
        onOffFunction()
    elif command == "bye":
        print ("Bye Bye!")
        time.sleep(1)
        arduino.close()
    else:
        print ("Sorry.. Try typing something else.")
        onOffFunction()

time.sleep(2)

onOffFunction()

【问题讨论】:

标签: python typeerror


【解决方案1】:

解释可以找here:

向 Arduino 写入数据也很容易(以下适用于 Python 2.x):

如果您还没有这样做,请导入序列号

ser = serial.Serial('/dev/tty.usbserial', 9600)

ser.write('5')

在 Python 3.x 中,字符串默认为 Unicode。发送数据时 Arduino,它们必须转换为字节。这可以通过 在字符串前面加上 b:

ser.write(b'5') # 前缀 b 对于 Python 3.x 是必需的,对于 Python 2.x 是可选的

【讨论】:

  • 现在的代码没有错误,但是 LED 闪烁并且与我的开/关代码功能不对应。我不知道可能出了什么问题。 ://
  • 编辑:我发现无论我在 Arduino IDE 上编写什么代码,它都会卡住并且不响应任何 python 代码。
  • @simeon9446 你问的不是一个具体的问题。您需要有人帮助您对设置进行故障排除。 Stackoverflow 不适用于此类事情,它是一个严格的 Q/A 站点。也许尝试在官方 Arduino 论坛上提问?我相信那里的许多人会很乐意提供帮助。祝你好运!
【解决方案2】:

添加前缀 b'(字节转换)有助于使代码无错误,但是,ArduinoUNO 不响应 Python3,而是响应 ArduinoIDE。

【讨论】:

    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多