Vous êtes sur la page 1sur 4

#include <Wire.

h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE); // Inicializa o display n
o endereco 0x27

const int saidaDePulsos = 2; // Pino de saida de pulsos


const int saidaDirecao = 5; // Pino de saida da direcao de acionamento
const int botaoSelecao = 7; // Pino de entrada do botao de selecao
const int botaoAumenta = 8; // Pino de entrada do botao Aumenta
const int botaoDiminui = 9; // Pino de entrada do botao Diminui
const int botaoAvanca = 10; // Pino de entrada do botao Avanca
const int botaoRetrocede = 11; // Pino de entrada do botao Retrocede
const long numeroDePulsos = 160000;
int estadoBotaoSelecao = 0; // Le estado do boto Selecao
int estadoBotaoSelecaoAux = 0; // Auxiliar do botao Selecao
/*int estadoBotaoAumenta = 0; // Le estado do boto Aumenta
int estadoBotaoAumentaAux = 0; // Auxiliar do botao Aumenta
int estadoBotaoDiminui = 0; // Le estado do boto Diminui
int estadoBotaoDiminuiAux = 0; // Auxiliar do botao Diminui */
int estadoBotaoAvanca = 0; // Le estado do boto Avanca
int estadoBotaoAvancaAux = 0; // Auxiliar do botao Avanca
int estadoBotaoRetrocede = 0; // Le estado do boto Retrocede
int estadoBotaoRetrocedeAux = 0; // Auxiliar do botao Retrocede
int modo = 0; // Guarda o valor do modo selecionado
int avancaAuto = 0; // Avanco automatico
int retrocedeAuto = 0; // Retrocesso automatico
int divisao = 1; // numero de divisoes
int ciclo = 0; // numero do ciclo
long passos = 0; // numero de passos
int mostraDivisao =0;
int pausaDisplay = 0;
unsigned long tempoAntTm1 = 0; // registra tempo anterior TM01
const long intervaloTm1 = 250; // intervalo do TM01
unsigned long tempoAntTm2 = 0; // registra tempo anterior TM02
const long intervaloTm2 = 250; // intervalo do TM02
float pulsosFloat = 0.0;
float divisaoFloat = 0.0;
float pulsosAngulares = 0.0; // Resultado da divisao do numero de pulsos por div
isao

