//PROJETO SECCIONADORA ELETROELETRÔNICA
//DATA DE CRIAÇÃO DA PROGRAMAÇÃO 16/09/2022
//AUTOR MACKSON ROBERTO SANTOS DA SILVA
//CONTATO [email protected] - (13)92000-7988
#define m_motor_off 12 //rele de desativação do motor NF
#define m_motor_on 11 //rele de ativação do motor NA
#define desc_prensor 10 //rele de descida do prensor NA
#define sub_riscador 9 //rele de subida do riscador NA
#define car_avancar 8 //rele de avanço do carrinho NA
#define car_retroceder 7 //rele de retrocesso do carrinho NA
#define s_fim_curso 6 //sensor do fim de curso
#define s_inicio_curso 5 //sensor do incio de curso
#define b_start_ciclo 4 //botão de inicio do ciclo
#define b_desc_prensor 3 //botão descida do prensor
#define b_sub_prensor 2 //botão subida do prensor
#define b_sub_riscador A0 //botão de subida do riscador
#define b_desc_riscador A1 //botão de descida do riscador
bool firstCicle = true; //VERIFICA SE FOI O PRIMEIRO CICLO
int cicloProgram = 0; //CONTADOR DO TEMPO DA SERRA (NÃO ALTERAR)
int timeSerra = 240; //AJUSTE DE TEMPO PARA MANTER SERRA LIGADA APÓS CICLO
String ponto = ".";
String pontoCount = "";
void setup() {
Serial.begin(9600);
//pinos de entrada
pinMode(s_fim_curso,INPUT_PULLUP);
pinMode(s_inicio_curso,INPUT_PULLUP);
pinMode(b_start_ciclo,INPUT_PULLUP);
pinMode(b_sub_prensor,INPUT_PULLUP);
pinMode(b_desc_prensor,INPUT_PULLUP);
pinMode(b_sub_riscador,INPUT_PULLUP);
pinMode(b_desc_riscador,INPUT_PULLUP);
//pinos de saída
pinMode(m_motor_on,OUTPUT);
pinMode(m_motor_off,OUTPUT);
pinMode(desc_prensor,OUTPUT);
pinMode(sub_riscador,OUTPUT);
pinMode(car_avancar,OUTPUT);
pinMode(car_retroceder,OUTPUT);
}
void loop() {
//FUNÇÃO DE INICIALIZAÇÃO ===============================================
//reseta a posição do carrinho,sobe o prensor e desliga a serra
if(firstCicle == true){
//delay(8000);
Serial.println("Iniciando procedimento de inicializacao inicial...");
digitalWrite(m_motor_on, LOW);
digitalWrite(m_motor_off, HIGH);
digitalWrite(sub_riscador, HIGH);
digitalWrite(desc_prensor, HIGH);
delay(3000);
digitalWrite(car_avancar, HIGH);
digitalWrite(car_retroceder, LOW);
//digitalWrite(desc_prensor, LOW);
delay(3000);
Serial.println("retrocedendo carrinho");
while(digitalRead(s_inicio_curso) == LOW){
digitalWrite(car_retroceder, LOW);
delay(1800);
}
digitalWrite(car_retroceder, LOW);
digitalWrite(m_motor_on, HIGH);
firstCicle = false;
Serial.println("Fim dos procedimentos iniciais...");
delay(35000);
}
//LEITURA DOS BOTÕES FISICOS ==========================================
//realiza a leitura dos botões subida/descida prensor e riscador
if(digitalRead(b_desc_prensor) == HIGH && digitalRead(b_sub_prensor) == LOW){
digitalWrite(desc_prensor, HIGH);
}
if(digitalRead(b_desc_prensor) == LOW && digitalRead(b_sub_prensor) == HIGH){
digitalWrite(desc_prensor, LOW);
}
if(digitalRead(b_desc_riscador) == HIGH && digitalRead(b_sub_riscador) == LOW){
digitalWrite(sub_riscador, HIGH);
}
if(digitalRead(b_desc_riscador) == LOW && digitalRead(b_sub_riscador) == HIGH){
digitalWrite(sub_riscador, LOW);
}
//ROTINA DE LEITURA DO BOTÃO DE INICIO DO CICLO
//o ciclo só é iniciado caso o botão seja pressionado e o sensor de inicio
//de curso esteja acionado
if(digitalRead(s_inicio_curso) == HIGH){
//acão ao pressionar botão de ciclo
if(digitalRead(b_start_ciclo) == LOW){
Serial.println(digitalRead(b_start_ciclo));
Serial.println("iniciando ciclo");
//INICIO DO CICLO =============================================================================================================
Serial.println("incio do ciclo em adamento");
Serial.println("avancando carro");
digitalWrite(desc_prensor, LOW);
while(digitalRead(s_fim_curso) == LOW){
digitalWrite(sub_riscador, HIGH);
digitalWrite(m_motor_on, LOW);
digitalWrite(m_motor_off, HIGH);
digitalWrite(desc_prensor, LOW);
delay(500); //VERIFICAR TEMPO DE RESPOSTA DO FINAL
digitalWrite(car_retroceder, HIGH);
delay(500);
digitalWrite(car_avancar, LOW);
Serial.println("sensor fim de curso");
Serial.println(digitalRead(s_fim_curso));
delay(6940);
digitalWrite(car_avancar, HIGH);
Serial.println(digitalRead(s_fim_curso));
}
//digitalWrite(car_avancar, HIGH);
if(digitalRead(s_fim_curso) == HIGH){
Serial.println("chegou ao fim de curso");
Serial.println("subindo serra e retrocedendo");
digitalWrite(sub_riscador, LOW);
//delay(1000);
digitalWrite(car_avancar, HIGH);
delay(1000);
digitalWrite(car_retroceder, LOW);
}
//retrocede o carrinho até encostar no sensor de fim de curso do inicio
while(digitalRead(s_inicio_curso) == LOW){
Serial.println("retrocedendo");
digitalWrite(m_motor_on, LOW);
digitalWrite(m_motor_off, HIGH);
delay(500);
}
digitalWrite(car_retroceder, LOW);
digitalWrite(sub_riscador, HIGH);
delay(2500);
digitalWrite(car_retroceder, HIGH);
//FIM DO CICLO ======================================
//desce o riscador, sobe o pensor e inicia o timer pra desligar o motor da serra
delay(500);
digitalWrite(desc_prensor, HIGH);
cicloProgram = 0;//ZERA O TEMPO PRA DESLIGAR A SERRA
}
}
cicloProgram++; //INCREMENTA O TEMPO PRA DESLIGAR A SERRA
//CONDIÇÃO PARA ENCERRAR O MOTOR DA SERRA
if(cicloProgram >= timeSerra){
digitalWrite(m_motor_on, HIGH);
digitalWrite(m_motor_off, LOW);
cicloProgram = 0;
}
Serial.println(cicloProgram);
delay(500);
}