Ayuda para comprimir código

Hola buenos dias.
Estoy haciendo un pequeño proyecto, en el cual necesito varias contraseñas y me sale muy grande, podéis ayudarme a hacerlo mas corto?
os paso el código.

#include <Keypad.h> 

char contrasena1[]="11";  
char contrasena2[]="12";
char contrasena3[]="13";
char contrasena4[]="14";
char contrasena5[]="15";
char contrasena6[]="16";
char contrasena7[]="17";
char contrasena8[]="18";
char contrasena9[]="19";
char contrasena10[]="20";
char codigo[2];            
int cont=0;          

const byte ROWS = 4; 
const byte COLS = 4; 

char hexaKeys[ROWS][COLS] = 
{ 
 {'1','2','3','A'},
 {'4','5','6','B'},
 {'7','8','9','C'},
 {'*','0','#','D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6}; 
byte colPins[COLS] = {5, 4, 3, 2}; 

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup()
{
 pinMode(13, OUTPUT); 
 Serial.begin(9600); 
}

void loop()
{
 char customKey = customKeypad.getKey(); 
 if (customKey != NO_KEY)         
 {
   codigo[cont]=customKey;          
   Serial.println(codigo[cont]);    
   cont=cont+1;              
   if(cont==2) 

{            
     if(codigo[0]==contrasena1[1]&&codigo[1]==contrasena1[1])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     
     if(codigo[0]==contrasena2[2]&&codigo[1]==contrasena2[2])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     if(codigo[0]==contrasena3[3]&&codigo[1]==contrasena3[3])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     
     if(codigo[0]==contrasena4[4]&&codigo[1]==contrasena4[4])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     if(codigo[0]==contrasena5[5]&&codigo[1]==contrasena5[5])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     
     if(codigo[0]==contrasena6[6]&&codigo[1]==contrasena6[6])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     if(codigo[0]==contrasena7[7]&&codigo[1]==contrasena7[7])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     
     if(codigo[0]==contrasena8[8]&&codigo[1]==contrasena8[8])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     if(codigo[0]==contrasena9[9]&&codigo[1]==contrasena9[9])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     
     if(codigo[0]==contrasena10[10]&&codigo[1]==contrasena10[10])
     {
       digitalWrite(13,!digitalRead(13));        
     }
     cont=0;  
   }
 }
}
[\code]

Hola fersuas.

Para poder leer mas comodamente tu sketch ¿ podrias encerrarlo entre los tags de código ? (pulsar </> del menu superior).

Y una pregunta ¿ cada contrasenaxx[] es una password distinta ?

Gracias

Hola Alfaville.

No entiendo lo de encerrarlo en <>

si son contraseñas distintas, pueden ser 10 o incluso 99

Cuando escribes algo para el hilo, lo haces desde una ventana que tiene en su parte superior una linea de simbolos.
El primero de ellos es el tag </> (literalmente).

Debes editar el post y encerrar el código del sketch entre los tags “code” y “/code” que te apareceran al pulsar </> (hazlo al principio del sketch). Puedes ver el resultado antes de postearlo pulsando el boton “PREVIEW” de la parte inferior.

Y volviendo a las contraseñas (de los errores ya hablaremos), ya estan compactadas aunque se podrian guardar en un array de dos dimensiones “char contrasena[][]”, pero es irrelevante para compactar.

Otro caso seria si las quisieras quitar de la memoria SRAM y pasarlas a la FLASH para ahorrar espacio.

Si lo que buscas es ,mejorar el sketch en general dilo y cuando tengas el sketch “legible” intentaremos ayudarte.

El codigo compactado y corregido (espero) es este:

#include <Keypad.h>

char contrasena[][2]=
{
   {'1','1'},
   {'1','2'},
   {'1','3'},
   {'1','4'},
   {'1','5'},
   {'1','7'},
   {'1','8'},
   {'1','9'},
   {'2','0'}
};
char codigo[2];

int cont=0;     
int n;     

const byte ROWS = 4;
const byte COLS = 4;

char hexaKeys[ROWS][COLS] =
{
   {'1','2','3','A'},
   {'4','5','6','B'},
   {'7','8','9','C'},
   {'*','0','#','D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup()
{
   pinMode(13, OUTPUT);
   Serial.begin(9600);
}

void loop()
{
   char customKey = customKeypad.getKey();
   if (customKey != NO_KEY)        
   {
      Serial.println(customKey);    
      codigo[cont++]=customKey;          

     if(cont==2)
     {            
        for(n=0;n<10;n++)
        {
            if((codigo[0]==contrasena[n][0])&&(codigo[1]==contrasena[n][1]))
           {
               digitalWrite(13,!digitalRead(13));
           }
        }
        cont=0;  
     }
   }
}

Segun lo que he visto el sketch original tenia serios problemas para funcionar.

Espero que este (mas corto) funcione bien. Lo pruebas y comentas.

PS. Consulta las normas del foro !!

ok, ha cambiado mucho, voy a estudiar el cambio para entenderlo lo pruebo y os comento, gracias.