Python与Arduino串行通信,使用用户输入闪烁内置led,同时读取Arduino信号

2024-07-05 14:48:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在为一项学校作业工作,该作业需要制作一个程序,连接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并同时使其生效 可以从电脑上打开/关闭Arduino上的默认led(针脚13)。 如果您的程序在等待打开或关闭led的命令时阻止读取Pnigs,这是错误的 不准确的阅读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代码,它有两个函数,一个用于读取arduino信号,另一个用于打开和关闭led。如果我分别调用函数,它可以工作,但我需要一个代码在while循环中同时执行这两个函数。输出类似于:持续打印来自arduino的数据,同时我需要输入,输入1或0以切换led 平

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:

Tags: 程序dataledifherevar作业counter
1条回答
网友
1楼 · 发布于 2024-07-05 14:48:26

别客气。我找到了解决办法!!我使用了库线程中的线程

python代码:

导入序列号

导入时间

从线程导入线程

s=serial.serial(“COM3”,9600,超时=0)

def blink():

而1:

data=s.readline()

ping=data.decode()

打印(ping)

时间。睡眠(1)

def aan():

而1:

var=input()

s.write(变量encode())

如果name='main':

线程(目标=闪烁).start()

线程(target=aan).start()

相关问题 更多 >