c++ - 从 Raspberry Pi 进行串行输入后 Arduino 重新启动
问题描述
我在arduino上运行了这段代码:
#include <SoftwareSerial.h>
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// pins!!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
const int delayTime=10;
const int pin_yes_gate=3;
const int pin_no_gate=5;
int switchVal =0;
void setup()
{
Serial.begin(9600); // Initialize serial port to send and receive at 9600 baud
pinMode(pin_yes_gate, OUTPUT);
pinMode(pin_no_gate, OUTPUT);
}
void loop()
{
if (switchVal ==1 ){
allow();
}else{
prohibit();
}
if ( Serial.available())
{
String string = Serial.readString();
string.trim();
Serial.print("I received: ");
Serial.print(string);
Serial.print("\n");
if(string.equals("allowed"))
{
switchVal=1;
}else if(string.equals("error"))
{
switchVal=0;
}
}
}
void allow(){
digitalWrite(pin_yes_gate,HIGH);
digitalWrite(pin_no_gate,LOW);
delay(delayTime);
}
void prohibit(){
digitalWrite(pin_yes_gate,LOW);
digitalWrite(pin_no_gate,HIGH);
delay(delayTime);
}
我正在写echo allowed >> /dev/ttyACM0
它给出的反应,但不到一秒钟,然后 arduino 回到初始状态。这很奇怪,因为它可以完美地与 arduino IDE 配合使用。
我错过了什么吗?
解决方案
刚刚解决了,显然问题是
Serial.print("I received: ");
Serial.print(string);
Serial.print("\n");
如果未读取串行,则会出错。因此,要么删除它,要么就我而言,我无法在 arduino 端进行任何更改,在 raspi boot 上运行此命令tail -f /dev/ttyACM0 &
,打开一个读取端口
推荐阅读
- asp.net-core - Authorization not working, It does not forbidden users to access my actions in asp.net core
- javascript - Updating this.state with setState doesn't rerender component
- ios - kotlin.UInt cannot be cast to kotlinx.cinterop.CValuesRef
- python - 带有重复标记的字符串的正则表达式
- javascript - jQuery handle any user action
- python - ForeignKey 不显示数据
- java - 仅在一项活动中获取数据的意图给出错误
- node.js - Create cookie from a function in nodejs
- reactjs - How to update the state for a custom component in React-Admin
- git - Git squash multiple commit versus reset to base commit