   if (maquina_ligada) {
     ligaFuncao(geral, NomeGeral);
   } else {
-    if (ligado(geral)){
+    if (ligado(geral) && !desligamento_suave){
+      desligamento_suave = VERDADEIRO;
+      escreveSerial("Fazendo desligamento suave.");
+    } else if (conta_ciclos == desligarEm) {
       desligaFuncao(geral, NomeGeral);
       resetCompleto();
     }
-    // desligaFuncao(geral, NomeGeral);
   }
 }
 

  resetado = VERDADEIRO;
  fotocelula_liberada = FALSO;
  fotocelula_cortou = FALSO;
}

void cicloMedio() {

boolean maquina_ligada = FALSO;
boolean dosador_ligado = FALSO;
boolean datador_ligado = FALSO;
boolean desligamento_suave = FALSO;
unsigned long desligarEm = 0;
boolean alarme_ativo = FALSO;
boolean fotocelula_liberada = FALSO;
boolean fotocelula_cortou = FALSO;
