Tastiera HID con Arduino UNO Rev 3

Mi scuso per essere stato esente dal post per tanto tempo ma avevo da studiare.. taaanto da studiare, allora: ho risolto tutti i problemi,ho ricreato il programma su consiglio di un mio prof, ovvero: crea un programma che sai usare,leggere e riconoscere.
a quel punto io ho creato questo:

int i;
uint8_t buf[8] = { 0 }; /* Keyboard report buffer */
uint8_t a[8]= {0,0,0,0,1,0,0,0};
uint8_t w[8]= {0,0,0,1,1,0,1,0};
uint8_t s[8]= {0,0,0,1,0,1,1,0};;
uint8_t d[8]= {0,0,0,0,0,1,1,1};;
uint8_t space[8]={0,0,1,0,1,1,0,0};;
uint8_t q[8]= {0,0,0,1,0,1,0,0};;


//QUA CI SONO LE PREMESSE

void setup()
{
    Serial.begin(9600);
  pinMode(6, INPUT);

  pinMode(7, INPUT);

  pinMode(8, INPUT);

  pinMode(9, INPUT);

  pinMode(10, INPUT);

  pinMode(11, INPUT);
}



//QUI C'è IL MAIN



void loop()

{
  char carattere[6];

  carattere[0] = digitalRead(6);
  carattere[1] = digitalRead(7);
  carattere[2] = digitalRead(8);
  carattere[3] = digitalRead(9);
  carattere[4] = digitalRead(10);
  carattere[5] = digitalRead(11);


  type(carattere);

}

// QUI INIZIA LA FUNZIONE CHE CONVERTE IN CHAR

void type(char *str)

{

  char *chp = str;
  while (*chp) {

      switch (*chp) {
        case '1':
          for(i=0;i<8;i++)
             { buf[i]= a[i];
              } // a
          break;
        case '2':
          for(i=0;i<8;i++)
             { buf[i]= w[i]; 
              } // w
          break;
        case '4':
          for(i=0;i<8;i++)
             { buf[i]= s[i]; 
               }// s
          break;
        case '8':
         for(i=0;i<8;i++)
             { buf[i]= d[i]; 
               }// d
          break;
        case '16':
          for(i=0;i<8;i++)
             { buf[i]= space[i];
              } // space
          break;
        case '32':
          for(i=0;i<8;i++)
             { buf[i]= q[i]; 
               }// q
          break;

        default:
          /* Character not handled. To do: add rest of chars from HUT1_11.pdf */
          //buf[2] = 0x37; // Period
          break;
      }
    }

    Serial.write(buf,8); // Send keypress
 for(i=0;i<8;i++)
             { buf[i]= 0;}
  }

adesso che mi sono chiarito le idee su alcune cose programmo e riprogrammo l'atmel abbastanza facilmente e velocemente... unico piccolo problema... il programma... non funziona.....premo un pulsante e non scrive...

qualche aiuto ?

tra pochi giorni ho l'esame D: