   desligaFuncao(mandibula, NomeMandibula);
   desligaFuncao(faca, NomeFaca);
   desligaFuncao(refrigeracao, NomeRefrigeracao);
-  desligaFuncao(datador, NomeDatador);
-  desligaFuncao(vertical, NomeVertical);
+  if (!datador_contra_mandibula){
+    desligaFuncao(datador, NomeDatador);
+  }
+  if (!vertical_contra_mandibula){
+    desligaFuncao(vertical, NomeVertical);
+  }
 }
 
 void resetCompleto() {

  }
}

// void funcaoSegura(const byte saida, String nome, unsigned long inicio, unsigned long fim, byte seguranca, boolean alarmar){
//   if (ativo(seguranca)){
//     funcaoSimples(saida, nome, inicio, fim);
//   } else {
//     if (alarmar){
//       bloqueioPorAlarme("Sensor da Mandíbula");
//     } else {
//       if (ligado(mandibula) && ativo(sensor_mandibula)){
//         desligaFuncao(saida, nome);
//       }
//     }
//   }
// }

void funcaoBloqueante(const byte saida, String nome, unsigned long inicio, unsigned long fim){
  if (ligado(mandibula) && ativo(sensor_mandibula)){
    desligaFuncao(saida, nome);

    funcaoSimples(mandibula, NomeMandibula, ti_mandibula, tf_mandibula);
    funcaoSegura(faca, NomeFaca, ti_faca, tf_faca, sensor_mandibula);
    funcaoSimples(refrigeracao, NomeRefrigeracao, ti_refrigeracao, tf_refrigeracao);
    if (datador_contra_mandibula && datador_ligado){
      if (ligado(mandibula) && ativo(sensor_mandibula)){
        desligaFuncao(datador, NomeDatador);
      } else { ligaFuncao(datador, NomeDatador); }
    } else { funcaoComLiberacao(datador, NomeDatador, ti_datador, tf_datador, datador_ligado); }

    if (vertical_contra_mandibula){
      if (ligado(mandibula) && ativo(sensor_mandibula)){
        desligaFuncao(vertical, NomeVertical);
      } else { ligaFuncao(vertical, NomeVertical); }
    } else { funcaoBloqueante(vertical, NomeVertical, ti_vertical, tf_vertical); }
  }
  funcaoReset();
}
