Newbie: problema nel creare libreria

Ciao a tutti, ho appena acquistato una Arduino Duemilanova e sono proprio alle prime armi... stò cercando di utilizzare un semplice display 7 segmenti e per ora sono riuscito a fare uno sketch che stampa i numeri (in hex) da 0 a F in sequenza. Ora il mio intento sarebbe quello di creare una libreria in modo che l'eventuale riutilizzo di questo programma sia immediato.Ho quindi creato i due file *.h e *.cpp e ho compilato il tutto... all'interno della mia libreria ho copiato le due funzioni utilizzate nells sketch precedente tra cui una chiamata test() che non fa altro che accendere e spegnere tutti i segmenti a distanza di mezzo secondo.
Il problema è che utilizzando la libreria e lanciando questa funzione i segmenti si illuminano a caso (alcuni con una luce meno intensa).

L'idea che mi sono fatto è che a causa di qualche errore nella libreria i pin non vengono impostati come OUTPUT, ma è solo un'ipotesi senza fondamento... vi posto i due file della libreria nella speranza che qualcuno possa aiutarmi:

_7Seg.h

#ifndef _7Seg_h
#define _7Seg_h

#include "WProgram.h"

class _7Seg
{
  public:
    _7Seg();
    void print(int n);
    void test();
  private:
    int pins[];
};

#endif

_7Seg.cpp

#include "WProgram.h"
#include "_7Seg.h"

_7Seg::_7Seg()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);

  pins[0] = 2;      
  pins[1] = 3;
  pins[2] = 4;
  pins[3] = 5;
  pins[4] = 6;
  pins[5] = 7;
  pins[6] = 8;      

}

void _7Seg::print(int n)
{
  byte numbers[16][7] = {
  {0,0,0,0,0,0,1},  // 1
  {1,0,0,1,1,1,1},  // 0
  {0,0,1,0,0,1,0},  // 2
  {0,0,0,0,1,1,0},  // 3
  {1,0,0,1,1,0,0},  // 4
  {0,1,0,0,1,0,0},  // 5
  {0,1,0,0,0,0,0},  // 6
  {0,0,0,1,1,1,1},  // 7
  {0,0,0,0,0,0,0},  // 8
  {0,0,0,0,1,0,0},  // 9
  {0,0,0,1,0,0,0},  // A
  {1,1,0,0,0,0,0},  // B
  {0,1,1,0,0,0,1},  // C
  {1,0,0,0,0,1,0},  // D
  {0,1,1,0,0,0,0},  // E
  {0,1,1,1,0,0,0}};  // F

  for (int i=0 ; i<7 ; i++)
   digitalWrite(pins[i], numbers[n][i]);
}

void _7Seg::test()
{
  for (int i = 0; i < 7; i++)          
     digitalWrite(pins[i], 0);
  delay (500);
  for (int i = 0; i < 7; i++)  
     digitalWrite(pins[i], 1);
  delay (500);
}

Nessuno può aiutarmi??