python - Arduino单LED TypeError
问题描述
我有 ArduinoUNO,我使用 Python3。我想根据命令打开和关闭单个 LED。但我得到错误。
ON TypeError:不支持unicode字符串,请编码为字节:'H' OFF 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()
解决方案
可以在这里找到解释:
向 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 是可选的
推荐阅读
- java - rabbitmq 的同步发布
- docker - 如何将文件从 localhost 导入 Docker?
- fullcalendar - 是否可以在 v5 中仅使用开始时间来格式化短事件时间?
- node.js - 当某人使用机器人发布视频时向不和谐发送消息
- gitlab - 为管道设置工作流规则的问题
- networking - G(N,p) 网络图
- docker-compose - 使用 docker-compose 时 cassandra 和 influxdb 的连接错误
- android - getView 中的 Kotlin Android onClickListener 仅适用于边缘
- c++ - 编译 C++ 程序 (LANShare)
- c++ - 使用模板化函数参数类型名称调用函数