Maledette funzioni!!

Usa il tipo byte per i pulsanti, tanto hanno numeri che non passeranno mai il valore max di un byte (255).
Quindi

Giusto!

Inoltre vedo che istanzi la seriale software ma poi nel setup non la inizializzi. Se non ti serve, potresti toglierla per recuperare RAM (togli il suo buffer dalla memoria). Visto che lavori con i float, e che ogni variabile float prende 4 byte, più RAM hai libera e meglio è per il tuo programma.

La seriale software è richiesta dallo shield GPS. Ho copiato le istruzioni dallo sketch di esempio di Adafruit. Credo che l'inizializzazione sia dentro la funzione di libreria GPS.begin(9600).