如何通过 arduino 代码关闭或重置?
Posted
技术标签:
【中文标题】如何通过 arduino 代码关闭或重置?【英文标题】:How do I close or reset via arduino code? 【发布时间】:2019-07-08 04:17:34 【问题描述】:好吧,我想打印 arduino 中的数据,对吗?我已经尝试过使用 ser.close (),因为它在代码中并且它不起作用,当我重新启动 arduino 时,它是 printe,完成了按下 arduino 上的按钮的整个过程。我想知道如何重置或以其他方式关闭您启动代码的正确方式。
def getSerialData(self):
lines=b''
with serial.Serial('COM5',9600) as ser:
while (ser.inWaiting()<0): #Do while loop waiting for data
time.sleep(0.1)
tempo = 20.0
endtime=time.time()+tempo
time.sleep(tempo-15.0)
print("tempo")
while (time.time()<endtime):
print("entrou")
time.sleep(0.1)
line = ser.readline()
#line = line.encode("utf-8")
lines += line
#lines += bytes(line, 'utf-8')
ser.close()
print("saiu")
lin = lines.split()
print(lin)
【问题讨论】:
您想通过 Python 脚本软重置您的 Arduino 板吗? 对了,你能帮帮我吗? 【参考方案1】:您可以选择重置您的 arduino 硬件
使用 1 根线连接到 RESET 引脚只使用软件
void(* resetFunc) (void) = 0;//在地址0声明复位函数 重置函数(); //调用重置
【讨论】:
【参考方案2】:如果您想使用 Python 脚本控制您的 Arduino 板,您需要首先建立串行通信,然后创建一个简单的协议以将您的命令从 Python 脚本发送到 Arduino。对于 Arduino 中的重置部分,有一些 ways 可以做到这一点,我更喜欢使用看门狗超时。
Arduino 代码:
#include <avr/wdt.h>
void setup()
MCUSR = 0; // clear out any flags of prior resets.
Serial.begin(9600);
// read a command from serial and do proper action
void read_command()
String command;
if (Serial.available())
command = Serial.readString();
Serial.print("Received Command: ");
Serial.println(command);
// do proper work with command
if (command == "RST")
Serial.println("Arduino is Reseting...");
// reset board
wdt_enable(WDTO_15MS); // turn on the WatchDog and don't stroke it.
for(;;)
// do nothing and wait for the eventual...
void loop()
// get new commands
read_command();
delay(1000);
Python 脚本:
import serial
from time import sleep
# remember to set this value to a proper serial port name
ser = serial.Serial('COM1', 9600)
ser.open()
# flush serial for unprocessed data
ser.flushInput()
while True:
command = "RST"
ser.write(command.encode())
"""
# use below code if you want to take commands from user
command = input("Enter your command: ")
if command:
command += "\r\n"
ser.write(command.encode())
"""
ser.flushInput()
sleep(3)
【讨论】:
以上是关于如何通过 arduino 代码关闭或重置?的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 USB 向 Arduino 发送/接收数字来控制电机