Dashboard Nano+TM1638

Salve a tutti, sto scrivendo un codice al fine di far funzionare un modulo TM1638 come dashboard su alcuni veicoli dotati di centraline in grado di inviare dati utili via seriale, il tutto supportato da un arduino nano.
La prima parte di programma che si occupa di “convertire” il segnale seriale in variabili è stato completato.
Ora sto scrivendo il codice per far funzionare al meglio il modulo TM1638, esso dovrà far funzionare i led in funzione della velocità di rotazione del motore(rpm) e mostrare sul display alcune varibili, tra cui gli rpm, temperature e variabili varie che ottengo via seriale. Il mio obiettivo è cambiare variabile da visualizzare premendo i pulsanti disponibili sul modulo.
Allo stato attuale sono in grado di far funzionare efficientemente i led e mostrare la velocità di rotazione, vi chiedo aiuto e qualche suggerimento su come posso strutturare il codice al fine di cambiare variabile da visualizzare premendo dei pulsanti.
In passato ho fatto altri progetti simili, come un controller per acquario corredato da sonde temperatura, umidità, sd per logging, e modulo rtc ed un display 16x2(i2c), anche lì il mio limite è stato non capire, anche a causa del mio poco tempo disponibile, che struttura utilizzare per far cambiare “schermata” premendo un pulsante.
vi allego il mio attuale codice, spero che mi possate consigliare la giusta via.
Grazie.

PS: attualmente per testare sto utilizzando un ciclo for per generare la variabile rpm, successivamente non ci sarà il ciclo for ma le variabili dipenderanno dal segnale seriale in ingresso.

#include <TM1638plus.h>
#define  STROBE_TM 4 
#define  CLOCK_TM 6  
#define  DIO_TM 7 
bool high_freq = false; //default false,, If using a high freq CPU > ~100 MHZ set to true. 
TM1638plus tm(STROBE_TM, CLOCK_TM , DIO_TM, high_freq);

void setup()
{

  tm.displayBegin(); 

}

void loop()
{

  for (uint8_t brightness = 7; brightness < 8; brightness++)
  for (int rpm = 0; rpm <= 15000; rpm = rpm+500)

  {
   char rpm1[11];
   int tw=0;
  uint16_t  data = 234;
  sprintf(rpm1, "RPm%05d", rpm); //
  tm.displayText(rpm1);
 tm.brightness(brightness);


 //if
 if (rpm>500 && rpm<10500){
 tm.setLED(0, 1);
 }else{
  tm.setLED(0, 0);
 }
 if (rpm>2000 && rpm<10500){
 tm.setLED(1, 1);
 }else{
  tm.setLED(1, 0);
 }
  if (rpm>4000 && rpm<10500){
 tm.setLED(2, 1);
 }else{
  tm.setLED(2, 0);
 }
  if (rpm>5000 && rpm<10500){
 tm.setLED(3, 1);
 }else{
  tm.setLED(3, 0);
 }
  if (rpm>6000 && rpm<10500){
 tm.setLED(4, 1);
 }else{
  tm.setLED(4, 0);
 }
  if (rpm>7000 && rpm<10500){
 tm.setLED(5, 1);
 }else{
  tm.setLED(5, 0);
 }
  if (rpm>8000 && rpm<10500){
 tm.setLED(6, 1);
 }else{
  tm.setLED(6, 0);
 }
  if (rpm>9000 && rpm<10500){
 tm.setLED(7, 1);
 }else{
  tm.setLED(7, 0);
 }
  if (rpm>10500){
    while(tw<5)
    {
 tm.setLED(0, 1);
 tm.setLED(1, 1);
 tm.setLED(2, 1);
 tm.setLED(3, 1);
 tm.setLED(4, 1);
 tm.setLED(5, 1);
 tm.setLED(6, 1);
 tm.setLED(7, 1);
 delay(10);
  tm.setLED(0, 0);
 tm.setLED(1, 0);
 tm.setLED(2, 0);
 tm.setLED(3, 0);
 tm.setLED(4, 0);
 tm.setLED(5, 0);
 tm.setLED(6, 0);
 tm.setLED(7, 0);
 delay(10);
 tw=tw+1;
    }
  
 }else{
  tm.setLED(7, 0);
 }

//if end
    
    delay(100);
  }
  tm.reset();
}

up.

Non sò che libreria stai utilizzando perchè hai omesso di scriverlo.
Da quello che vedo in rete, l’istruzione per leggere i pulsanti dovrebbe essere

byte buttons = module.getButtons();

Il byte ricevuto, è la copia dei pulsanti premuti, ogni bit corrisponde ad un pulsante
00000000 nessun pulsante premuto
10000000 primo pulsante premuto


11111111 tutti pulsanti premuti

Grazie della risposta, sono già riuscito a fare funzionare i buttons, la libreria TM1638plus semplifica tutto e non bisogna lavorare con i bit.
Il mio problema sta nella struttura da adottare nel codice per cambiare variabile da visualizzare…