如何退出或中断 Arduino C 程序的“for 循环”

问题描述

我对编程世界并不陌生,但在过去的两周里,我一直在使用 Arduino C++。我有一个奇怪的问题。一般来说,我有一个 7 段显示器,当条件为 01 时将用作递增计数器,当条件为 10 时用作递减计数器,00 用于重置为零,11 用于停止(在该数字中暂停)。>

问题是,当递增或递减计数器仍在计数并且我改变了状态时,7 段仍在计数!除此之外,当状态改变时,我已经打印了状态的状态,但没有任何反应。我想也许我的代码中有错误,我需要你们的一些建议。这是我的代码

*仅供参考,我尝试使用breakreturn,也调用loop(),但没有任何反应

*saklar1 = switch1
*saklar2 = switch2

#include <SevSeg.h>

SevSeg sevseg;
const int saklar1 = 2;
const int saklar2 = 3;

void setup() {
  byte sevenSegments = 1;
  byte commonPins[] = {};
  byte sevenPins[] = {11,10,9,8,7,6,5,4};
  bool resistor = true;
  sevseg.begin(COMMON_CATHODE,sevenSegments,commonPins,sevenPins,resistor);
  sevseg.setBrightness(90);
    
  pinMode(saklar1,INPUT);
  pinMode(saklar2,INPUT);
  Serial.begin(9600);
}

void loop() {
  checking(digitalRead(saklar1),digitalRead(saklar2));
}

void checking(bool saklar1,bool saklar2){
  if (saklar1 == LOW && saklar2 == LOW) {
    setSevSeg(0);
  } else if (saklar1 == LOW && saklar2 == HIGH) {
    for (int i=0; i<=9; i++) {
      setSevSeg(i);
      if (saklar1 != LOW || saklar2 != HIGH) {
        Serial.println("STATE CHANGED"); //THIS LINE IS NOT EXECUTED OR PRINTED
        checking(digitalRead(saklar1),digitalRead(saklar2));
      }
    }
  } else if (saklar1 == HIGH && saklar2 == LOW) {
    for (int i=9; i>=0; i--) {
      setSevSeg(i);
      if (saklar1 != HIGH || saklar2 != LOW) {
        checking(digitalRead(saklar1),digitalRead(saklar2));
      }
    }
  } else if (saklar1 == HIGH && saklar2 == HIGH) {
    delay(100); //Stop
  }
}

void setSevSeg(int num) {
  sevseg.setNumber(num);
  sevseg.refreshdisplay();
  delay(500); //1 detik
}

解决方法

在下面的代码中,当传感器值超过阈值时,控件退出for循环。

参考:[https://www.arduino.cc/reference/en/language/structure/control-structure/break]

[
  {
    "order": "123","product": "456","invoice": "","Errors": {
      "Error": true,"Error Message": "invoice is null"
    }
  },{
    "order": "123","product": "","Error Message": "product is null,invoice is null"
    }
  }
]