   }
 }
 
-void iniciaTrabalho(){
-  if (conta_ciclo >= 3){
+void iniciaTrabalho() {
+  if (conta_ciclo == 0) {
+    reiniciaCiclo();
+    conta_ciclo++;
+  } else if (conta_ciclo >= 3) {
     ligaFuncao(led_teste_1, "Led Teste 1"); // Exemplo para teste.
     // ciclo de trabalho
   }
   funcaoReset();
 }
 
-void modoAlarme(){
-  if (!alarme_ativo){
-    if (ativo(sensor_porta)){
+void modoAlarme() {
+  if (!alarme_ativo) {
+    if (ativo(sensor_porta)) {
       bloqueioPorAlarme("Sensor da Porta");
-    } else if (ativo(sensor_painel)){
+    } else if (ativo(sensor_painel)) {
       bloqueioPorAlarme("Sensor do Painel");
-    } else if (ativo(sensor_maquina)){
+    } else if (ativo(sensor_maquina)) {
       bloqueioPorAlarme("Sensor da Máquina");
     }
   }

  geraPWM(pot_solda_horizontal, &tempo_PWM_horizontal, solda_horizontal, NomeSoldaHorizontal);
  geraPWM(pot_solda_datador, &tempo_PWM_datador, solda_datador, NomeSoldaDatador);

  if (!alarme_ativo){
    standBy();
    modoTeste();
  }

  escreveSerial(texto + " detectou uma falha!");
}

void acionaGeral() {
  btUmClique(bt_geral, &estbt_geral, &estbta_geral, &atr_geral, &maquina_ligada);
}

void acionaDosador() {
  btUmClique(bt_dosador, &estbt_dosador, &estbta_dosador, &atr_dosador, &dosador_ligado);
}

void acionaDatador() {
  if (maquina_ligada && !alarme_ativo) {
    btUmClique(bt_datador, &estbt_datador, &estbta_datador, &atr_datador, &datador_ligado);
  }
}

void funcaoReset() {
  unsigned long tempo_atual = millis();
  if (!ciclo_resetado) {
    unsigned long fim_ciclo = inicio_ciclo + ciclo_padrao;
    unsigned long novo_ciclo = tempo_atual - inicio_ciclo;
    if ((ativo(sensor_reset) || (tempo_atual >= fim_ciclo))) {
      if (novo_ciclo > ciclo_minimo && novo_ciclo < ciclo_maximo) {
        ciclo_resetado = VERDADEIRO;
        conta_ciclo++;
        escreveSerial((String) conta_ciclo + ": " + (String) (tempo_atual - inicio_ciclo));
        reiniciaCiclo();
      } else if (novo_ciclo >= ciclo_maximo) {
        escreveSerial("Erro, reset maior que o maximo: " + (String) novo_ciclo);
        reset_falso = VERDADEIRO;
      } else if (novo_ciclo <= ciclo_minimo) {
        escreveSerial("Erro, reset menor que o minimo: " + (String) novo_ciclo);
        reset_falso = VERDADEIRO;
      }
    }
  } else if ((tempo_atual - inicio_ciclo) > atraso_resets) {
    if (ciclo_resetado) {
      ciclo_resetado = FALSO;
      } else if (reset_falso) {
        reset_falso = FALSO;
      }
  }
}

void reiniciaCiclo() {
  inicio_ciclo = millis();
  fotocelula_liberada = FALSO;
  fotocelula_cortou = FALSO;
}

void geraPWM(byte pot, unsigned long *inicio, byte saida, String nome) {
  unsigned long ativo = map(analogRead(pot), 0, 1023, 0, ciclo_PWM);
  unsigned long inativo = ciclo_PWM - ativo;
  if (maquina_ligada && !alarme_ativo) {
    if (millis() > *inicio && millis() <= (*inicio + ativo)) {
      liga(saida);
    } else if (millis() > (*inicio + ativo) && millis() < (*inicio + ciclo_PWM)) {
      desliga(saida);
    } else if (millis() >= (*inicio + ciclo_PWM)) {
      *inicio = millis();