void setup()
{
pinMode(saidaDePulsos, OUTPUT); // Configuracao do pino como saida (pulsos)
pinMode(saidaDirecao, OUTPUT); // Configuracao do pino como saida (direcao)
pinMode(botaoSelecao, INPUT); // Configuracao do pino de entrada da Seleca
o
/*pinMode(botaoAumenta, INPUT); // Configuracao do pino de entrada do Aume
nta
pinMode(botaoDiminui, INPUT); // Configuracao do pino de entrada do Dimunu
i */
pinMode(botaoAvanca, INPUT); // Configuracao do pino de entrada do Avanca
pinMode(botaoRetrocede, INPUT); // Configuracao do pino de entrada do Retroc
ede
lcd.begin (16,2);
Serial.begin(9600); //<<<<<<--------------------- APAGUE DEPOIS
}
void loop() {

if (pausaDisplay == 1) {
Serial.print("Numero de pulsos:");// <<<<<<<<<<<<<<<< -----------
Apagar Tambem
Serial.println(numeroDePulsos);
Serial.print("Pausa Display: ");
Serial.println(pausaDisplay);
Serial.print("Passos: ");
Serial.println(passos);
Serial.print("Numero de pulsos: ");
Serial.println(pulsosAngulares);
//delay (1000);
pulsosFloat = numeroDePulsos;
divisaoFloat = divisao;
pulsosAngulares = (pulsosFloat / divisaoFloat);
}
//----------------Selecao de modo--------------------//
estadoBotaoSelecao = digitalRead(botaoSelecao);
if (estadoBotaoSelecao == LOW) { estadoBotaoSelecaoAux = 1; }
if (estadoBotaoSelecao == HIGH && estadoBotaoSelecaoAux == 1) {
modo = modo + 1;
estadoBotaoSelecaoAux = 0;
}
if (modo > 1) {modo = 0;}
//-------------Fim da Selecao de modo----------------//
//----tinha codigo aqui
//-----------------Funcao Avanca--------------------//
//**************** modo Programacao (modo ZERO)
if (modo == 0) {
estadoBotaoAvanca = digitalRead(botaoAvanca);
if (estadoBotaoAvanca == LOW) { estadoBotaoAvancaAux = 1; avancaAuto = 0;}
if (estadoBotaoAvanca == HIGH && estadoBotaoAvancaAux == 1) {
if (modo == 0 && divisao <=399) {divisao = divisao + 1;}
estadoBotaoAvancaAux = 0;
}
}
if (modo == 1) {
estadoBotaoAvanca = digitalRead(botaoAvanca);
if (estadoBotaoAvanca == LOW) { estadoBotaoAvancaAux = 1;}
if (estadoBotaoAvanca == HIGH && estadoBotaoAvancaAux == 1) {
ciclo = ciclo + 1;
digitalWrite(saidaDirecao, HIGH); // comanda o sentido de direcao
passos = 800; // <------------------ <----------------
estadoBotaoAvancaAux = 0;
}
}
//-------------Fim da funcao Avanca----------------//
//-----------------Funcao Retrocede--------------------//
if (modo == 0){
estadoBotaoRetrocede = digitalRead(botaoRetrocede);
if (estadoBotaoRetrocede == LOW) { estadoBotaoRetrocedeAux = 1; retrocedeAuto
= 0;}
if (estadoBotaoRetrocede == HIGH && estadoBotaoRetrocedeAux == 1) {
if (modo == 0 && divisao > 1) {divisao = divisao - 1;}
estadoBotaoRetrocedeAux = 0;
}
}
if (modo == 1) {
estadoBotaoRetrocede = digitalRead(botaoRetrocede);
if (estadoBotaoRetrocede == LOW) { estadoBotaoRetrocedeAux = 1;}
if (estadoBotaoRetrocede == HIGH && estadoBotaoRetrocedeAux == 1) {
ciclo = ciclo - 1;
digitalWrite(saidaDirecao, LOW); // comanda o sentido de direcao
passos = 800; // <------------------ <----------------
estadoBotaoRetrocedeAux = 0;
}
}
//-------------Fim da funcao Retrocede----------------//
if (passos > 0) {
digitalWrite(saidaDePulsos, HIGH); // sets the LED on
delayMicroseconds(400);
//delay(1); // waits for a second
digitalWrite(saidaDePulsos, LOW); // sets the LED off
delayMicroseconds(400);
//delay(1); // waits for a second
passos = passos - 1 ;
}
if (passos == 0) { pausaDisplay = 1; }
if (passos != 0) { pausaDisplay = 0; }

//---------------------- Timer 01 --------------------//


if (modo == 0){
ciclo = 0;
unsigned long tempoAtualTm1 = millis();
if (tempoAtualTm1 - tempoAntTm1 >= intervaloTm1) {
tempoAntTm1 = tempoAtualTm1;
mostraDivisao = divisao;
//lcd.setBacklight(HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TORN ALBUQUERQUE");
lcd.setCursor(0,1);
lcd.print("N. DIV.:");
lcd.setCursor(9,1);
lcd.print(divisao);
lcd.setCursor(13,1);
lcd.print("PRG");
if (estadoBotaoAvanca != LOW && divisao <=399) {
avancaAuto = avancaAuto + 1;
if (avancaAuto > 2 && avancaAuto <= 20 && estadoBotaoAvancaAux == 0 ) {divis
ao = divisao + 1;}
if (avancaAuto > 20 && estadoBotaoAvancaAux == 0 && divisao < 391) {divisao
= divisao + 10;}
}
if (estadoBotaoRetrocede != LOW && divisao > 1) {
retrocedeAuto = retrocedeAuto + 1;
if (retrocedeAuto > 2 && retrocedeAuto <= 20 && estadoBotaoRetrocedeAux == 0
) {divisao = divisao - 1;}
if (retrocedeAuto > 20 && estadoBotaoRetrocedeAux == 0 && divisao > 10 ) {di
visao = divisao - 10;}
}
}
// --------------------------------------------------//
}
//---------------------- Timer 02 --------------------//
unsigned long tempoAtualTm2 = millis();
if (modo == 1 && passos == 0){
if (tempoAtualTm2 - tempoAntTm2 >= intervaloTm2) {
tempoAntTm2 = tempoAtualTm2;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("T.ALBUQUERQUE OP");
lcd.setCursor(0,1);
lcd.print("DIV:");
lcd.setCursor(4,1);
lcd.print(divisao);
lcd.setCursor(8,1);
lcd.print("PASS:");
lcd.setCursor(13,1);
lcd.print(ciclo);
}
}
}

Vous aimerez peut-être aussi