Problema com Emissão de Infravermelho em código com vários sensores

Boa tarde/noite/manha galera, tudo beleza?
Estou com problema em ligar meu Arduino Uno em diversos shields, um em específico, o Emissor de Infravermelho. O problema é que ele envia o comando pro emissor de infravermelho, joga pro meu som ou pra minha TV e funciona somente uma vez, e depois trava o código e não continua o loop, ou seja, o sensor está funcionando, já testei o código sem ter o Receptor e fazendo os comando por serial, e funcionou correntemente, ligou a Tv e o som, setou os 'source' e deixou o volume em 30(uma das funções do switch que pede várias emissões do emissorIR: case (0xFF629D)), e o engraçado que essa função mais "complexa" ele também executa, porém somente uma vez e trava como qualquer outra que necessite do emissorIR .
O controle que está na foto funciona e as frequências estão corretas, o relé funciona também, tanto que o controle consegue ligar e desligar o relé( case (0xFFE21D) e case (0xFFA25D)), porém somente essas duas funcionam sem travar, eu posso ligar e desligar o relé quantas vezes quiser que não trava, porém quando por exemplo peço para "Aumentar o volume" ele trava e não deixa nem eu ligar mais o rele.

Nessa Imagem eu mostro que ele pode ligar e desligar o rele, porém trava quando chega aumenta o volume. ( Obs: ele aumenta o volume no som, porém trava e não aceita mais comandos)

Espero que tenha conseguido ser claro, quem conseguir me ajudar, agradeço muito.

Videos do funcionamento e explicando melhor as funções:
https://drive.google.com/drive/folders/1adHSzjjzZi7d4M9h6gozmBZ4YNiM1ZKm?usp=sharing

Segue o código:

// INCLUSÃO DE BIBLIOTECA
#include <IRremote.h>
#include "SevSeg.h"

// DIRETIVAS DE COMPILAÇÃO
#define tempoTecla 350
#define frequencia 38 // kHz
#define pinoRele  2
#define pinSensor 10

// INSTANCIANDO OBJETOS
IRsend emissorIR;
SevSeg sevseg; 
IRrecv sensorIR (pinSensor);
decode_results comando;

unsigned int teclaA[] = {9050,4450, 600,550, 550,600, 600,500, 550,550, 650,500, 650,500, 550,550, 550,550, 600,1650, 550,1650, 650,500, 650,1550, 650,1600, 550,1650, 600,1600, 700,1550, 650,450, 650,500, 550,1650, 650,1550, 600,600, 600,500, 650,450, 650,500, 650,1550, 650,1550, 700,450, 650,500, 550,1650, 650,1550, 650,1550, 600,1650, 650};
unsigned int teclaB[] = {9050,4450, 550,550, 600,550, 600,550, 550,550, 600,550, 550,550, 600,550, 550,550, 600,1600, 600,1650, 550,550, 600,1650, 550,1650, 600,1600, 600,1650, 550,1650, 600,1600, 600,550, 550,550, 600,1650, 550,1650, 600,550, 550,550, 600,550, 550,550, 600,1650, 550,1650, 550,550, 600,550, 550,1650, 600,1650, 550,1650, 550};
unsigned int teclaC[] = {9150,4450, 600,550, 550,550, 600,550, 600,500, 600,550, 550,550, 600,550, 550,550, 600,1650, 600,1600, 600,500, 650,1600, 600,1600, 600,1600, 650,1600, 600,1600, 600,550, 600,500, 600,1650, 600,500, 600,550, 600,500, 600,1600, 650,500, 600,1600, 600,1650, 600,500, 600,1600, 650,1600, 600,1600, 600,550, 600,1600, 600};
unsigned int teclaD[] = {9050,4400, 600,600, 450,650, 500,600, 500,650, 500,600, 550,600, 500,600, 550,550, 550,1700, 550,1600, 600,600, 550,1600, 600,1650, 550,1650, 600,1600, 600,1650, 550,1650, 600,550, 550,1650, 600,550, 550,600, 550,550, 550,1650, 600,550, 550,600, 550,1600, 600,600, 550,1600, 650,1600, 550,1650, 650,500, 650,1550, 650};
unsigned int teclaE[] = {8900,4400, 550,550, 550,550, 650,450, 650,500, 600,500, 600,500, 600,500, 600,500, 600,1600, 650,1600, 600,1600, 600,1600, 650,1600, 600,1600, 600,500, 600,1600, 650,1600, 600,1600, 600,500, 600,500, 600,500, 600,500, 650,500, 600,500, 550,550, 600,500, 600,1600, 600,1650, 600,1600, 600,1600, 600,1600, 650,1600, 600};
//unsigned int teclaA[] = {};

