A função reverte funciona dentro da função, os valores aparecem certos, porém quando retorna os valores parecem aleatórios.
bool debug=1;
void printDebug(String frase){
if(debug){
Serial.println(frase);
}
}
String escreveLista(byte lista[],byte tamanho){
String retorno="[";
for(byte i=0;i<tamanho;i++){
retorno+=String(lista[i])+(i<tamanho-1?',':']');
}
return retorno;
}
byte* reverte(byte lista[],byte tamanho){
byte listaReversa[tamanho];
for(byte i=tamanho;i>0;i--){
listaReversa[i-1]=lista[tamanho-i];
}
printDebug("Lista: "+escreveLista(lista,8)+", reversa: "+escreveLista(listaReversa,8)+'.');
return listaReversa;
}
void Escada(byte primeirosLeds[],byte segundosLeds[],int tempo,bool estado,byte tamanho){
printDebug("Escada dos leds: "+escreveLista(primeirosLeds,tamanho)+" e "+escreveLista(segundosLeds,tamanho)+" para: "+Estado(estado)+'.');
for(short i=0;i<tamanho;i++){
printDebug("\tColocando portas: "+String(primeirosLeds[i])+" e "+String(segundosLeds[i])+" para: "+Estado(estado)+'.');
digitalWrite(primeirosLeds[i],estado);
digitalWrite(segundosLeds[i],estado);
Espera(tempo);
}
}
void setup(){
byte leds[]={13,12,11,10,9,8,7,6,5,4,3,2,22,24,26,28,30,32,34,36,37,39,41,43,45,46,47,48,50,52};
for(byte i=0;i<sizeof(leds);i++){
pinMode(leds[i],OUTPUT);
}
Serial.begin(115200);
}
byte ledsAmarelos2[]={22,24,26,28},
ledsAmarelos3[]={30,32,34,36},
ledsAmarelos4[]={39,41,43,45},
ledsAmarelos1[]={46,48,50,52},
todosAmarelos[]={46,48,50,52,22,24,26,28,30,32,34,36,39,41,43,45,46,48,50,52},
primeiraMetadeAmarelos[]={46,48,50,52,22,24,26,28},
segundaMetadeAmarelos[]={30,32,34,36,39,41,43,45,46,48,50,52}
void loop(){
byte* reverso=reverte(segundaMetadeAmarelos,8);
printDebug("Lista Reversa: "+escreveLista(reverso,8));
Escada(primeiraMetadeAmarelos,reverso,500,0,8);
}
Funcoes.ino (4.42 KB)
FuncoesListas.ino (467 Bytes)
re-aprendendo.ino (2.74 KB)