Arduino Mega pin 13

Ciao a tutti ragazzi, ho un problema con il pin 13 di Arduino Mega.

In pratica ho programmato i pin dal 2 al 13 come ingressi per pilotare dei relè.

Funzionano tutti bene tranne il 13 che quando viene attivato, si accende il led TX di arduino e il pin non eccita il relè.
Qualcuno saprebbe aiutarmi che sto diventando matto?

Vi posto il codice.

Grazie a tutti.

int outputs[28] = {22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51};

int inputs[28] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, A0, A1, A2, A3, A4, A5, A6, A7};

int relayType[28] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};

int digitalVals[28] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

int relayVals[28] = {0, 0, 0, 0, 0 ,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

unsigned long relayTimes[28] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
unsigned long TapparellaDelay[28] = {10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000};

 
void setup() {        

  Serial.begin(2400);
  for(int i = 0; i < 28; i++)  
  {  
    pinMode(outputs[i], OUTPUT);  
    pinMode(inputs[i], INPUT);
    digitalWrite(outputs[i], HIGH); 
    digitalWrite(inputs[i], HIGH);        
  }  
}

void tapparellaTimeCheck()
{
  for (int i=0; i<28; i++)
  {
      if(millis() - relayTimes[i] >= TapparellaDelay[i])
      {
        switch(relayType[i])
        {
          
          case 2:
          {
            digitalWrite(outputs[i], HIGH);
            //muxShieldOutput.digitalWriteMS(1, i + 1, HIGH);
          //  IO1RelayVals[i] = 0;
            //Serial.println(millis() - IO1RelayTimes[i]);
            break;
          }
          case 3:
          {
            digitalWrite(outputs[i], HIGH);
            //muxShieldOutput.digitalWriteMS(1, i - 1, HIGH);
          //  IO1RelayVals[i] = 0;
            break;
          }
          
        }
    }
  }
}

void relayControl()
{
  for (int i=0; i<28; i++)
  {
    digitalVals[i] = digitalRead(inputs[i]);

    Serial.println(digitalVals[i]);
    
    switch(relayType[i])
    {
      case 0:
      {
        if((digitalVals[i] != relayVals[i]))
        {
          relayVals[i] = digitalVals[i];
          digitalWrite(outputs[i], digitalVals[i]);
        }
        break;
      }
      case 1:
      {
        if(digitalVals[i] == 1)
        {
          break;
        }
        if(relayVals[i] == 1)
        {
          if(digitalVals[i] == 0)
          {
            relayVals[i] = 0;
            digitalWrite(outputs[i], !relayVals[i]);
          }
          
        }
        else if(relayVals[i] == 0)
        {
          if(digitalVals[i] == 0)
          {
            relayVals[i] = 1;
            digitalWrite(outputs[i], !relayVals[i]);
          }
          
        }
        delay(200);
        break;
      }
      case 2:
      {
        if(digitalVals[i] == 0)
        {
          if(relayVals[i + 1] == 0)
          {
            digitalWrite(outputs[i], LOW);
            digitalWrite(outputs[i + 1], LOW);
            
            relayVals[i + 1] = 1;
            delay(500);
            break;
          }
          if(relayVals[i] == 0)
          {
            digitalWrite(outputs[i], LOW);
            digitalWrite(outputs[i + 1], LOW);
            relayVals[i] = 1;
          }else{
            digitalWrite(outputs[i], HIGH);
            digitalWrite(outputs[i + 1], LOW);
            relayTimes[i] = millis();
            relayVals[i] = !digitalVals[i];
          }
          delay(500);
        break;
        }
      }
      case 3:
      {
        if(digitalVals[i] == 0)
        {
          if(relayVals[i - 1] == 0)
          {
            digitalWrite(outputs[i], LOW);
            digitalWrite(outputs[i - 1], LOW);
            relayVals[i - 1] = 1;
            delay(1000);
            break;
          }
          if(relayVals[i] == 0)
          {
            digitalWrite(outputs[i], LOW);
            digitalWrite(outputs[i - 1], LOW);
            relayVals[i] = 1;
          }else{
            digitalWrite(outputs[i], HIGH);
            digitalWrite(outputs[i - 1], LOW);
            relayTimes[i] = millis();
            relayVals[i] = !digitalVals[i];
          }
            delay(1000);
        break;
        }
      }
    }
  }
}
 
void loop() {  

    tapparellaTimeCheck();

    relayControl();
}

Di preciso quale versione di Arduino MEGA hai?
Dacci 2 foto (davanti e dietro)

Ciao Uwe

Ciao è questo:

Grazie

Se é veramente una copia 1 a 1 del Arduino MEGA 2560 R1 allora il LED sul pin 13 non é disaccopiato con un operazionale e percui quello che Tu descrivi é fisiologico.
Usa un altro pin e lascia stare il pin 13.
Ciao Uwe

Togli il serial begin e i serial print se vuoi usare il 13