void setup() 
{
  Serial.begin(9600);
  Serial.print("Setup Iniciado\n");
  pinMode(pinoRele, OUTPUT);
  digitalWrite(pinoRele, LOW);
  byte numDigits = 1;
  byte digitPins[] = {};
  byte segmentPins[] = {6, 5, 12, 9, 4, 7, 8, 11};
  bool resistorsOnSegments = true;
  sensorIR.enableIRIn();
  byte hardwareConfig = COMMON_CATHODE; 
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sevseg.setBrightness(90);
  sevseg.setNumber(0);
  delay(1000);
  sevseg.refreshDisplay(); 
  Serial.print("Setup Concluído\n");
}

void loop() 
{
  if (sensorIR.decode(&comando)) 
  {
    Serial.println(comando.value, HEX);
    switch (comando.value) 
    {
      case (0xFFA857):  //problema
      {
          Serial.println("Aumentando o volume do Som");
          emissorIR.sendRaw(teclaC, sizeof(teclaC) / sizeof(teclaC[0]), frequencia);
          a();
          delay(1350);
          apagado();
          break;
      }
      case (0xFFE01F):  //problema
      {
          emissorIR.sendRaw(teclaD, sizeof(teclaD) / sizeof(teclaD[0]), frequencia);
          Serial.println("Diminuindo o volume do Som");
          menos();  
          delay(1000);
          apagado();
          break;
      }
      case (0xFF629D): //problema
      {
          Serial.println("-- Ligando Aparelhos: --"); 
          Serial.println("Ligando o Som");
          sevseg.setNumber(4);
          sevseg.refreshDisplay();   
          emissorIR.sendRaw(teclaA, sizeof(teclaA) / sizeof(teclaA[0]), frequencia);
          delay(tempoTecla);
          Serial.println("Ligando a TV");
          emissorIR.sendRaw(teclaE, sizeof(teclaE) / sizeof(teclaE[0]), frequencia);
          delay(16000);
          Serial.println("Source do Som - Radio");
          emissorIR.sendRaw(teclaB, sizeof(teclaB) / sizeof(teclaB[0]), frequencia);
          delay(3691);
          sevseg.setNumber(3);
          sevseg.refreshDisplay();   
          delay(2809);
          Serial.println("Source do Som - Line");
          delay(2832);
          sevseg.setNumber(2);
          sevseg.refreshDisplay();   
          delay(1168);
          emissorIR.sendRaw(teclaB, sizeof(teclaB) / sizeof(teclaB[0]), frequencia);
          delay(2000);
          int i;
          for(i = 0; i <20 ; i++)
          {
              emissorIR.sendRaw(teclaC, sizeof(teclaC) / sizeof(teclaC[0]), frequencia);
              delay(tempoTecla);
              if(i == 6)
              {
                sevseg.setNumber(1);
                sevseg.refreshDisplay();   
              }
          }
          sevseg.setNumber(0);
          sevseg.refreshDisplay();   
          Serial.println("Tudo já está configurado para uso! Som configurado com 30 no volume.");
          delay(1500);
          apagado();
          break;
      }

      case (0xFF52AD): //problmea
      {
          Serial.println("Desligando Tudo");
          emissorIR.sendRaw(teclaE, sizeof(teclaE) / sizeof(teclaE[0]), frequencia);
          delay(tempoTecla);
          emissorIR.sendRaw(teclaA, sizeof(teclaA) / sizeof(teclaA[0]), frequencia);
          sevseg.setNumber(0);
          sevseg.refreshDisplay();  
          delay(3000);
          apagado();
          break;
      }

      case (0xFFE21D):
      {
          digitalWrite(pinoRele, HIGH); 
          Serial.print("\nBotao acionado, Ligando Lampada");
          l();
          delay(3000);
          apagado();
          break;
      }

      case (0xFFA25D):
      {
          digitalWrite(pinoRele, LOW);
          Serial.print("\nDesligando Lampada");
          sevseg.setNumber(0);
          sevseg.refreshDisplay();  
          delay(3000);
          apagado();
          break;
      }
      case (0xFFC23D):  //problema
      {
          Serial.println("Ligando/Desligando a TV"); 
          emissorIR.sendRaw(teclaE, sizeof(teclaE) / sizeof(teclaE[0]), frequencia);
          delay(tempoTecla);
          menos();  
          delay(1000);
          apagado();
          break;
      }
    }
   sensorIR.resume();    //Aguarda novo comando
   Serial.print("\nChegou aqui\n");  
  }
}

