python - 与 Arduino 的 Python 串行通信,使用用户输入闪烁内置 LED,同时读取 Arduino 信号
问题描述
我一直在为一项学校作业工作,该作业需要制作一个程序来连接 arduino 以读取名为“Ping”的 arduino 信号,同时从 python 文件读取用户输入可以切换内置 LED开启和关闭。我一直在使用这个 2 天在互联网上搜索解决方案?
作业 2:从 Arduino 读取 Ping 并从笔记本电脑打开/关闭 LED。在您的 Arduino 上运行程序“pingandled.ino”。使用教程https://petrimaki.com/2013/04/28/reading-arduino-serial-ports-in-windows-7/ 编写一个程序 (.py) 从串行总线读取 Ping 并同时使可以从 PC 上打开/关闭 Arduino 上的默认 LED(引脚 13)。如果您的程序在等待打开或关闭 LED 的命令时阻止读取 Pnig,这是不正确的。阅读 Ping 应始终继续!!!!使用互联网寻找解决方案。
我们有一个不允许更改的 arduino 代码。
enter code here: int incomingByte = 0;
int ledPin = 13;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
int counter = 0;
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available() == 0 and counter == 0)
{
Serial.print("Ping");
delay(10);
counter++;
}
else
{
incomingByte = Serial.read();
// say what you got:
if (incomingByte == 49) { // ASCII printable characters: 49 means number 1
digitalWrite(ledPin, HIGH);
} else if (incomingByte == 48) { // ASCII printable characters: 48 means number 0
digitalWrite(ledPin, LOW);
}
delay(10);
if (counter < 100)
{
counter ++;
}
else
{
counter = 0;
}
}
}
我有一个 python 代码,它有 2 个函数,一个用于读取 arduino 信号,一个用于打开和关闭 LED。如果我单独调用这些函数,它可以工作,但我需要一个代码在一个while循环中同时执行这两个函数。输出就像:不断地从arduino打印数据,同时我需要输入一个输入,输入1或0来切换led ping
enter code here: import serial
import time
s = serial.Serial("COM3", 9600, timeout=0)
def blink():
data = s.readline()
data = data.decode()
print(data)
time.sleep(1)
def aan():
var = input()
var = var.encode()
var = s.write(var)
while 1:
解决方案
没关系。我找到了解决方案!我使用了库线程中的线程。
蟒蛇代码:
导入序列号
进口时间
从线程导入线程
s = serial.Serial("COM3", 9600, timeout=0)
定义闪烁():
而1:
数据 = s.readline()
ping = data.decode()
打印(平)
时间.sleep(1)
定义 aan():
而1:
变量 = 输入()
s.write(var.encode())
如果名称== '主要':
线程(目标 = 闪烁).start()
线程(目标 = aan).start()
推荐阅读
- mybatis - 将 Pair 列表传递给 myBatis
- c++ - OpenGL程序不会显示任何对象?
- python - 从另一个时间字符串中减去一个时间字符串
- fuzzy-logic - 如何扩展 jfuzzylogic 库?
- javascript - DropDownItem doesn't load items after update(Javascript) partial view
- android - Can an Android application identify the test track within Google Play
- javascript - Input date format changing by itself and I don't know why
- git - git add throws warning "CRLF will be replaced by LF in
" - azure-devops - Securely Signing ClickOnce Applications in Azure DevOps Pipeline
- docker - Ansible-container push/deploy failure; cant push images to dockerhub