用Python与Arduino进行串行通信,在使用用户输入的同时从Arduino信号中读取内置的LED灯闪烁。

问题描述 投票:0回答:1

我一直在为学校的一个作业工作,需要做一个程序来连接一个arduino来读取名为'Ping'的arduino信号,同时在读取用户输入的python文件时可以打开和关闭内置的led。我为此在网上搜索了2天,有什么解决办法吗?

作业2:从Arduino中读取Ping,并从你的笔记本电脑上切换一个led的开关.在你的Arduino上运行程序 "pingandled.inio".使用教程 https:/petrimaki.com20130428阅读-arduino-serial-ports-in-windows-7。编写一个程序(.py),从串行总线读取Ping,并同时使其可以从PC上打开或关闭Arduino上的默认led(13号针).如果你的程序在等待命令打开或关闭led时阻止读取Pnigs,这是不正确的。读取Pings应该总是继续!!! 使用互联网找到一个解决方案。

我们有一个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来切换ledping。

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:
python arduino pyserial blocking led
1个回答
0
投票

没关系,我知道了。我找到了解决方案! 我已经使用了库中的Thread。

python代码。

导入串行

输入时间

从线程导入线程

s = serial.Serial("COM3", 9600, timeout=0)

def blink():

while 1:

data = s.readline()

ping = data.decode()

print(ping)

time.sleep(1)

def aan():

while 1:

var = input()

s.write(var.encode())

如果 名称 == '':

': Thread(target = blink).start()

线程(target = aan).start()

© www.soinside.com 2019 - 2024. All rights reserved.