ajuda com laço for(resolvido)

Pessoal quando se cria um laço for dentro loop o laço nunca finalizará certo?
Qual a maneira de se criar um laço for que não fique em loop eterno, criei esse sketch com uma função fora do loop para testes, novamente o laço não finaliza segue.

char teste();
void setup(){
Serial.begin(9600);
}
void loop(){
teste();
}
char teste(){
for(int i=0; i<20; i++){
Serial.println(i);
delay(500);
}
}
}

luisandrade:
Pessoal quando se cria um laço for dentro loop o laço nunca finalizará certo?

Errado.

A funcão loop é chamada ciclicamente. O laco for corre enquanto a condicão desse laco for verdadeira. Quando a condicão deixar de ser verdadeira, o laco salta fora, mas continua a executar a loop().

Se executares isto, vais ver que o laco salta fora e recomeca de novo quando a loop corre de novo.

char teste();
void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.println("Iniciar teste");
  teste();
 
}
char teste(){
  for(int i=0; i<20; i++){
    Serial.println(i);
    delay(500);
    }
  }
}

Verdade me expressei mal , recapitulando, como eu impeço o laço for de inicializar novamente dentro do loop?

Coloca o que queres executar dentro do setup() e deixa loop() vazio

void setup() {
    Serial.begin( 9600 );
    teste( );
}

void loop() { }

void teste() {

    for ( int i = 0; i < 20; i++) {
        Serial.println( i );
        delay( 500 );
    }

}

neuron_upheaval:
Coloca o que queres executar dentro do setup() e deixa loop() vazio

Ou

char NaoQueroCorrerOFor = 0;

...

if (NaoQueroCorrerOFor == 0) {
    teste();
    NaoQueroCorrerOFor = 1;
    }