void apagado()
{
   digitalWrite(6,LOW);
   digitalWrite(5,LOW);
   digitalWrite(12,LOW);
   digitalWrite(9,LOW);
   digitalWrite(4,LOW);
   digitalWrite(7,LOW);
   digitalWrite(8,LOW);
   digitalWrite(11,LOW);
}

void a()
{
   digitalWrite(6,HIGH);
   digitalWrite(5,HIGH);
   digitalWrite(12,HIGH);
   digitalWrite(9,LOW);
   digitalWrite(4,HIGH);
   digitalWrite(7,HIGH);
   digitalWrite(8,HIGH);
   digitalWrite(11,HIGH);
}

void l()
{
   digitalWrite(6,LOW);
   digitalWrite(5,LOW);
   digitalWrite(12,LOW);
   digitalWrite(9,HIGH);
   digitalWrite(4,HIGH);
   digitalWrite(7,HIGH);
   digitalWrite(8,LOW);
   digitalWrite(11,HIGH);
}

void menos()
{
   digitalWrite(6,LOW);
   digitalWrite(5,LOW);
   digitalWrite(12,LOW);
   digitalWrite(9,LOW);
   digitalWrite(4,LOW);
   digitalWrite(7,LOW);
   digitalWrite(8,HIGH);
   digitalWrite(11,LOW);
}

Boa noite @murilow
por favor ao postar skecths ou printouts utiliza as tags </>.

Como voce colocou fora das tags, ao copiar seu sketch não copiou as [ ] das arrays.

RV mineirin

Muito Obrigado :slight_smile: , estava tendo dificuldade com isso. Ve se consegue me ajudar agora.

Fiquei com duvidas sobre o seu projeto.
Você está usando display de 7 segmentos?
Qual o objetivo deste display.
O seu sketch recebe códigos de um IR e reenvia outros códigos?
De uma breve descrição do seu projeto e se possível post um esquema do mesmo.
RV mineirin

Bom dia @ruilviana . Fiz um link do google drive com 2 videos e 1 foto sobre o circuito e seu funcionamento.
Link:
https://drive.google.com/drive/folders/1adHSzjjzZi7d4M9h6gozmBZ4YNiM1ZKm?usp=sharing
OBS: no video 1 explico na prática o porque o 3º case tem vários 'delay'. Que é para dar tempo do meu home teather carregar os modo 'source'

Basicamente é isso:
-Recebe o sinal pelo receptor Infravermelho quando aperto no controle
-Aparece no display de 7 dígitos um '-',ou 'A' ou 'L' somente para indicar que o código foi executado
-o código de infravermelho é enviado ao emissor que aumenta ou diminui o volume do som, liga a tv ou o relé

@murilow ,
no momento estou viajando e só tenho um celular pra acessar.
Retorno em 1 semana, se até lá ainda estiver com problema eu tento montar o seu projeto em casa e vejo se resolvo.
RV mineirin