空循环内的空循环不起作用有什么作用?

问题描述

所以我这里有一个包含三种不同 LED 循环模式的程序,代码在 if 语句中,我注意到即使 if 语句在 void 循环中,它也不再循环。我试过在 void 循环中放置一个 void 循环,但它不起作用。我不能在一定程度上循环代码,因为当我尝试它并将数量设置为 50 个循环时,即使用户在第三个循环输入另一个输入,它也完成了所有 50 个循环。我是 arduino 的新手,非常感谢有关如何解决此问题的新信息。这是我的代码

int prevIoUsLED;

void setup(){
    Serial.begin(9600);
    Serial.println("Enter desired Pattern Number: ");
    for(int i=2; i<=9; i++){
    pinMode (i,OUTPUT);      
    }   


}

void loop(){
    if (Serial.available()){
        char serialdata = Serial.read();
        //Serial.print("You have entered Pattern  ");
        //Serial.println(serialdata);
        //Serial.print(" in BINARY:");
        //Serial.println(serialdata,BIN);

        if (serialdata == '1'){
          
          Serial.println("LED Pattern 1 has been triggered!");
          
          //
          
            for(int ledPin =  2; ledPin<=9; ledPin++){
            
                digitalWrite(prevIoUsLED,LOW);
    
                digitalWrite(ledPin,HIGH);
    
                delay(200);
                prevIoUsLED = ledPin;    
            }
  
            for(int ledPin =  9; ledPin>=2; ledPin--){
    
                digitalWrite(prevIoUsLED,HIGH);
    
                delay(200);
                prevIoUsLED = ledPin;
    
            }

        } 
        
        if (serialdata == '2'){
          
          Serial.println("LED Pattern 2 has been triggered!");
          
          
          
            for(int ledPin =  2; ledPin<=9; ledPin++){    
    
                digitalWrite(ledPin,HIGH);    
                delay(700);
              }
          
        delay(3000);
        digitalWrite(2,LOW);
        digitalWrite(3,LOW);
        digitalWrite(4,LOW);
        digitalWrite(5,LOW);
        digitalWrite(6,LOW);
        digitalWrite(7,LOW);
        digitalWrite(8,LOW);
        digitalWrite(9,LOW);
        delay(1000);    
    
        }   
        
        if (serialdata == '3'){
          
          Serial.println("LED Pattern 3 has been triggered!");
          
          for (int k = 0; k<=5; k++){   //
          
            for(int ledPin =  2; ledPin<=9; ledPin++){
    
                digitalWrite(ledPin,HIGH);    
              }
  
            delay(200);
  
            for(int ledPin =  2; ledPin<=9; ledPin++){
    
                digitalWrite(ledPin,LOW);    
            }
  
            delay(200);
            
          }     //
    
        }   
      

    }

}

解决方法

尝试这样的事情。这可能不是一个确切的答案,但你可以得到一个想法。

if (serialdata == '1'){
 while(!Serial.available()) {
      if(ledpin==2){
        //for loop
        }
      if(ledpin==9){
        //for loop
        }
    }
} 
,

让我们从一些术语开始。

我尝试在 void 循环中放置一个 void 循环,但它没有 工作。

这句话没有多大意义。

每个 Arduino 草图都必须实现 void loop() {},它是一个名为循环的函数,它没有返回值 (void) 并且没有参数 (())。

当您启动 Arduino 时,它将调用 setup 一次,然后运行一个无限循环,在每次迭代中调用 loop

另一方面,循环是一种控制结构。有多种类型,例如 for 循环或 while 循环。但是它们都与函数 loop

没有任何关系

所以你不能把“空循环内的空循环”。

我在一定程度上无法让代码循环,因为当我尝试时 并将数量设置为 50 个循环,它完成了所有 50 个循环,即使 用户在第三个循环中输入了另一个输入

您不会在循环中更新用户输入。那么你怎么能期待回应呢? 如果您想提前中止循环,则必须经常读取循环中的用户输入。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...