Arduino 在来自 Raspberry Pi 的串行输入后重新启动

Arduino restarts after serial input from Raspberry Pi

我在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 returns 到初始状态。这很奇怪,因为它与 arduino IDE 完美配合。

我是不是漏掉了什么?

刚刚解决了,貌似问题出在

    Serial.print("I received: ");
    Serial.print(string);
    Serial.print("\n");

没有读串口会报错。因此,要么删除它,要么就像我的情况一样,我无法在 arduino 端更改任何内容 运行 raspi boot 上的此命令 tail -f /dev/ttyACM0 & 打开一个读取端口