Tastiera ANALOGICA MULTITASTI (19 Tasti)

Ho realizzato una tastiera analogica a 19 tasti per le più svariate applicazioni.
Non mi ritengo un professionista del linguaggio C, tuttavia vi chiedo di migliorare il codice (anche se funziona perfettamente!) dal punto di vista della semplicità.
Ecco lo schema elettrico: http://mio.discoremoto.alice.it/recca

Ecco il codice:
int puls;
int cont = 19;
int Vpuls = {51, 103, 154, 204, 255, 305, 355, 406, 456, 508, 559, 612, 666, 720, 777, 835, 895, 959, 1023};
char matrice = {‘t’, ‘s’, ‘v’, ‘p’, ‘q’, ‘r’, ‘o’, ‘l’, ‘m’, ‘n’, ‘g’, ‘h’, ‘i’, ‘d’, ‘e’, ‘f’, ‘a’, ‘b’, ‘c’};
int a;
char tasto;

void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);

}

void loop() {
digitalWrite (13,LOW);
digitalWrite (12,LOW);
digitalWrite (11,LOW);
digitalWrite (10,LOW);
for (a = 1; a < 25; a++) puls = analogRead (0);
for (a = 0; a < 20; a++)
if (puls > (Vpuls[a]-25) && puls < (Vpuls[a]+25))
{tasto = matrice [a];}
switch (tasto) {
case ‘a’:
digitalWrite (13,HIGH);
digitalWrite (12,LOW);
digitalWrite (11,LOW);
digitalWrite (10,LOW);
break;
case ‘b’:
digitalWrite (13,LOW);
digitalWrite (12,HIGH);
digitalWrite (11,LOW);
digitalWrite (10,LOW);
break;
case ‘c’:
digitalWrite (13,HIGH);
digitalWrite (12,HIGH);
digitalWrite (11,LOW);
digitalWrite (10,LOW);
break;
case ‘d’:
digitalWrite (13,LOW);
digitalWrite (12,LOW);
digitalWrite (11,HIGH);
digitalWrite (10,LOW);
break;
case ‘e’:
digitalWrite (13,HIGH);
digitalWrite (12,LOW);
digitalWrite (11,HIGH);
digitalWrite (10,LOW);
break;
case ‘f’:
digitalWrite (13,LOW);
digitalWrite (12,HIGH);
digitalWrite (11,HIGH);
digitalWrite (10,LOW);
break;
case ‘g’:
digitalWrite (13,HIGH);
digitalWrite (12,HIGH);
digitalWrite (11,HIGH);
digitalWrite (10,LOW);
break;
case ‘h’:
digitalWrite (13,LOW);
digitalWrite (12,LOW);
digitalWrite (11,LOW);
digitalWrite (10,HIGH);
break;
case ‘i’:
digitalWrite (13,HIGH);
digitalWrite (12,LOW);
digitalWrite (11,LOW);
digitalWrite (10,HIGH);
break;
case ‘l’:
digitalWrite (13,LOW);
digitalWrite (12,HIGH);
digitalWrite (11,LOW);
digitalWrite (10,HIGH);
break;
case ‘m’:
digitalWrite (13,HIGH);
digitalWrite (12,HIGH);
digitalWrite (11,LOW);
digitalWrite (10,HIGH);
break;
case ‘n’:
digitalWrite (13,LOW);
digitalWrite (12,LOW);
digitalWrite (11,HIGH);
digitalWrite (10,HIGH);
break;
case ‘o’:
digitalWrite (13,HIGH);
digitalWrite (12,LOW);
digitalWrite (11,HIGH);
digitalWrite (10,HIGH);
break;
case ‘p’:
digitalWrite (13,LOW);
digitalWrite (12,HIGH);
digitalWrite (11,HIGH);
digitalWrite (10,HIGH);
break;
case ‘q’:
digitalWrite (13,HIGH);
digitalWrite (12,HIGH);
digitalWrite (11,HIGH);
digitalWrite (10,HIGH);
break;
case ‘r’:
digitalWrite (13,HIGH);
digitalWrite (12,LOW);
digitalWrite (11,LOW);
digitalWrite (10,LOW);
break;
case ‘s’:
digitalWrite (13,LOW);
digitalWrite (12,HIGH);
digitalWrite (11,LOW);
digitalWrite (10,LOW);
break;
case ‘t’:
digitalWrite (13,HIGH);
digitalWrite (12,HIGH);
digitalWrite (11,LOW);
digitalWrite (10,LOW);
break;
case ‘v’:
digitalWrite (13,LOW);
digitalWrite (12,LOW);
digitalWrite (11,HIGH);
digitalWrite (10,LOW);
break;
}

delay (10);
}

non capisco bene questo

for (a = 1; a < 25; a++) puls = analogRead (0);
 for (a = 0; a < 20; a++)
     if (puls > (Vpuls[a]-25) && puls < (Vpuls[a]+25))
         {
           tasto = matrice [a];
         }

poi i pin 10, 11, 12, 13 dove li colleghi?

No No, attenzione, chiedo scusa. ovviamente i pin 10... li invio a dei led (con resistenze), ma questo è solo un esempio. Il codice vero e proprio sarà dopo ogni "case" tipo case 'q': // code relativo al tasto q case 'i': // code relativo al tasto i

I led servono solo per verificare la funzionalità ed efficacia del flusso di informazioni.

for (a = 1; a < 25; a++) puls = analogRead (0);
for (a = 0; a < 20; a++)
if (puls > (Vpuls[a]-25) && puls < (Vpuls[a]+25))
{
tasto = matrice [a];
}

serve solo per individuare il tasto premuto in corrispondenza della tensione letta da ARDUINO. il numero 25 è metà “distanza” delle varie tensioni lette per prevedere eventuali tolleranze di resistenze etc.

secondo me non puoi accorciarlo in questo caso

ciao tozyu Il link dello schema non funziona. Lo rispedisci per favore. poi posso dirti di piú. Ciao Uwe

Il link funziona, solo bisogna aggiungere l'estensione PDF. Credo perchè il nome del file sia "tastiera .pdf" (uno spazio prima dell'estensione.)

Ciao.