//---------------------------- IMH ------------------------- void selecao() // Seleciona parametros e menus { if (menu == 0) // Menu 0 - ajuste da guia { // // BT1 menu 1; BT2 5 steps; BT3 50 steps; BT4 -5 steps; BT5 -50 steps lcd.clear(); // LCD clear lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print("Ajuste a guia de fio"); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print("e aperte ENTER para"); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(" continuar"); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 while (menu == 0) // Enquanto for menu 0 { if (digitalRead(BT1) == LOW) // Se muda de menu { menu = 1; // Muda para o menu 1 seleciona funcao delay(600); // Delay } else if (digitalRead(BT2) == LOW) // Se avança step em 5 steps { stepper.step(5); // 5 steps delay(20); // Delay lcd.setCursor(0, 1); // Cursor LCD em 0,1 } else if (digitalRead(BT3) == LOW) // Se avança step em 50 steps { stepper.step(50); // 50 steps delay(20); // Delay lcd.setCursor(0, 1); // Cursor LCD em 0,1 } else if (digitalRead(BT4) == LOW) // Se avança step em -5 steps { stepper.step(-5); // -5 steps delay(20); // Delay lcd.setCursor(0, 1); // Cursor LCD em 0,1 } else if (digitalRead(BT5) == LOW) // Se avança step em -50 steps { stepper.step(-50); // -50 steps delay(20); // Delay lcd.setCursor(0, 1); // Cursor LCD em 0,1 } } } if (menu == 1) // Menu 1 - seleciona funcao { // // BT1; BT2 menu 8; BT3; BT4 Configurar menu 2 ; BT5 lcd.clear(); // LCD clear lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print("ESCOLHA UMA OPCAO"); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print("ESQ.: configurar "); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print("DIR.: iniciar "); // Print while (menu == 1) // Enquanto menu = 1 { if (digitalRead(BT2) == LOW) // Se Inicia processo { lcd.clear(); // LCD clear lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print("****************************"); // Print lcd.clear(); // LCD clear lcd.setCursor(3, 1); // Cursor LCD em 3,1 lcd.print("INICIA PROCESSO "); // Print delay(500); // Delay menu = 8; // Muda para o menu 8 Inicia processo / calculos } else if (digitalRead(BT4) == LOW) // Se selecionou configuracoes { lcd.clear(); // LCD clear lcd.setCursor(4, 0); // Cursor LCD em 4,0 lcd.print("CONFIGURACOES"); // Print delay(1000); // Delay lcd.clear(); // LCD clear menu = 2; // Muda para o menu 2 Numero de espiras } } } if (menu == 2) // Menu 2 - Numero de espiras { // // BT1 menu 3; BT2 Incrementa * 10; BT3 Decrementa; BT4 Incrementa / 10 ; BT5 Incrementa incrementa = 1; // Define incremento inicial lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print("Num. de espiras:"); // Numero de espiras lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(numEsp); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print while (menu == 2) // Enquanto menu 2 { // // Num. de espiras if (digitalRead(BT1) == LOW) { menu = 3; // Muda para o menu 3 Bitola do fio delay(600); // Delay } else if (digitalRead(BT2) == LOW) // Aumenta fator do incremento { incrementa = incrementa * 10; // Aumenta fator do incremento lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(numEsp); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print delay(500); // Delay } else if (digitalRead(BT4) == LOW) // Diminui fator do incremento { incrementa = incrementa / 10; // Diminui fator do incremento lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(numEsp); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print delay(500); // Delay } else if (digitalRead(BT3) == LOW) // Atualiza decremento { numEsp = numEsp - incrementa; // Atualiza decremento numero de espiras if (numEsp < 0) // Se numero de espiras negativo numEsp = 0; // Numero de espiras igual a zero lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(numEsp); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print delay(500); // Delay } else if (digitalRead(BT5) == LOW) // Atualiza incremento { numEsp = numEsp + incrementa; lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(numEsp); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print delay(500); // Delay } } } if (menu == 3) // Menu 3 - Bitola do fio { // // BT1 menu 4; BT2 Incrementa * 10; BT3 Decrementa; BT4 Incrementa / 10 ; BT5 Incrementa incrementa = 1; // Fator incrementa = 1 lcd.clear(); // LCD clear lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print("Bitola do fio (mm):"); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(bitFio); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print while (menu == 3) // Enquanto menu 3 { // // Bitola do fio if (digitalRead(BT1) == LOW) // Muda para menu 4 Comprimento do carretel { menu = 4; // Muda para menu 4 Comprimento do carretel delay(600); // Delay } else if (digitalRead(BT2) == LOW) // Aumenta fator do incremento { incrementa = incrementa * 10; // Aumenta fator do incremento lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(bitFio); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print delay(500); // Delay } else if (digitalRead(BT4) == LOW) // Diminui fator do incremento { incrementa = incrementa / 10; // Diminui fator do incremento lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(bitFio); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print delay(500); // Delay } else if (digitalRead(BT3) == LOW) // Atualiza decremento { bitFio = bitFio - incrementa; // Atualiza decremento bitola do fio if (bitFio < 0) // Se bitola do fio negativa bitFio = 0; // Bitola do fio igual a 0 lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(bitFio); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print delay(500); // Delay } else if (digitalRead(BT5) == LOW) // Atualiza inecremento bitola do fio { bitFio = bitFio + incrementa; // Atualiza incremento lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(bitFio); // Print lcd.setCursor(8, 1); // Cursor LCD em 8,1 lcd.print(incrementa); // Print delay(500); // Delay } } } if (menu == 4) // Menu 4 - Comprimento do carretel { // // BT1 menu 5; BT2 Incrementa * 10; BT3 Incrementa; BT4 Incrementa / 10 ; BT5 Decrementa incrementa = 1; // Fator incrementa = 1 lcd.clear(); // LCD clear lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print("Largura do carretel"); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" em milimetro:"); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(" "); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(carrLeng); // Print lcd.setCursor(8, 2); // Cursor LCD em 8,2 lcd.print(incrementa); // Print while (menu == 4) // Enquanto menu 4 { // // Largura do carretel if (digitalRead(BT1) == LOW) // Mudar para menu 5 Seleciona funcao { menu = 5; // Muda para o menu 5 Seleciona funcao delay(500); // Delay } else if (digitalRead(BT2) == LOW) // Aumenta fator do incremento { incrementa = incrementa * 10; // Aumenta fator do incremento lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(" "); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(carrLeng); // Print lcd.setCursor(8, 2); // Cursor LCD em 8,2 lcd.print(incrementa); // Print delay(500); // Delay } else if (digitalRead(BT4) == LOW) // Diminui fator do incremento { incrementa = incrementa / 10; // Diminui fator do incremento lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(" "); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(carrLeng); // Print lcd.setCursor(8, 2); // Cursor LCD em 8,2 lcd.print(incrementa); // Print delay(500); // Delay } else if (digitalRead(BT3) == LOW) // Atualiza decremento { carrLeng = carrLeng - incrementa; // Atualiza decremento largura carretel if (carrLeng < 0) // Se largura negativa carrLeng = 0; // Largura igual a 0 lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(" "); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(carrLeng); // Print lcd.setCursor(8, 2); // Cursor LCD em 8,2 lcd.print(incrementa); // Print delay(500); // Delay } else if ( digitalRead(BT5) == LOW) // Atualiza incremento { carrLeng = carrLeng + incrementa; // Atualiza incremento lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(" "); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(carrLeng); // Print lcd.setCursor(8, 2); // Cursor LCD em 8,2 lcd.print(incrementa); // Print delay(500); // Delay } } } if (menu == 5) // Janela 5 - Seleciona funcao { // // BT1; BT2 menu 8; BT3; BT4 inicio = 6; BT5 lcd.clear(); // LCD clear lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print("ESCOLHA UMA OPCAO"); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print("ESQ.: + configuracao"); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print("DIR.: para iniciar "); // Print while (menu == 5) // Enquanto menu = 5 { if (digitalRead(BT2) == LOW) // Mudar para menu 9 Inicia processo { lcd.clear(); // LCD clear lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print("****************************"); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print("INICIA PROCESSO "); // Print delay(500); // Delay menu = 8; // Muda para o menu 8 } else if (digitalRead(BT4) == LOW) // Mudar para menu 6 define se tem isolação entre camadas { lcd.setCursor(0, 0); // Cursor LCD em 0,0 delay(500); // Delay lcd.clear(); // LCD clear menu = 6; // Muda para o menu 6 define se tem isolação entre camadas } } } if (menu == 6) // Menu 6 - define se tem isolação entre camadas { // // BT1 menu 7; BT2; BT3 NAO; BT4; BT5 SIM lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print("ISOLACAO? + -"); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.setCursor(5, 1); // Cursor LCD em 5,1 lcd.print(" Sim Nao"); // Print lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 while (menu == 6) // Enquanto menu 6 { if (digitalRead(BT1) == LOW) // Muda de menu { menu = 7; // Muda para o menu 7 Fator de correcao de passo delay(500); // Delay } else if (digitalRead(BT3) == LOW) // Definir isolacao NAO { lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print("NAO =="); // Print delay(500); // Delay } else if (digitalRead(BT5) == LOW) // Definir isolacao SIM { isolador = true; // Define audio ligado lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print("SIM =="); // Print delay(500); // Delay } } } if (menu == 7) // Menu 7 - Fator de correcao de passo { // // BT1 menu 8; BT2; BT3 decrementa dciclos; BT4; BT5 Incrementa dciclos lcd.clear(); // LCD clear lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print("Fcorrecao Avan % "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(dciclos); // Print while (menu == 7) // Enquanto menu = 7 { // // Fcorrecao Avan % if (digitalRead(BT1) == LOW) // Muda de menu { menu = 8; // Muda para o menu 8 Inicia processo / calculos delay(500); // Delay } else if (digitalRead(BT3) == LOW) // Decrementa fator de passo { dciclos = dciclos - 1; // Decrementa fator de passo if (dciclos < 0) // Se fator de passo negativo dciclos = 0; // fator de passo igual a 0 lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(dciclos); // Print delay(500); // Delay } else if (digitalRead(BT5) == LOW ) // Incrementa fator de passo { dciclos = dciclos + 1; // Incrementa fator de passo lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(" "); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print(dciclos); // Print delay(500); // Delay } } } if (menu == 8) // Menu 8 - Inicia processo / calculos { // // BT1; BT2 direto = 0, menu 9; BT3; BT4 direto = 1, menu 9; BT5 espCam = (carrLeng * 1 / bitFio) / (1 + dln / 100); // numero de espiras por camada lcd.clear(); // LCD clear lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print(" SENTIDO"); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print(" ESQ <-- OU --> DIR"); // Print while (menu == 8) // Enquanto menu 8 { // // SENTIDO if (digitalRead(BT2) == LOW) // Define sentido CW { direct = 1; // Sentido CW menu = 9; // Inicia processo } else if (digitalRead(BT4) == LOW) // Define sentido CCW { direct = 0; // Sentido CCW menu = 9; // Inicia processo } } lcd.clear(); // LCD clear lcd.setCursor(0, 0); // Cursor LCD em 0,0 lcd.print("PROCESSO ON "); // Print lcd.setCursor(3, 1); // Cursor LCD em 3,1 lcd.print(" "); // Print lcd.setCursor(2, 1); // Cursor LCD em 2,1 lcd.setCursor(8, 1); // Cursor LCD em 08,1 delay(1000); // Delay lcd.clear(); // LCD clear lcd.setCursor(3, 1); // Cursor LCD em 3,1 lcd.print(" "); // Print lcd.setCursor(2, 0); // Cursor LCD em 2,0 lcd.print("ESPIRAS CAMADAS"); // Print delay(500); // Delay // // Calcula ciclos do step por espira ciclos = espFase * bitFio * 360 / (1 * 0.703125 * 1 * 3.14159 * 5) * 1.8 * (1 + dciclos / 100) / 0.2965; numEspAtual = 0; // Zera contador de espiras feitas camf = 0; // Zera contador de camadas feitas LCDContagem(); // Mostra contagem de espiras e camadas } } //-------------------------------------------------- void LCDContagem() // Print contagem de espiras e camadas { lcd.setCursor(3, 1); // Cursor LCD em 3,1 lcd.print(numEspAtual); // Print lcd.setCursor(12, 1); // Cursor LCD em 12,1 lcd.print(camf); // Print lcd.setCursor(14, 1); // Cursor LCD em 14,1 } //---------------------------- FIM DE PROCESSO -------------------------------- void endProcess() { digitalWrite(motor_carretel, LOW ); // Desliga motor do crretel lcd.clear(); // LCD clear lcd.print("Processo concluido"); // Print lcd.setCursor(0, 1); // Cursor LCD em 0,1 lcd.print("com sucesso:"); // Print lcd.setCursor(0, 2); // Cursor LCD em 0,2 lcd.print("Enrolamento com"); // Print lcd.setCursor(0, 3); // Cursor LCD em 0,3 lcd.print(numEsp); // Print lcd.setCursor(8, 3); // Cursor LCD em 8,3 lcd.print("Espiras"); // Print delay(300); // Delay while (menu == 9) // Enquanto menu 9 { if (digitalRead(BT3) == LOW) // BT1; BT2; BT3 menu 0; BT4; BT5 { menu = 0; // menu inicial } } } //------------------------------- CCW --------------------------- // funcoes de acionamento do motor de passo void counterclockwise () // Avanca step CCW { stepper.step(1); // Avanca um step CCW } //-------------------------------- CW ------------------------------ void clockwise() // Avanca step CW { stepper.step(-1); // Avanca um step CW }