首页 > 解决方案 > 从 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 配合使用。

我错过了什么吗?

标签: c++linuxarduinoraspberry-pi

解决方案


刚刚解决了,显然问题是

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

如果未读取串行,则会出错。因此,要么删除它,要么就我而言,我无法在 arduino 端进行任何更改,在 raspi boot 上运行此命令tail -f /dev/ttyACM0 &,打开一个读取端口


推荐阅读