#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int DIR = 12;
const int STEP = 14;
const int steps_per_rev = 200;
int volta;
int botaomais = 4;
int botaoroda = 5;
int botaolimpa = 18;
int lap;
int count = 1;
int volta_atual = 0;
unsigned long startTime;
unsigned long currentTime;
const unsigned long period = 1;
void setup()
{
lcd.init();
lcd.backlight();
pinMode(4 , INPUT_PULLUP); //botao limpa
pinMode(5, INPUT_PULLUP); //botao roda
pinMode(18, INPUT_PULLUP); //botao limpa
Serial.begin(115200);
pinMode(STEP, OUTPUT);
pinMode(DIR, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("Ajuste : 01");
lcd.setCursor(0, 1);
lcd.print("Parado : 00");
startTime = millis(); //initial start time
}
void loop()
{
currentTime = millis();
botaomais = digitalRead(4);
botaoroda = digitalRead(5);
botaolimpa = digitalRead(18);
if (botaolimpa == LOW)
{
count = 0;
lcd.setCursor(0, 0);
lcd.print("Ajuste : ");
if (count < 10) {
lcd.print("0");
}
lcd.print(count);
delay(200);
}
if (botaomais == LOW)
{
count++;
delay(200);
lcd.setCursor(0, 0);
lcd.print("Ajuste : ");
if (count < 10) {
lcd.print("0");
}
lcd.print(count);
}
volta = count * 200;
lap = volta / 200;
if (currentTime - startTime >= period)
{
if (botaoroda == LOW)
{
//digitalWrite(DIR, LOW);
for(int i = 0; i<=volta; i++)
// for(int i = 0; i<=steps_per_rev; i++)
{
digitalWrite(DIR, LOW);
digitalWrite(STEP, HIGH);
delayMicroseconds(0.01);
digitalWrite(STEP, LOW);
delayMicroseconds(0.01);
lcd.setCursor(0,1);
lcd.print("volta_atual: ");
volta_atual = lap - (i / 200);
if (volta_atual < 100)
{
lcd.print("0");
}
lcd.print(volta_atual);
if (volta_atual == 0)
{
lcd.setCursor(0, 1);
lcd.print("Parado ");
}
}
}
startTime = currentTime;
}
}