/*
Nome do Projeto: Bobinadeira
Nome do Aquivo: bobinadeira_Botao13.ino
link: http://labdegaragem.com/forum/topics/bobinadeira-autom-tica-controlada-com-arduino
Dependencias: funcoes13.ino
MCU: ATmega
Board: Arduino Uno/Mega/Mini
Compilador N/A
IDE: Arduino IDE 1.8.5
Hardware: Arduino UNO/MEGA/Mini
Escrito por: Rui Viana
Modificado por: N/A
Data: 23/06/2018
Uso: Didático
Desenhos CONTADOR2_SIMU.PDF
Copyright @ N/A
Este programa é software livre;
e é distribuído na esperança que possa ser útil, mas SEM QUALQUER GARANTIA;
mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM.
*/
//#define debug
#include <LiquidCrystal_I2C.h> // Biblioteca para uso LCD I2C
#include <Stepper.h> // Biblioteca para uso do step motor
Stepper stepper(200, 12, 13); // Ports do step e steps por volta
//#ifdef debug
//LiquidCrystal_I2C lcd(0x38, 2, 1, 0, 7, 6, 5, 4, 3, POSITIVE); // Debug
//#else
//LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
//#endif
//LiquidCrystal lcd(11, 9, 6, 5, 4, 3);
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define brk 4 // Controle do break
#define BT1 5 // Botoes para controle do menu
#define BT2 6
#define BT3 7
#define BT4 8
#define BT5 9
#define encoder 10 // Entrada do encoder do motor principal
#define motor_carretel 11 // Port motor do carretel
int numEsp = 10; // Numero de espiras previstas
float bitFio = 1; // Bitola do fio em mm
float carrLeng = 10; // Comprimento do carretel
int numEspAtual = 0; // Numero de espirar atuais
bool incrementou = false; // Controle de incremento de espiras
int espFase = 1; // N de espiras por etapa
int espCam = 0; // Calcula o numero de espira por camada
int camf = 0; // Numero de camada feita
float dln = 0; // Fator de correção de largura
float dciclos = 0; // Fator de correção passo
bool isolador = false; // Contrele de isolador de camada
int menu = 0; // Telas do sistema
int conta = 0; // Variavel encoder
int conta_old = 0; // Estado ant encoder
int cstep = 0; // Contador de passos
int ciclos = 0; // Calcula o numero de ciclos da guia linear para casa passo
bool direct = 1; // Sentido da guia
float incrementa = 1; // Offset de incremento
bool pause = false; // Contrele de pause
//---------------------------- SETUP -----------------------------
void setup()
{
stepper.setSpeed(500); // Define velocidade do step
//lcd.begin(20, 4);
lcd.init();
lcd.backlight();
//lcd.begin(16, 2); // Inicializa LCD
pinMode(encoder, INPUT); // Encoder como INPUT
pinMode(brk, INPUT_PULLUP); // Break como INPUT
#ifdef debug
pinMode(encoder, INPUT_PULLUP); // Debug
#endif
pinMode(BT1, INPUT_PULLUP); // Botoes como INPUT
pinMode(BT2, INPUT_PULLUP);
pinMode(BT3, INPUT_PULLUP);
pinMode(BT4, INPUT_PULLUP);
pinMode(BT5, INPUT_PULLUP);
pinMode(motor_carretel, OUTPUT); // Port do motor do carretel como saida
digitalWrite(motor_carretel, LOW); // Desliga motor do carretel
}
//---------------------------- LOOP -----------------------------
void loop()
{
selecao(); // Rotina IHM
cstep = 0; // Zera contador de passos do step
digitalWrite(motor_carretel, HIGH); // Liga motor de giro do carretel
conta = digitalRead(encoder); // Atualiza a contagem de espiras
if (conta == LOW and conta_old == HIGH) // Se sensor motor HIGH e conta_old LOW (Houve ciclo do motor)
{
incrementou = true; // Informa incremento de espiras
numEspAtual++; // Incrementa numero de espiras feitas
}
conta_old = conta; // Atualiza contador de pulso
if (incrementou == true) // Houve incremento de espiras
{
LCDContagem(); // Mostra contagem de espiras e camadas
incrementou = false; // Desabilita informar incremento de espiras
if (numEspAtual == numEsp) // Numero de espiras realizadas = num de espiras esperadas
{
digitalWrite(motor_carretel, LOW); // Desliga motor de giro do carretel
endProcess(); // Para processo
}
if (numEspAtual < numEsp) // Numero de espiras realizadas < num de espiras esperadas
{
if (direct != LOW) // Se direcao e CW
{
while (cstep < ciclos) // Enquanto contagem de passos for menor que ciclos
{
clockwise(); // Gira um step CW
cstep = cstep + 1; // Incrementa contador de passos
}
}
else // Se direcao e CCW
{
while (cstep < ciclos) // Enquanto contagem de passos for menor que ciclos
{
counterclockwise(); // Gira um step CCW
cstep = cstep + 1; // Incrementa contador de passos
}
}
if (numEspAtual % espCam == 0) // Se modulo de qte de espiras por camada = 0
{
camf++; // Incremen ta contador de camadas
LCDContagem(); // Mostra contagem de espiras e camadas
direct = not(direct); // Inverte direcao do step
if (isolador == true) // Se precisa de isolador ligado
{
digitalWrite(motor_carretel, LOW); // Desligue o motor do carretel
int t = 0; // Define t como inteiro e igual a zero ??
for (t = 0; t < 50;) // Faca 50 vezes ??
{
if (digitalRead(brk) == 0) // Se o brake foi pressionado
{
delay(500); // Delay
break; // termine o for
}
}
}
}
while (pause == HIGH)
{
digitalWrite(motor_carretel, LOW); // Desligue o motor do carretel
if (digitalRead(brk) == 0) // Se o brake foi pressionado
{
delay(30); // Debouncing
if (digitalRead(brk) == 0) // Se o brake continua pressionado
{
pause = LOW; // Desabilita pause
delay(500); // Delay
}
}
}
}
}
if (digitalRead(brk) == 0) // Se o brake foi pressionado
{
delay(30); // Debouncing
if (digitalRead(brk) == 0) // Se o brake continua pressionado
{
pause = HIGH; // Habilita pause
}
}
}
//---------------------------- 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
}