Arduino演习和状态的问题

Arduino演习和状态的问题,arduino,state,Arduino,State,在代码的这一部分中,如果连续按下按钮超过2秒,我需要打开两个LED。我需要这个代码来进行complexer练习,但我不明白为什么它不能传递给etat_choix。(代码如下) 到目前为止,您已经做了哪些调试工作?为什么要混合使用bool和int类型?例如,为什么您有etat=etat_choix当etat是bool且etat\u choix是int时?显示如何分配按钮的循环的其余部分在哪里?首先,etat_choix不是一个变量,它只是为了简化代码的阅读和理解。(etat在法语中表示状态(应该翻

在代码的这一部分中,如果连续按下按钮超过2秒,我需要打开两个LED。我需要这个代码来进行complexer练习,但我不明白为什么它不能传递给etat_choix。(代码如下)


到目前为止,您已经做了哪些调试工作?为什么要混合使用
bool
int
类型?例如,为什么您有
etat=etat_choix
etat
bool
etat\u choix
int
时?显示如何分配
按钮的
循环
的其余部分在哪里?首先,etat_choix不是一个变量,它只是为了简化代码的阅读和理解。(etat在法语中表示状态(应该翻译))。我不明白你所说的“显示buttonin是如何分配的循环的其余部分在哪里”是什么意思。我正在尝试调试它。你有
const int etat_choix=1
bool etat=0并指定
etat=etat\u choix
。这就是我说的混合类型。虽然它可能真的有效,但没有意义
bool
用于值
true
false
(为了可读性)。关于您的循环,您显示的代码没有
循环()的结尾
}
,我也没有看到
按钮中有赋值的地方,所以我假设您没有显示所有的循环代码。如果您正在显示所有内容,那么从未分配
buttonin
这一事实就是一个问题。@潜伏者:我看到
const int buttonin=4和猜测混淆pin码和状态是另一个问题。但这只是一个猜测。
const int ledmode1 = 10;
const int ledmode2 = 11;

const int buttonin = 4; 
const int eteint = 0;
const int etat_choix = 1;

bool etat = 0;
bool debut = 0;
bool old_buttonin = 0;

unsigned long temps = 0;
unsigned long time1 = 0;

 
void setup()
{
  pinMode(ledmode1, OUTPUT);
  pinMode(ledmode2, OUTPUT);
  pinMode(buttonin,INPUT);
}

void loop() {
  temps = millis();
  if (etat == eteint){
    old_buttonin = buttonin;
    if (buttonin == HIGH and debut == 0) {
      time1 = millis();
    }
    if (buttonin == HIGH) {
     debut = 1;
    }
    else if (old_buttonin == HIGH and buttonin == LOW ){
      debut = 0;
    }
    if ( temps > time1 + 2000 and debut == 1) {
      etat = etat_choix;
      time1 = 0;
      debut = 0;
    }
  }
  else if (etat == etat_choix) {
    digitalWrite(ledmode1,HIGH);
    digitalWrite(ledmode2,HIGH);
    
  }