Convertire variabile in nome

Grazie, quell'esempio di calcolo del tempo non ricordo dove l'ho trovato, ha funzionato bene ed è sempre rimasto così.
tutto il programma è sommariamente un collage di esempi adattati.
sono certo che si capisce, non ho la pretesa di scrivere il programma di mio pugno anche se nel tempo sono riuscito a capire abbastanza bene come funziona in tutte le sue parti.
magari come vedi ci sono linee del codice che potrebbero essere semplificate o migliorate e ti ringrazio per questa modifica del contatore che hai scritto.
in origine sono partito da un programma scritto per tinygps convertito in neogps perché con tinygps non sono riuscito a fare un calcolo sensato della distanza percorsa (odometro) cosa che oggi forse potrei anche provare a ottenere usando distance between ma ormai non so nemmeno quanto possa meritare tornare auna versione dello stesso programma basata su tinygps.
Si sono susseguite tante prove e modifiche, alcune farina del mio sacco e altre con gratitudine verso chi mi ha aiutato e mi ha dedicato del tempo per migliorarlo.
ad oggi il risultato è molto buono, almeno io lo uso questo gps con una certa soddisfazione.
la precisione è irrilevante per come lo uso io, ieri ho camminato 16km in circa 3 ore, siamo al massimo possibile per i miei piedi.

il codice con la tua semplificazione funzionante.
adesso vorrei riprovare a dividere la rosa dei venti in 16 settori e vedere se il guadagno di memoria potrà permetterlo.
poi non so, ho finito anche la fantasia su cosa potremmo spremere fuori da un modulo gps.
ho rinunciato a scrivere l'altitudine massima o giocare con l'altitudine perché genera molti errori e false rilevazioni altrimenti poteva essere carino avere anche un log sui dislivelli percorsi ma non funzionerebbe mai bene, penso andrebbe fatto con un tipo diverso di sensore.

#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#include <NMEAGPS.h>
#include <NeoSWSerial.h>
#define I2C_ADDRESS 0x3c
#define RST_PIN -1
#define MAX_CHARS 24
#define RX_pin 5
#define TX_pin 4
#define SHOW_INTERVAL 1
#define GPS_baud 9600
SSD1306AsciiWire oled;
NMEAGPS gps;
gps_fix fix;
float odo, Speed, alt, Dist, head, maxs = 0;
unsigned int  Sat = 0;
NeoGPS::Location_t    lastLoc, base;
bool stScan = true, lastLocOK = false;
bool altOK = false;
bool Satok = false;
static NeoSWSerial gpsPort(RX_pin, TX_pin);
static constexpr int INITIAL_SHOW  = (2 * SHOW_INTERVAL) - 1;
int show          = INITIAL_SHOW;
const int   LED_PIN  = 3;
const float SPEED_LIMIT = 0.1; // speed limit 50 oppure 0,1 fix 
void disp(int c, int r) {
  oled.clear();
  oled.setCursor(c, r);
}
const char* strBussola[8] = {"N ", "NE", "E ", "SE", "S ", "SO", "O ", "NO"};
int index;
int trovaIndice(float angolo) {
  int _index;
  for (_index = 0; _index < 8; _index++) {
    float angoloDirezione = _index * 45.0 + 22.50;
    float angoloMin = angoloDirezione - 22.50;
    float angoloMax = angoloDirezione + 22.50;
    if (angolo >= angoloMin && angolo <= angoloMax)
      return _index;
  }
  return _index;
}
void setup() {
  pinMode (LED_PIN, OUTPUT);
  Serial.begin(9600);
  gpsPort.begin(GPS_baud);
  Wire.begin();
  oled.begin(&SH1106_128x64, I2C_ADDRESS);
  oled.setFont(ZevvPeep8x16);
  //oled.displayRemap(true); //inversione dello schermo 
  disp(20, 2);
  oled.println(F("IL TUO NOME"));
  delay(1500);
  oled.setCursor(24, 5);
  oled.println(F("GPS LOGGER"));
  delay(2500);
  oled.clear();
  const int cs_sd = 2;
  if (!SD.begin (cs_sd)) {
    oled.clear();
    disp(40, 2);
    oled.print("NO SD"); 
    delay(10000);
    oled.clear();
  }
  File data = SD.open("L.csv", FILE_WRITE);
  data.println("");
  data.println(F("Da Hr Tm La Lo At Km Di Ve Co He Sa" ));
  data.close();
}

