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