Void "efeitoNegado" não está reconhecendo

Bom dia. Sou novo em programação de Arduíno e estou esbarrando num erro que me parece ser muito simples para quem domina o assunto.

Estou tentando criar um acesso RFID com acionamento da Fechadura Elétrica. Este é o código que reformulei a partir de um exemplo:

                 CONTROLE DE ACESSO VIA RFID                        

=================================================
== Reprogramado por Wellington Primo ==

*/

//Bibliotecas
#include <SPI.h>
#include <MFRC522.h>

//Pinos
#define RELAY 4
#define LED_AMARELO 5
#define LED_VERDE 6
#define LED_VERMELHO 7
#define BUZZER 8
#define SS_PIN 10
#define RST_PIN 9

String IDtag = “”; //Variável que armazenará o ID da Tag
bool Permitido = false; //Variável que verifica a permissão
bool Negado = false; //Variável que verifica a não permissão

//Vetor responsável por armazenar os ID’s das Tag’s cadastradas
String TagsCadastradas = {“77749c60”,
“ID_2”,
“ID_3”};

MFRC522 LeitorRFID(SS_PIN, RST_PIN); // Cria uma nova instância para o leitor e passa os pinos como parâmetro

void setup() {
Serial.begin(9600); // Inicializa a comunicação Serial
SPI.begin(); // Inicializa comunicacao SPI
LeitorRFID.PCD_Init(); // Inicializa o leitor RFID
pinMode(RELAY, OUTPUT); // Declara o pino do rele saída
pinMode(LED_AMARELO, OUTPUT); // Declara o pino do led amarelo como saída
pinMode(LED_VERDE, OUTPUT); // Declara o pino do led verde como saída
pinMode(LED_VERMELHO, OUTPUT); // Declara o pino do led vermelho como saída
pinMode(BUZZER, OUTPUT); // Declara o pino do buzzer como saída
digitalWrite(RELAY, HIGH); // Ter certeza de que a porta está trancada
digitalWrite(LED_AMARELO, HIGH); // Ter certeza de que o sistema está ligado
}

void loop() {
Leitura(); //Chama a função responsável por fazer a leitura das Tag’s
}

void Leitura(){

    IDtag = ""; //Inicialmente IDtag deve estar vazia.
    
    // Verifica se existe uma Tag presente
    if ( !LeitorRFID.PICC_IsNewCardPresent() || !LeitorRFID.PICC_ReadCardSerial() ) {
        delay(50);
        return;
    }
    
    // Pega o ID da Tag através da função LeitorRFID.uid e Armazena o ID na variável IDtag        
    for (byte i = 0; i < LeitorRFID.uid.size; i++) {        
        IDtag.concat(String(LeitorRFID.uid.uidByte[i], HEX));
    }        
    
    //Compara o valor do ID lido com os IDs armazenados no vetor TagsCadastradas[]
    for (int i = 0; i < (sizeof(TagsCadastradas)/sizeof(String)); i++) {
      if(  IDtag.equalsIgnoreCase(TagsCadastradas[i])  ){
          Permitido = true; //Variável Permitido assume valor verdadeiro caso o ID Lido esteja cadastrado
      }
    }       

    if(Permitido == true) acessoLiberado(); //Se a variável Permitido for verdadeira será chamada a função acessoLiberado()        
    else acessoNegado(); //Se não será chamada a função acessoNegado()

    delay(2000); //aguarda 2 segundos para efetuar uma nova leitura

    if(Negado == true) acessoNegado(); //Se a variável Negado for verdadeira será chamada a função acessoNegado() 

    delay(2000); //aguarda 2 segundos para efetuar uma nova leitura

}

void acessoLiberado(){
Serial.println("Acesso LIBERADO: " + IDtag); //Exibe a mensagem “Tag Cadastrada” e o ID da tag não cadastrada
efeitoPermitido(); //Chama a função efeitoPermitido()
Permitido = false; //Seta a variável Permitido como false novamente
}

void acessoNegado(){
Serial.println("Acesso NEGADO: " + IDtag); //Exibe a mensagem “Tag NAO Cadastrada” e o ID da tag cadastrada
efeitoNegado(); //Chama a função efeitoNegado()
Negado = false; //Seta a variável Negado como false novamente
}

void efeitoPermitido(){
int qtd_bips = 2; //definindo a quantidade de bips
for(int j=0; j<qtd_bips; j++){
//Ligando o buzzer com uma frequência de 1500 hz.
tone(BUZZER,1500);
delay(100);

//Desligando o buzzer.      
noTone(BUZZER);
delay(100);

}

{
int qtd_bips = 1; //definindo a quantidade de bips
for(int j=0; j<qtd_bips; j++){
//Ativando o Rele e ligando o led verde.
digitalWrite(RELAY, HIGH);
digitalWrite(LED_VERDE, HIGH);
delay(1000);

//Desativando o Rele e led verde.
digitalWrite(RELAY, LOW);
digitalWrite(LED_VERDE, LOW);
delay(1000);

}
}

void efeitoNegado(){
int qtd_bips = 1; //definindo a quantidade de bips
for(int j=0; j<qtd_bips; j++){
//Ligando o buzzer com uma frequência de 100 hz e ligando o led vermelho.
tone(BUZZER,100);
digitalWrite(LED_VERMELHO, HIGH);
delay(1000);

//Desligando o buzzer e o led vermelho.
noTone(BUZZER);
digitalWrite(LED_VERMELHO, LOW);
delay(1000);

}
}

O que acontece é que o IDE não está reconhecendo o “efeitoNegado” e está me dando a seguinte informação:

’efeitoNegado’ was not declared in this scope

Já procurei por um longo tempo onde está o erro mas não encontro, uma vez que o mesmo problema não acontece com o void acessoLiberado, que em tese é a mesma programação, porém executando o contrário.

Alguém poderia me ajudar? Desde já agradeço a atenção dispensada.

@WPrimo experimente declarar os protótipos das funções no inicio do código antes do setup() ou loop()

Declare a função conforme ela está determinada. Explo

.
void efeitoNegado(void);
void acessoLiverado(void);

Se tiver parametro de passagem, declare a função com o parametro e se houver retorno de valor declare a função conforme o retorno.

uint8_t liberaAcesso(uint8_t variavel);
void qualquerFuncao(int dezena);

Experimente isso e posta o que obteve de resultado.

Abraços.