无效循环内的无效循环不起作用。做什么?

Void loop inside a void loop doesn't work. What does?

所以我这里有一个程序具有三种不同的 LED 循环模式,代码在 if 语句中我注意到它不再循环,即使 if 语句在 void 循环中。我试过在 void 循环中放置一个 void 循环,但它不起作用。我不能在一定程度上让代码循环,因为当我尝试它并将数字设置为 50 次循环时,它完成了所有 50 次循环,即使用户在第 3 次循环中键入了另一个输入。我是 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,LOW);
    
                digitalWrite(ledPin,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
        }
    }
} 

让我们从一些术语开始。

I have tried putting a void loop inside the void loop but it does not work.

这句话没有多大意义

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

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

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

有任何关系

所以你不能把“空循环放在空循环里面”。

I can't have the code loop to a certain extent because when I tried it and set the number to 50 loops, it finished all 50 loops even if the user typed another input at the 3rd loop

您不更新循环内的用户输入。那么你怎么能期望回应它呢? 如果您想过早地中止循环,则必须经常读取循环中的用户输入。