Allora tornando a bomba...
- puoi postare il lnk alla libreria Button che usi ?
- hai provato a far girare il codice togliendo la chiamata delay(1000) ?
- perché c'è una delay(500) su menu==6 ?
- togli i print() di debug quando togli delay(1000) perché verrebbero eseguiti a velocità folle

- c'è un errore:
(menu=menu++);
Le parentesi sono inutili, ma l'errore vero lo trovi confrontando quella riga con il modo in cui incrementi level, un paio di righe più sotto...
Un consiglio: credo che il codice risulterebbe più leggibile se invece di una serie di if() usassi l'istruzione switch, tipo:
switch(menu) {
case 1:
// fai qualcosa
break;
case 2:
// fai qualcosa
break;
// ecc.
}
Ora che ho scritto questa pappardella credo di avere capito qual è il problema: l'analisi della voce di menu dovresti farla solo quando rilevi la uniquePress.
Ovvero (ometto per chiarezza la gestione del livello):
// se è stata rilevata la pressione del tasto menu:
if(tastomenu.uniquePress()) {
// incrementa il numero del menu
(indovina :-P )
// esegui il codice relativo al menu attuale
switch(menu) {
// ecc. come indicato più sopra
}
}
In questo modo le funzioni del menu vengono eseguite solo quando si rileva la pressione del tasto ed il cambio di nuemero di menu.
Questo ti permette di eliminare i delay().
Spero di esserti stato d'aiuto.