Ho notato solo un errore banale che è la causa del malfunzionamento
ma non ho analizzato il codice nel dettaglio.
d=digitalRead(in);
if ( in== 1){a=a+1;delay(500);}
La variabile 'd' contiene lo stato del pin letto con digitalRead(), mentre pin è una costante numerica che identifica il numero assegnato al pin di arduino.
Se non è chiaro il controllo if (... deve essere fatto sulla variabile 'd', cioè:
if ( d == 1) {
a = a + 1; // oppure a++; o ++a; in questo contesto sono validi entrambe
delay(500);
}
Ciao.