//#include <Stepper.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define enaPin 2 // Enable pin of drive
#define stepPin 3 // Pulse pin of drive
#define dirPin 4 // Direction pin of drive
#define button 5 // Button input Pin
int count = 0;
float step_angle = 1.8;
float rpm, delay_const, d;
void custom_delay()
{
d = ((delay_const/rpm)/2);
return d;
}
void quarter_rotation()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TURNING 1st45DEG");
lcd.setCursor(3,1);
lcd.print("AT 500 RPM");
delay(1000);
digitalWrite (enaPin, LOW);
digitalWrite (dirPin, HIGH); // Clockwise
for(int i=0;i<25;i++)
{
rpm=500;
custom_delay();
digitalWrite (stepPin, HIGH);
delayMicroseconds(d);
digitalWrite (stepPin , LOW);
delayMicroseconds(d);
}
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TURNING 2nd45DEG");
lcd.setCursor(3,1);
lcd.print("AT 200 RPM");
for(int i=0;i<25;i++)
{
rpm=200;
custom_delay();
digitalWrite (stepPin, HIGH);
delayMicroseconds(d);
digitalWrite (stepPin , LOW);
delayMicroseconds(d);
}
digitalWrite (enaPin, LOW);
delay(1000);
lcd.clear();
}
void setup()
{
lcd.init();
lcd.backlight();
lcd.clear();
pinMode (stepPin, OUTPUT); // Pulse Pin as output
pinMode (dirPin, OUTPUT); // Direction pin as output
pinMode (enaPin, OUTPUT); // Enable pin as output
digitalWrite (stepPin, LOW); // Pulse pin is set LOW
digitalWrite (dirPin, LOW); // Direction pin is set LOW
digitalWrite (enaPin, LOW); // Enable pin is set HIGH (always disabled)
pinMode (button, INPUT_PULLUP); // Button input
delay_const = step_angle * 60 * 1000 * 1000 / (360);
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("MOTOR IS:-");
lcd.setCursor(5,1);
lcd.print("- OFF -");
while(!digitalRead(button))
{
lcd.setCursor(5,1);
lcd.print("- ON - ");
delay(2000);
quarter_rotation();
}
}