簡體   English   中英

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 返回到初始 state。 這很奇怪,因為它與 arduino IDE 完美配合。

我錯過了什么嗎?

剛剛解決了,顯然問題是

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

如果未讀取串行,則會出錯。 因此,要么刪除它,要么就我而言,我無法更改 arduino 端的任何內容,在 raspi boot tail -f /dev/ttyACM0 &上運行此命令並打開一個讀取端口

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM