Problema con Array di char, il 3° carattere è vuoto...

Buonasera, ho un problema con un array di caratteri…

//char Tempo_Timeout[7]={' ',' ',' ',' ',' ',' ', ' '};
char Tempo_Timeout[10]={'N','N','N','N','N','N', 'N', 'N', 'N', 'N'};

  int n_pos_time = 0;
   // Lettura Tempo Time Out
  while ((Tempo_Timeout[0] == ' ')||(Tempo_Timeout[1] == ' ')||(Tempo_Timeout[2] = ' ')||
         (Tempo_Timeout[3] == ' ')||(Tempo_Timeout[4] == ' ')||(Tempo_Timeout[5] = ' ')||(Tempo_Timeout[6] != '*'))
  {
  delay(150);
  tasto_A0 = analogRead(tastierino_A0);
  
  Tasto_Premuto = funzione_tasto (tasto_A0);
  if (Tasto_Premuto!='N')
  {
    if (n_pos_time < 6)
    {
      if ((Tasto_Premuto!='*')&&(Tasto_Premuto!='#'))
      {
        Tempo_Timeout[n_pos_time+3] = Tasto_Premuto ;
        Serial.print(n_pos_time+3);
        Serial.print("=>");
        Serial.println(Tempo_Timeout[n_pos_time+3]);
        n_pos_time = n_pos_time + 1;
        lcd.print(Tasto_Premuto);
        if ((n_pos_time == 2)||(n_pos_time == 4))
          lcd.print(":");
        if (n_pos_time == 6)
          lcd.print(" (*) OK ");
      }  
    }
    else
    {
      if (Tasto_Premuto=='*') // Confermo Inserimento
      {
        Tempo_Timeout[n_pos_time+3] = Tasto_Premuto ; 
        break;
        }
      if (Tasto_Premuto=='#') // Annullo Inserimento
      {
        for (int i=0; i < 7; i++)
         Tempo_Timeout[i]=' ';
        n_pos_time = 0;
        lcd.setCursor(0, 1);
        lcd.print("                "); 
        lcd.setCursor(0, 1);       
        }
    }  
   } 
  }
  // Fine ciclo
  Serial.print("TOT=>");
  Serial.print(Tempo_Timeout[0]);
  Serial.print(Tempo_Timeout[1]);
  Serial.print(Tempo_Timeout[2]);
  Serial.print(Tempo_Timeout[3]);
  Serial.print(Tempo_Timeout[4]);
  Serial.print(Tempo_Timeout[5]);
  Serial.print(Tempo_Timeout[6]);
  Serial.print(Tempo_Timeout[7]);
  Serial.print(Tempo_Timeout[8]);
  Serial.println(Tempo_Timeout[9]);
  Serial.print("NUM=>");
  Serial.println(Tempo_Timeout);

il risultato di ciò è:

3=>1
4=>2
5=>3
6=>4
7=>5
8=>6
TOT=>NN 123456*
NUM=>NN 1234560000

sono partito dalla posizione 3 per avere tutti i numeri inseriti…
Come si nota, nonostante l’Array è settato tutto con valori a N, il 3° è vuoto
Se parto da 0 invece di avere:
123456
ottengo
12 456

Come mai il 3° valore è vuoto? sbaglio qualcosa o và settato qualcosa di differente?

Grazie

Come possiamo capire qualcosa del Tuo Sketch se lo dai incompleto? Lo sketch modificato in modo che compili senza errori da come risultato NNNNNNNNNN Ciao Uwe

Lo Sketch completo è questo:

// Libreria per Display LCD 16x2 
#include <LiquidCrystal.h> 
// Libreria EEPROM
#include <EEPROM.h>

  
// Inizializzo LiquidCrystal  
LiquidCrystal lcd( 2, 3, 4, 5, 6, 7);  

// Dichiarazione Variabili
char Tasto_Premuto = ' ';
int tastierino_A0 = A0;
int tasto_A0 = 0;
int menu_scelto = 0;
char Codice_Sblocco[5]={' ',' ',' ',' ',' '};
char Tempo_Timeout[7]={' ',' ',' ',' ',' ',' ', ' '};
//char Tempo_Timeout[10]={'N','N','N','N','N','N', 'N', 'N', 'N', 'N'};
int tempo_secondi;
int n_ore;
int n_minuti; 
int n_secondi;
char valore_old = ' ';


// Funzione Riconoscimento Tasto Premuto
char funzione_tasto ( int valore )
{
  char tasto = ' '; 
  if (valore < 10 ) tasto = 'N';
  else if (valore < 450 ) tasto = '*';
  else if (valore < 472 ) tasto = '7';
  else if (valore < 496 ) tasto = '4';
  else if (valore < 523 ) tasto = '1';
  else if (valore < 571 ) tasto = '0';
  else if (valore < 607 ) tasto = '8';
  else if (valore < 647 ) tasto = '5';
  else if (valore < 694 ) tasto = '2';
  else if (valore < 780) tasto = '#';
  else if (valore < 848 ) tasto = '9';
  else if (valore < 931) tasto = '6';
  else if (valore < 1031 ) tasto = '3'; 
  return tasto;
}

 

void setup() {  
  Serial.begin(9600);
   //impostiamo il numero di colonne ed il numero di righe di lcd  
  lcd.begin(16, 2); 
  menu_scelto = 0;  
  // Visualizzo il messaggio sul display 
  lcd.setCursor(0, 0); 
  lcd.print("Inserire Codice"); 
  lcd.setCursor(0, 1);
  lcd.print("               "); 
  // Pin Analogico per Tastierino Numerico.
  pinMode(tastierino_A0, INPUT);
  int n_posizione=0;
  lcd.setCursor(0, 1);
  

  // *** Lettura Codice Sblocco ***
  while ((Codice_Sblocco[0] == ' ')||(Codice_Sblocco[1] == ' ')||
         (Codice_Sblocco[2] == ' ')||(Codice_Sblocco[3] == ' ')||(Codice_Sblocco[4] != '*'))
  {
  
  tasto_A0 = analogRead(tastierino_A0);
  delay(50);
  
  Tasto_Premuto = funzione_tasto (tasto_A0);
  if ((Tasto_Premuto!='N') && (Tasto_Premuto != valore_old))
  {
    if (n_posizione < 4)
    {
      if ((Tasto_Premuto!='*')&&(Tasto_Premuto!='#'))
      {
        Codice_Sblocco[n_posizione] = Tasto_Premuto ;
        n_posizione = n_posizione + 1;
        lcd.print(Tasto_Premuto);
        if (n_posizione == 4)
          lcd.print(" (*)OK (#)KO");
      }  
    }
    else
    {
      if (Tasto_Premuto=='*') // Confermo Inserimento
        Codice_Sblocco[4] = Tasto_Premuto ; 
      if (Tasto_Premuto=='#') // Annullo Inserimento
      {
        for (int i=0; i <= 4; i++)
         Codice_Sblocco[i]=' ';
        n_posizione = 0;
        lcd.setCursor(0, 1);
        lcd.print("                ");   
        lcd.setCursor(0, 1);     
        }
    }  
   } 
   valore_old = Tasto_Premuto;
  }
  // Fine ciclo
 
  // *** Attesa di 1 secondo ***
  // delay (200);
  // Scrittura
  lcd.setCursor(0, 0); 
  lcd.print("Time HH:MM:SS   "); 
  lcd.setCursor(0, 1);
  lcd.print("                ");
  lcd.setCursor(0, 1); 
  int n_pos_time = 0;
   // Lettura Tempo Time Out
  while ((Tempo_Timeout[0] == ' ')||(Tempo_Timeout[1] == ' ')||(Tempo_Timeout[2] = ' ')||
         (Tempo_Timeout[3] == ' ')||(Tempo_Timeout[4] == ' ')||(Tempo_Timeout[5] = ' ')||(Tempo_Timeout[6] != '*'))
  {
  
  tasto_A0 = analogRead(tastierino_A0);
  delay(250);
  
  Tasto_Premuto = funzione_tasto (tasto_A0);

  if ((Tasto_Premuto!='N') && (Tasto_Premuto != valore_old ))
  {
    if (n_pos_time < 6)
    {
      if ((Tasto_Premuto!='*')&&(Tasto_Premuto!='#'))
      {
        Tempo_Timeout[n_pos_time] = Tasto_Premuto ;
        n_pos_time = n_pos_time + 1;
        lcd.print(Tasto_Premuto);
        if ((n_pos_time == 2)||(n_pos_time == 4))
          lcd.print(":");
        if (n_pos_time == 6)
          lcd.print(" (*) OK ");
      }  
    }
    else
    {
      if (Tasto_Premuto=='*') // Confermo Inserimento
      {
        Tempo_Timeout[n_pos_time] = Tasto_Premuto ; 
        break;
        }
      if (Tasto_Premuto=='#') // Annullo Inserimento
      {
        for (int i=0; i < 7; i++)
         Tempo_Timeout[i]=' ';
        n_pos_time = 0;
        lcd.setCursor(0, 1);
        lcd.print("                "); 
        lcd.setCursor(0, 1);       
        }
    }  
   }
  valore_old = Tasto_Premuto; 
  }
  // Fine ciclo
  Serial.print("TOT=>");
  Serial.print(Tempo_Timeout[0]);
  Serial.print(Tempo_Timeout[1]);
  Serial.print(Tempo_Timeout[2]);
  Serial.print(Tempo_Timeout[3]);
  Serial.print(Tempo_Timeout[4]);
  Serial.print(Tempo_Timeout[5]);
  Serial.print(Tempo_Timeout[6]);
  Serial.print(Tempo_Timeout[7]);
  Serial.print(Tempo_Timeout[8]);
  Serial.println(Tempo_Timeout[9]);
  Serial.print("NUM=>");
  Serial.println(Tempo_Timeout);
  tempo_secondi = (Tempo_Timeout[0]*10*3600+Tempo_Timeout[1]*3600+Tempo_Timeout[2]*10*60+Tempo_Timeout[3]*60+Tempo_Timeout[4]*10+Tempo_Timeout[5]);

}  
  
  
  
void loop() { 
  delay (100);
  lcd.clear();
  lcd.setCursor(0, 0); 
  lcd.print(" ** ATTIVATO ** ");
  lcd.setCursor(0,1);
  lcd.print("T:");
  lcd.print(Tempo_Timeout);
  // Funzione TIMER (Tempo_Timeout[6]) 
  
/*  n_ore = (tempo_secondi/3600);
  lcd.print(tempo_secondi);
  lcd.print(" = ");
  lcd.print(n_ore);
  n_minuti = ( tempo_secondi - n_ore*3600 );
  n_secondi = ( tempo_secondi - n_ore*3600 - n_minuti*60 );
  lcd.setCursor(1, 0);  
  if (n_ore <10) lcd.print("0");
  lcd.print(n_ore);
  if (n_minuti <10) lcd.print("0");
  lcd.print(n_minuti);
  if (n_secondi <10) lcd.print("0");
  lcd.print(n_secondi);
 */ 
}

ho provato e riprovato… il 3° valore è vuoto…
partendo dal 4° valore ( ingrandendo l’array ) mi prende tutti i valori, se parto da 0, o da 1, il 3° campo Array è vuoto…

mah…