Lo primero, que parece que no existe una función, que de directamente el nº de elementos del array.
Lo segundo, es que si pides un elemento del array, con el puntero fuera de rango; en vez de dar error; da otro elemento del array; lo cual despista mucho. (En mi caso, en un array de 6 elementos, al pedirle el 7, devolvía el 5; y tan pancho).
Al final he conseguido que funcionase; no tiene mucha importancia, pero hace perder tiempo. Os dejo lo que he hecho por si a alguien le interesa.
Se trata de una serie de diodos LED, con el cátodo a diversos pines, y los ánodos todos juntos, y a través de una sola resistencia al positivo; no tiene mucho interes, los diodos no pueden funcionar simultaneamente, pero me viene bién para probar un teclado touch que estoy haciendo.
Código: Seleccionar todo
/*
Blink2
Una modificación de Blink para que parpadeen varios diodos asociados a varias salidas de arduino
Para mas información ver Blink.en arduino.cc
*/
int pinLed[] = {2, 3, 4, 5, 6, 7}; // Es un array que contiene los números de las salidas (pines conwectados a LEDs)
int elementos; // Esta variable tendrá el nº de elementos (pines) del array
void setup() {
elementos = sizeof(pinLed)/sizeof(pinLed[0]); // Se supone que averigua el nº de elementos
for (int n=0; n < elementos; n++) // Barre el array; inicializa los pines
{
pinMode(pinLed[n], OUTPUT);
digitalWrite(pinLed[n], HIGH);
}
}
void loop() {
for (int n=0; n < elementos; n++) // Barre todos los pines del array
{
digitalWrite(pinLed[n], LOW); // Enciende el LED n
delay(1000);
digitalWrite(pinLed[n] , HIGH); //Apaga el LED n
delay(1000);
}
}
Saludos.