arrays, constructores, instancias

Hola a la comunidad de Arduino.

Le expongo el problema: intento resolver un problema de arrays, tengo un programa realizado en OOP (prog.orientada a objeto) de la cual tiene una clase llamada luces, lo que quiero es hacer un array de pines de arduino y configurarlos como salidas, (en vez de hacerlo pin por pin, he preferido hacerlo con un bucle for).
Lo que yo no entiendo es como hacer esto con arrays ya que me quiero evitar hacerlo pin por pin
Agradecería todo tipo de ayuda =)

//------CLASE PARA LUCES----------------------------------------------------------------------------
class luces{

  int pines[5]; //array para 5 elementos
  int i;  //variable para el for

  public:
  luces(int ledPines[]){
    
    for(i=0; i<sizeof(pines); i++){     //se configuran los pines como salida
      pinMode(pines[i],OUTPUT);
    }
    
  }//end constructor


  void prueba(){                        //metodo para pobrar si se enciende los leds

    for(i=0; i<5; i++){
      digitalWrite(pines[i],HIGH);
      Serial.println(pines[i]);
    }
  }//end prueba
};//end class
//---------------------------------------------------------------------------------------------------------------------


int MyPines[] = {5,6,7,8,9};        //declaro lo que hay dentro del array

luces luz(MyPines);                 //creo objeto con el array

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

void loop(){

  luz.prueba();

}

Tienes dos opciones:

Crear el array pero de tipo byte.
Calcular en tamaño de esta manera:

sizeof(pines) / sizeof(int)

sizeof por sí solo retorna la cantidad de bytes que ocupa algo. En el caso de arrays, este resultado depende de tanto la capacidad en cantidad de elementos, como del tamaño del tipo de dato.

vaya, se me escapó ese "sizeof", en verdad ahí va un 5. Pero no, sigue sin resolverse.

La idea es muy sencillo, quiero ver por pantalla del serial monitor algo parecio a esto:

5
6
7
8
9
...

y que se me encienda los leds. De esta forma sabré que toda esta corelacion de arrays y constructores e instancias se ha realizado correctamente

Creo que el problema radica en que ni siquiera almacenas el parámetro del constructor al atributo de la clase.

luces(int ledPines[]){
    pines = ledPines; // <---- esto faltaba.
    for(i=0; i<sizeof(pines); i++){     //se configuran los pines como salida
      pinMode(pines[i],OUTPUT);
    }
    
  }//end constructor

Si no me equivoco, el array que le pases por parámetro puede ser de un tamaño arbitrario; por lo tanto, si le pasas uno de menos de 5 elementos, pueden haber problemas por el simple hecho de asumir que el tamaño siempre será de 5.

Hola.
Veo que han respondido mientras escribía, y además en sentido similar. No obstante, yo asignaría valores.
Creo que lo que ocurre es que se te ha olvidado asignar en el constructor los pines recibidos:

 public:
  luces(int ledPines[]){
    for(i=0; i<5; i++){     //se configuran los pines como salida
      pines[i]=ledPines[i]; // Esto es lo que creo que falta
      pinMode(pines[i],OUTPUT);
    }   
  }//end constructor

:open_mouth: oooohhh!! como una cosa tan obvia me ha dado problemas todo el día.
muchisimas gracias por esa linea. Es más esa línea va con un for tal que así:

public:
  luces(int ledPines[]){

    for(i=0; i<5; i++){     //se copian los arrays MyPines relacionado con ledPines en el array pines
      pines[i] = ledPines[i];
    }
    for(i=0; i<5; i++){     //se configuran los pines como salida
      pinMode(pines[i],OUTPUT);
    }
    
  }//end constructor