void loop() {

  unsigned long tmp = millis() / 1000;
  byte secondi = tmp % 60;
  byte minuti = (tmp / 60) % 60;
  byte ore = (tmp / 3600) % 24;


  if (gps.available( gpsPort )) {
    gps_fix fix = gps.read();
    show = (show + 1) % SHOW_INTERVAL;
    if (fix.valid.speed && (fix.speed_kph() > SPEED_LIMIT)) {
      digitalWrite( LED_PIN, HIGH );
    } else {
      digitalWrite( LED_PIN, LOW );
    }
    if (fix.valid.location) {
      if (lastLocOK) {
        odo += fix.location.DistanceKm( lastLoc );
        Speed = fix.speed_kph();
      }
      lastLoc   = fix.location;
      lastLocOK = true;
      if (stScan) {
        stScan = false;
        base   = fix.location;
      } else {
        Dist = ( fix.location.DistanceKm( base ) );
      }
    }
    if ( Speed > maxs)          maxs = Speed;
    if (fix.valid.satellites ) {
      Sat = fix.satellites ;
      Satok = true;
    }


    if (fix.valid.heading ) {
      head = fix.heading() ;
      index = trovaIndice(head);
    }

    if (fix.valid.altitude) {
      alt = fix.altitude();
      altOK = true;
    }

    if (show == 0) {
      char displayBufffer[MAX_CHARS];
      oled.setCursor(0, 0);
      snprintf(displayBufffer, MAX_CHARS, "Km:%2d.%1d",  (int)odo, (int)(odo * 100) % 100);
      oled.println(displayBufffer);
      oled.setCursor(65, 0);
      snprintf(displayBufffer, MAX_CHARS, "Di:%2d.%1d",  (int)Dist, (int)(Dist * 100) % 100);
      oled.println(displayBufffer);
      snprintf(displayBufffer, MAX_CHARS, "Ve:%2d.%1d", (int)Speed, (int)(Speed * 100) % 100);
      oled.println(displayBufffer);
      oled.setCursor(65, 2);
      snprintf(displayBufffer, MAX_CHARS, "Al:%2d.%1d", (int)alt, (int)(alt * 100) % 100);
      oled.println(displayBufffer);

      snprintf(displayBufffer, MAX_CHARS, "Vm:%2d.%1d", (int)maxs, (int)(maxs * 100) % 100);
      oled.println(displayBufffer);
      oled.setCursor(65, 4);
      snprintf(displayBufffer, MAX_CHARS, "He: %s\n", (strBussola[index]));
      oled.println(displayBufffer);
      snprintf(displayBufffer, MAX_CHARS, "%d:%d:%d ", (int)ore, (int)minuti, (int)secondi);
      oled.println(displayBufffer);
      oled.setCursor(65, 6);
      snprintf(displayBufffer, MAX_CHARS, "Co:%2d.%1d", (int)head, (int)(head * 100) % 100);
      oled.println(displayBufffer);
    }
    File data = SD.open("L.csv", FILE_WRITE);
    data.print(fix.dateTime.hours + 2);
    data.print(":");
    data.print(fix.dateTime.minutes);
    data.print(" ");
    data.print(fix.dateTime.date);
    data.print("/");
    data.print(fix.dateTime.month);
    data.print(" ");
    data.print(ore);
    data.print(":");
    data.print(minuti);
    data.print(":");
    data.print(secondi);
    data.print(" ");
    data.print(fix.latitude(), 6);
    data.print(" ");
    data.print(fix.longitude(), 6);
    data.print(" ");
    data.print(alt);
    data.print(" ");

    data.print(odo);
    data.print(" ");
    data.print(Dist);
    data.print(" ");
    data.print(Speed);
    data.print(" ");
    data.print(head);
    data.print(" ");
    data.print(strBussola[index]);
    data.print(" ");
    data.print(Sat);
    data.println();
    data.close();
  }
}