Duda sintaxis variable (pin, HIGH) [solucionado]

Que tal! buenas. primera vez en el foro y tengo una duda dado que de programador no tengo nada
en las variables del tipo
pinMode(pin,LEVEL) he visto que puedo incluir la variable LEVEL (HIGH or LOW) como un interger para hacerla variar y transformarla en dinamica;
pero es posible incluirle la variable pin como un array variable?esto dado que necesito que se repitan una serie de procesos dependiendo del ordenamiento de un array. adjunto el codigo propuesto pero nose si funcione…
adjunto sketch
mas abajo lo veran pero es basicamente lograr lo siguiente

digitalWrite(funcion**(que este valor varie)**, HIGH)

Gracias de antemano!

void engreis()
{
  int i = 0;
  int j = i+1;
  int k = 0;
  int q = 0;
 [b] int solenoideT;[/b]
  int tiemponecesario; //X averiguar
  int tiempoinicial= 0;
  int intervalotiempo; //X averiguar
  int diferencia1;
  int diferencia2;
  int diferencia3;
  int tiempofertilizacion = millis();
  //variables para normalizar los fertiriegos
  int vectorf[2][4]  = 
  {{CEST0, CEST1, CEST2, CEST3},{0,1,2,3}};
  int aux;  
  if (tiempofertilizacion - tiempofertilizacionanterior >= intervalofertilizacion); // cada 10 dias asi no coincide con la otra fertilizacion y vemos el balance antes que siga
  {
    tiempofertilizacionanterior = tiempofertilizacion;
    for(k =0; k<=2; k++)//ORDENA EL VECTOR
    { 
      for(i = 0;i<=3; i++) 
      {
        for (j=0; j<=4; j++)
        {
          if (vectorf[i][k]<vectorf[j][k]) //REVISAR SI ESTA OK
          {
            aux =vectorf[i][k];
            vectorf[i][k]=vectorf[j][k];
            vectorf[j][k]=aux;
          }
        }
      }
    }
    // ve las diferencias entre los tratamientos para luego poder multiplicar el tiempo
    diferencia1 = (vectorf[0][0]-vectorf[0][1]);
    diferencia2 = (vectorf[0][0]-vectorf[0][2]);
    diferencia3 = (vectorf[0][0]-vectorf[0][3]);
    //FERTIREGAMOS
    digitalWrite(solenoidefriego1, HIGH);
    digitalWrite(solenoidefriego2, HIGH);
    // abrimos la correspondiente
    digitalWrite[b](solenoideT[vectorf[1][0]])[/b], HIGH);
    digitalWrite(solenoideT(vectorf[2][0]), HIGH);
    digitalWrite(solenoideT(vectorf[3][0]), HIGH);
    tiempofertilizacion*diferencia1
    digitalWrite(solenoideT(vectorf[1][0]), LOW);
    tiempofertilizacion*diferencia2
    digitalWrite(solenoideT(vectorf[2][0]), LOW);
    tiempofertilizacion*diferencia3
    digitalWrite(solenoideT(vectorf3][0]), LOW);
  }

Dudo que eso te funcione,lo que si podrias hacer es asignar el retorno de una funcion del tipo int y usarlo en digitalWrite:

int valor = TuFuncion();
digitalWrite (valor , HIGH); // HIGH o LOW segun te interese

int TuFuncion() {
int retorno;

// Codigo que necesites cuyo resultado guardas en la variable retorno que ha de ser int

return retorno;
}

Siempre que lo que vaya como primer parámetro equivalga a un int, el compilador lo tragará. Es decir, en tu caso, jose, podrías poner también digitalWrite(mifuncion(x),high). Si la expresión mifuncion(x) devuelve un entero, no hay problema. Asímismo, por ejemplo la expresión digitalWrite(solenoideT(vectorf[2][0]), LOW); será correcta si solenoideT(vectorf[2][0]) devuelve un int. Si no es así, el compilador te devuelve un error.

Muchas gracias! Cuando termine el proyecto se los muestro!