#include <AccelStepper.h>
AccelStepper faca; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
AccelStepper carro(9,8,7,6);
int AvancarFaca = 13;
int VoltarFaca = 12;
int Manopla = 11;
int AvancarCarrinho = 10;
int avancar = 0;
int voltar = 0;
int ponto = 0;
int neutro = 0;
void setup(){
faca.setMaxSpeed(500);
carro.setMaxSpeed(500);
pinMode(AvancarFaca, INPUT);
pinMode(VoltarFaca, INPUT);
pinMode(Manopla, OUTPUT);
pinMode(AvancarCarrinho, INPUT);
}
void move_faca(){
//bloco que avança a faca para fazer o corte
if (digitalRead(AvancarFaca) == HIGH){
avancar = 1;
while (avancar == 1) {
faca.setSpeed(100);
faca.runSpeed();
//se terminou de cortar, vai entrar em contato com o botão de voltar
if (digitalRead(VoltarFaca) == HIGH){
avancar = 0;
faca.setSpeed(0);
faca.runSpeed();
delay(50);
}
}
}
//bloco que confere se a faca entrou em contato com o botão de voltar
else if (digitalRead(VoltarFaca) == HIGH){
voltar = 1;
while (voltar == 1) {
faca.setSpeed(-100);
faca.runSpeed();
//vai voltar apenas o suficiente para sair do contato com o botão
if (digitalRead(VoltarFaca) == LOW){
voltar = 0;
faca.setSpeed(0);
faca.runSpeed();
delay(50);
}
}
}
//não vai mais se movimentar enquanto espera mudança
/*else{
faca.setSpeed(0);
faca.runSpeed();
}*/
}
void corte(){
//bloco que confere se a faca está em ponto neutro
if (digitalRead(AvancarFaca) == LOW and digitalRead(VoltarFaca) == LOW){
neutro = 1;
while (neutro == 1){
faca.setSpeed(-100);
faca.runSpeed();
//vai mover a faca até entrar em contato com avançar faca
if (digitalRead(AvancarFaca) == HIGH){
neutro = 0;
faca.setSpeed(0);
faca.runSpeed();
delay(50);
}
}
}
void transporte(){
//bloco que verifica se o carrinho está longe do ponto inicial
//se estiver, vai aproximar
if (digitalRead(AvancarCarrinho) == LOW){
ponto = 0;
while (ponto == 0) {
carro.setSpeed(-100);
carro.runSpeed();
if (digitalRead(AvancarCarrinho) == HIGH){ //e então vai parar de se mover
ponto = 1;
carro.setSpeed(0);
carro.runSpeed();
delay(50);
}
}
}
//bloco que verifica se o carrinho está próximo do ponto inicial
//se estover, vai afastar
if (digitalRead(AvancarCarrinho) == HIGH){
ponto = 1;
while (ponto == 1) {
carro.setSpeed(300); //ver nro de passos até chegar ao final do trilho rápido
carro.runSpeed();
if (digitalRead(AvancarCarrinho) == LOW){
ponto = 0;
delay(50); //esse delay deve ser grande o bastante para dar tempo do carrinho chegar ao fim do trilho
}
}
}
//já fez as verificações, vai chamar a função de corte
}
void move_carrinho(){
}
void loop(){
delay(500);
digitalWrite(Manopla, HIGH);
transporte();
move_faca();
corte();
}