【问题标题】:Arduino restarts after serial input from Raspberry Pi从 Raspberry Pi 进行串行输入后 Arduino 重新启动
【发布时间】:2020-12-18 15:38:11
【问题描述】:

我在 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 &gt;&gt; /dev/ttyACM0,它给出了反应,但不到一秒钟,然后 arduino 返回到初始状态。这很奇怪,因为它可以完美地与 arduino IDE 配合使用。

我错过了什么吗?

【问题讨论】:

  • 我唯一想知道的是delay(delayTime); 应该有什么效果,如果你重复这些digitalWrites 是否会出现问题。如果您删除if (switchVal ==1 ){ ... } else { ... } 部分并在收到字符串时直接调用allowprohibit 会怎样? if(string.equals("allowed")) allowed(); else if(string.equals("error")) prohibit(); 在这种情况下,您也可以同时删除 delays。
  • @TedLyngmo 需要延迟,因为接收信号的系统已请求延迟。我已经在下面解决了......如此微不足道但花了我很多时间
  • "接收信号的系统已请求延迟" - 如果您执行我之前建议的操作,接收信号的系统将不会注意到延迟是否消除.它只会以 9600 bps 的速度输入 error 的速度切换引脚。

标签: c++ linux arduino raspberry-pi


【解决方案1】:

刚刚解决了,显然问题出在

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2019-05-27
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多