如何解决如何退出或中断 Arduino C 程序的“for 循环”
我对编程世界并不陌生,但在过去的两周里,我一直在使用 Arduino C++。我有一个奇怪的问题。一般来说,我有一个 7 段显示器,当条件为 01 时将用作递增计数器,当条件为 10 时用作递减计数器,00 用于重置为零,11 用于停止(在该数字中暂停)。>
问题是,当递增或递减计数器仍在计数并且我改变了状态时,7 段仍在计数!除此之外,当状态改变时,我已经打印了状态的状态,但没有任何反应。我想也许我的代码中有错误,我需要你们的一些建议。这是我的代码:
*仅供参考,我尝试使用break、return,也调用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"
}
}
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。