Olá sou novo com arduino e estava realizando um projeto simples, de quando o arduino(MEGA) receber um dado via bluetooth executar um loop. Porem ao colocar o void loop dentro do void loop responsável pelos dados ocorre o seguinte erro:
sketch_nov06a.ino: In function 'void loop()':
sketch_nov06a:14: error: a function-definition is not allowed here before '{' token
Cada sketch apenas pode ter 1 void loop(). No seu sketch esta função (função é o nome dado a este tipo de estruturas) está definido aqui:
void setup(){
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop(){ //<<<<< A Q U I
char caracter = Serial.read();
Sendo assim, não pode utilizar em mais local nenhum esta função.
Aquilo que quer fazer, na realidade, não é utilizar uma função loop, mas sim uma das seguintes estruturas de repetição (repetição ou ciclo em inglês escreve-se loop também):
for
while
do-while
Se quiser que um ciclo se repita para sempre, pode fazer:
while(1) {}
e colocar dentro das chavetas aquilo que quer repetir.
Depois desta breve explicação, se quiser que após receber o dado repetir para sempre o "pisca-pisca" do LED, pode fazer:
No entanto o teu erro vem do facto de estares a tentar definir uma funcao dentro de outra. Uma funcao e algo que tem de estar separado.
void loop(){ // aqui comeca a definicao da funcao loop.
char caracter = Serial.read();
if(caracter == 'a'){
void loop(){ // Tu aqui tentas definir a mesma funcao dentro de outra.
digitalWrite(led, HIGH);
delay(75);
digitalWrite(led, LOW);
delay(75);
}
}
delay(1000);
}
Isto nao quer dizer que o luis nao tenha razao. Apenas que aquele erro em especifico e provocado por este pormenor. Se definisses loop fora da funcao, terias um erro dizendo que havia uma definicao em duplicado ou algo do genero.