Problema con degli array.

Salve.

Sto avendo qualche grattacapo con degli array contenenti dei valori in un formato particolare richiesto da un module che li dovrà ricevere successivamente via UART.

TxCTCSS[] = {0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, ... 0036, 0037, 0038};

ho tagliato per brevità l'array ma i valori si estendono fino a 0038.

Il compilatore pare non voler digerire i valori in quanto li interpreta come dei numeri espressi in ottale, dunque superando 0008 si verifica questo errore.

questo si verifica sia se dichiaro le variabili come int o char.

qualcuno sa dirmi come posso fare a far interpretare questi valori come semplici caratteri?

Come caratteri? Cioè come stringhe? O come semplici numeri?

avrei bisogno che li riconoscesse come del normale testo ascii e che li stampasse in questo formato via seriale quando richiesto. insomma se volessi usare il comando:

Serial.println(TxCTCSS[3]);

vorrei ottenere sul monitor seriale 0003

spero di aver chiarito cio che intendo

E allora usa const char* pippo = {“0001”, “0002”, …}.

Anche se ci sono modi migliori di farlo.

vuoi dire che bastava aggiungere virgolette a iosa? Accidenti mi era sfuggito! :grinning:

CI sono modi più pratici per farlo? cosa suggerisci? :)

Mah, se i numeri sono crescenti come sembra, e per di più corrispondenti all’indice della posizione in cui si trovano, direi che basta una semplice Serial.print() dell’indice stesso, più un adeguato numero di zeri:

Serial.print ("00");
if (i < 10)
  Serial.print ("0");
Serial.println (i);

Si, ha senso, ovviamente imposto la const int da 0 a 38.

anche perchè usando char e facendolo con i valori completi, sembra che vada in overflow

il compilatore risponde

too many initializers for 'char []'

Nah, secondo me hai dimenticato un asterisco, guarda bene cos'ho scritto.

Oh! hai ragione, cosa sta a significare quell'asterisco? non lo avevo mai visto usare.

comunque immagino che usando la composizione degli zeri con il ciclo IF vada a vertere molto meno sulla memoria. Anche perchè il programma in se sta gia tirando il collo non poco al micro, devo fare economia di bytes

Ma sì, lascia perdere e usa quelle 4 righe, puoi fare una funzione apposta :).

Decisamente, anche perchè scrivere quel papiro di numeri virgole e virgolette mi fa venire cadere le braccia hahaha. e se ti facessi vedere il resto del programma ti spaventeresti.

Gestisce le impostazioni di sintonia, volume, filtraggi e subtoni di un modulo rf digitale in banda VHF.

Il tutto fatto girare sotto una UI a menu su un display I2C 20x4 e comandato con un encoder. Sto costruendo un ricetrasmettitore semiprofessionale da capo a piedi. 8)

questa in particolare è parte della selezione dei subtoni, ci sono due array: uno per la trasmissione ed uno per la ricezione.