我一直在为一项学校作业工作,该作业需要制作一个程序,连接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:
别客气。我找到了解决办法!!我使用了库线程中的线程
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()
相关问题 更多 >
编程相关推荐