#include <Arduino.h>
#include <Wire.h>
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
#define BTN_UP 7
#define BTN_DWN 5
#define BTN_OK 4
#define BTN_Exit 3
#define Relayin 2 // for remote
#define M1_PWM_L 10
#define M1_PWM_R 11
#define M1_Driver_EN 13
LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display
int m_scroller = 1;
int hom_scraller = 1;
//********************all manue options parameter **********
bool homeX = true;
bool motor1_optnX = false;
bool motor2_optnX = false;
bool m1_forwardSpeedx = false;
bool m1_reverseSpeedx = false;
bool m1_slowStopSetting_x = false;
//******************saving parameter************************
int m1_slow_start_value = 0;
int m1_frowardSpped_value = 0;
int m1_reversedSpped_value = 0;
int m1_slowStop_value = 0;
bool m1_clockwise = true;
bool m1_in_process = false;
unsigned long m1_slow_start_millis = 0;
unsigned long m1_slow_stop_millis = 0;
//******************************************
int m1_incriment = 0;
int m1_decriment = 0;
bool m1_time_out = false;
bool time_setupX = false;
int hour_m1 = 0;
int minit_m1 = 0;
int sec_m1 = 0;
int hour_count = 0;
int minit_count = 0;
int sec_count = 0;
int m1_precsion_time_start = m1_slow_start_value / m1_frowardSpped_value;
int m1_precsion_time_stop = m1_slowStop_value / m1_frowardSpped_value;
int m1_precsion_time_start_CC = m1_slow_start_value / m1_reversedSpped_value;
int m1_precsion_time_stop_CC = m1_slowStop_value / m1_reversedSpped_value;
void setup()
{
Serial.begin(9600);
lcd.backlight();
lcd.init();
pinMode(BTN_UP, INPUT_PULLUP);
pinMode(BTN_DWN, INPUT_PULLUP);
pinMode(BTN_OK, INPUT_PULLUP);
pinMode(BTN_Exit, INPUT_PULLUP);
pinMode(Relayin, INPUT_PULLUP);
pinMode(M1_PWM_L, OUTPUT);
pinMode(M1_PWM_R, OUTPUT);
pinMode(M1_Driver_EN, OUTPUT);
digitalWrite(M1_Driver_EN, LOW);
m1_slow_start_value = (EEPROM.read(0) * 250) + EEPROM.read(1);
m1_frowardSpped_value = EEPROM.read(4);
m1_reversedSpped_value = EEPROM.read(5);
m1_slowStop_value = (EEPROM.read(2) * 250) + EEPROM.read(3);
hour_m1 = EEPROM.read(6);
minit_m1 = EEPROM.read(7);
sec_m1 = EEPROM.read(8);
setup_calculation();
}
void setup_calculation()
{
m1_precsion_time_start = m1_slow_start_value / m1_frowardSpped_value;
m1_precsion_time_stop = m1_slowStop_value / m1_frowardSpped_value;
m1_precsion_time_start_CC = m1_slow_start_value / m1_reversedSpped_value;
m1_precsion_time_stop_CC = m1_slowStop_value / m1_reversedSpped_value;
}
//***** dispaying charachter using single line****************************
void lcd_display(int x, int y, String s)
{
lcd.setCursor(x, y);
lcd.print(s);
}
//***** dispaying intiger using single line code****************************
void lcd_display_int(int x, int y, int s)
{
lcd.setCursor(x, y);
lcd.print(s);
}
void lcd_display_long(int x, int y, long s)
{
lcd.setCursor(x, y);
lcd.print(s);
}
void scroll_to_right(int x)
{
for (int i = 0; i < x; i++)
{
lcd.scrollDisplayRight();
delay(200);
}
}
void homePage()
{
if (homeX)
{
if (digitalRead(BTN_UP) == LOW)
{
m_scroller++;
if (m_scroller > 2)
{
m_scroller = 1;
}
}
if (digitalRead(BTN_DWN) == LOW)
{
m_scroller--;
if (m_scroller < 1)
{
m_scroller = 2;
}
}
switch (m_scroller)
{
case 1:
lcd_display(0, 0, " Welcome ");
lcd_display(0, 1, "=>1st Motor setting");
lcd_display(0, 2, " Duration time ");
// lcd_display(0, 3, " ");
if (digitalRead(BTN_OK) == LOW)
{
homeX = false;
motor1_optnX = true;
time_setupX = false;
m_scroller = 1;
lcd.clear();
delay(300);
}
break;
case 2:
lcd_display(0, 0, " Welcome ");
lcd_display(0, 1, " 1st Motor setting");
lcd_display(0, 2, "=>Duration time ");
// lcd_display(0, 3, " ");
if (digitalRead(BTN_OK) == LOW)
{
homeX = false;
motor1_optnX = false;
time_setupX = true;
m_scroller = 1;
lcd.clear();
delay(300);
}
break;
}
}
}
void time_setup_page()
{
if (time_setupX)
{
if (digitalRead(BTN_UP) == LOW)
{
m_scroller++;
if (m_scroller > 3)
{
m_scroller = 1;
}
}
if (digitalRead(BTN_DWN) == LOW)
{
m_scroller--;
if (m_scroller < 1)
{
m_scroller = 3;
}
}
if (digitalRead(BTN_Exit) == LOW)
{
homeX = true;
motor1_optnX = false;
time_setupX = false;
m_scroller = 1;
lcd.clear();
delay(300);
return;
}
switch (m_scroller)
{
case 1:
lcd_display(0, 0, "=>Hour setup ");
lcd_display(0, 1, " Minutes setup ");
lcd_display(0, 2, " Second setup ");
if (digitalRead(BTN_OK) == LOW)
{
lcd.clear();
delay(300);
while (digitalRead(BTN_Exit) != LOW)
{
lcd_display(0, 1, " Hour ");
lcd_display_int(11, 2, hour_m1);
if (digitalRead(BTN_UP) == LOW)
{
hour_m1++;
if (hour_m1> 255)
{
hour_m1 = 0;
}
lcd_display(0, 2, " ");
delay(100);
}
else if (digitalRead(BTN_DWN) == LOW)
{
hour_m1--;
if (hour_m1< 0)
{
hour_m1= 255;
}
lcd_display(0, 2, " ");
delay(100);
}
if (digitalRead(BTN_OK) == LOW)
{
EEPROM.update(6, hour_m1);
save_function();
}
}
delay(300);
}
break;
case 2:
lcd_display(0, 0, " Hour setup ");
lcd_display(0, 1, "=>Minutes setup ");
lcd_display(0, 2, " Second setup ");
if (digitalRead(BTN_OK) == LOW)
{
lcd.clear();
delay(300);
while (digitalRead(BTN_Exit) != LOW)
{
lcd_display(0, 1, " Minute ");
lcd_display_int(11, 2, minit_m1);
if (digitalRead(BTN_UP) == LOW)
{
minit_m1++;
if (minit_m1> 60)
{
minit_m1 = 0;
}
lcd_display(0, 2, " ");
delay(100);
}
else if (digitalRead(BTN_DWN) == LOW)
{
minit_m1--;
if (minit_m1< 0)
{
minit_m1 = 60;
}
lcd_display(0, 2, " ");
delay(100);
}
if (digitalRead(BTN_OK) == LOW)
{
EEPROM.update(7, minit_m1);
save_function();
}
}
delay(300);
}
break;
case 3:
lcd_display(0, 0, " Hour setup ");
lcd_display(0, 1, " Minutes setup ");
lcd_display(0, 2, "=>Second setup ");
if (digitalRead(BTN_OK) == LOW)
{
lcd.clear();
delay(300);
while (digitalRead(BTN_Exit) != LOW)
{
lcd_display(0, 1, " Seconds ");
lcd_display_int(11, 2, sec_m1);
if (digitalRead(BTN_UP) == LOW)
{
sec_m1++;
if (sec_m1> 60)
{
sec_m1= 0;
}
lcd_display(0, 2, " ");
delay(100);
}
else if (digitalRead(BTN_DWN) == LOW)
{
sec_m1--;
if (sec_m1< 0)
{
sec_m1 = 60;
}
lcd_display(0, 2, " ");
delay(100);
}
if (digitalRead(BTN_OK) == LOW)
{
EEPROM.update(8,sec_m1);
save_function();
}
}
delay(300);
}
break;
}
}
}
void motor1_optn()
{
if (motor1_optnX)
{
if (digitalRead(BTN_UP) == LOW)
{
m_scroller++;
if (m_scroller > 4)
{
m_scroller = 1;
}
}
if (digitalRead(BTN_DWN) == LOW)
{
m_scroller--;
if (m_scroller < 1)
{
m_scroller = 4;
}
}
if (digitalRead(BTN_Exit) == LOW)
{
homeX = true;
motor1_optnX = false;
motor2_optnX = false;
m_scroller = 1;
lcd.clear();
delay(300);
return;
}
switch (m_scroller)
{
case 1:
lcd_display(0, 0, "=>Slow start ");
lcd_display(0, 1, " Forward speed ");
lcd_display(0, 2, " Reverse speed ");
lcd_display(0, 3, " Slow stop ");
if (digitalRead(BTN_OK) == LOW)
{
lcd.clear();
delay(300);
while (digitalRead(BTN_Exit) != LOW)
{
lcd_display(0, 1, " M1 Slow start ");
lcd_display_int(11, 2, m1_slow_start_value);
if (digitalRead(BTN_UP) == LOW)
{
m1_slow_start_value += 10;
if (m1_slow_start_value > 5000)
{
m1_slow_start_value = 0;
}
lcd_display(0, 2, " ");
delay(100);
}
else if (digitalRead(BTN_DWN) == LOW)
{
m1_slow_start_value -= 10;
if (m1_slow_start_value < 0)
{
m1_slow_start_value = 5000;
}
lcd_display(0, 2, " ");
delay(100);
}
if (digitalRead(BTN_OK) == LOW)
{
int x = m1_slow_start_value / 250;
int y = m1_slow_start_value % 250;
EEPROM.update(0, x);
EEPROM.update(1, y);
save_function();
}
}
delay(300);
}
break;
case 2:
lcd_display(0, 0, " Slow start ");
lcd_display(0, 1, "=>Forward speed ");
lcd_display(0, 2, " Reverse speed ");
lcd_display(0, 3, " Slow stop ");
if (digitalRead(BTN_OK) == LOW)
{
lcd.clear();
delay(300);
while (digitalRead(BTN_Exit) != LOW)
{
lcd_display(0, 1, " M1 Forward Speed ");
lcd_display_int(11, 2, m1_frowardSpped_value);
if (digitalRead(BTN_UP) == LOW)
{
m1_frowardSpped_value++;
if (m1_frowardSpped_value > 100)
{
m1_frowardSpped_value = 0;
}
lcd_display(0, 2, " ");
delay(100);
}
else if (digitalRead(BTN_DWN) == LOW)
{
m1_frowardSpped_value--;
if (m1_frowardSpped_value < 0)
{
m1_frowardSpped_value = 100;
}
lcd_display(0, 2, " ");
delay(100);
}
if (digitalRead(BTN_OK) == LOW)
{
EEPROM.update(10, m1_frowardSpped_value);
save_function();
}
}
delay(300);
}
break;
case 3:
lcd_display(0, 0, " Slow start ");
lcd_display(0, 1, " Forward speed ");
lcd_display(0, 2, "=>Reverse speed ");
lcd_display(0, 3, " Slow stop ");
if (digitalRead(BTN_OK) == LOW)
{
lcd.clear();
delay(300);
while (digitalRead(BTN_Exit) != LOW)
{
lcd_display(0, 1, " M1 Reverse Speed ");
lcd_display_int(11, 2, m1_reversedSpped_value);
if (digitalRead(BTN_UP) == LOW)
{
m1_reversedSpped_value++;
if (m1_reversedSpped_value > 100)
{
m1_reversedSpped_value = 0;
}
lcd_display(0, 2, " ");
delay(100);
}
else if (digitalRead(BTN_DWN) == LOW)
{
m1_reversedSpped_value--;
if (m1_reversedSpped_value < 0)
{
m1_reversedSpped_value = 100;
}
lcd_display(0, 2, " ");
delay(100);
}
if (digitalRead(BTN_OK) == LOW)
{
EEPROM.update(11, m1_reversedSpped_value);
save_function();
}
}
delay(300);
}
break;
case 4:
lcd_display(0, 0, " Slow start ");
lcd_display(0, 1, " Forward speed ");
lcd_display(0, 2, " Reverse speed ");
lcd_display(0, 3, "=>Slow stop ");
if (digitalRead(BTN_OK) == LOW)
{
lcd.clear();
delay(300);
while (digitalRead(BTN_Exit) != LOW)
{
lcd_display(0, 1, " M1 Slow stop ");
lcd_display_int(11, 2, m1_slowStop_value);
if (digitalRead(BTN_UP) == LOW)
{
m1_slowStop_value += 10;
if (m1_slowStop_value > 5000)
{
m1_slowStop_value = 0;
}
lcd_display(0, 2, " ");
delay(100);
}
else if (digitalRead(BTN_DWN) == LOW)
{
m1_slowStop_value -= 10;
if (m1_slowStop_value < 0)
{
m1_slowStop_value = 5000;
}
lcd_display(0, 2, " ");
delay(100);
}
if (digitalRead(BTN_OK) == LOW)
{
int x = m1_slowStop_value / 250;
int y = m1_slowStop_value % 250;
EEPROM.update(2, x);
EEPROM.update(3, y);
save_function();
}
}
delay(300);
}
break;
}
}
}
void save_function()
{
setup_calculation();
lcd.clear();
lcd_display(0, 0, " Saving Data ");
for (size_t i = 0; i < 20; i++)
{
lcd_display(i, 2, "#");
delay(300);
}
lcd.clear();
delay(300);
}
void function_Runner()
{
homePage();
motor1_optn();
time_setup_page();
}
//*******************motor function****************
void m1_clock_wise(int speed)
{
// Serial.print("m1_clck spped ");
// Serial.println(speed);
int xpeed = map(speed, 0, 100, 0, 255);
analogWrite(M1_PWM_L, xpeed);
analogWrite(M1_PWM_R, 0);
}
void m1_anti_clock_wise(int speed)
{
// Serial.print("m1 anti_clck spped ");
// Serial.println(speed);
int xpeed = map(speed, 0, 100, 0, 255);
analogWrite(M1_PWM_L, 0);
analogWrite(M1_PWM_R, xpeed);
}
//**************************************************
void loop()
{
function_Runner();
if (digitalRead(Relayin) == LOW)
{
if (m1_in_process == false)
{
// Serial.println("turn oned");
setup_calculation();
m1_in_process = true;
m1_time_out = false;
}
else if (m1_in_process == true)
{
m1_time_out = false;
}
}
motor1_process();
}
void motor1_process()
{
if (m1_in_process == false)
{
// Serial.println("process m1 not true");
return;
}
if (m1_clockwise)
{
if (m1_incriment <= m1_frowardSpped_value)
{
//------------abnormal--------------------
if (m1_slow_start_value == 0)
{
m1_incriment = m1_frowardSpped_value;
m1_clock_wise(m1_incriment);
m1_incriment++;
}
else if (m1_slow_start_value <= 1000)
{
m1_precsion_time_start = m1_slow_start_value / 4;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_frowardSpped_value / 4);
if (m1_incriment > m1_frowardSpped_value)
{
m1_incriment = m1_frowardSpped_value;
m1_clock_wise(m1_incriment);
}
else
{
m1_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
else if (m1_slow_start_value > 1000 && m1_slow_start_value <= 2000)
{
m1_precsion_time_start = m1_slow_start_value / 5;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_frowardSpped_value / 5);
if (m1_incriment > m1_frowardSpped_value)
{
m1_incriment = m1_frowardSpped_value;
m1_clock_wise(m1_incriment);
}
else
{
m1_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
else if (m1_slow_start_value > 2000 && m1_slow_start_value <= 3000)
{
m1_precsion_time_start = m1_slow_start_value / 6;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_frowardSpped_value / 6);
if (m1_incriment > m1_frowardSpped_value)
{
m1_incriment = m1_frowardSpped_value;
m1_clock_wise(m1_incriment);
}
else
{
m1_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
else if (m1_slow_start_value > 3000 && m1_slow_start_value <= 4000)
{
m1_precsion_time_start = m1_slow_start_value / 7;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_frowardSpped_value / 7);
if (m1_incriment > m1_frowardSpped_value)
{
m1_incriment = m1_frowardSpped_value;
m1_clock_wise(m1_incriment);
}
else
{
m1_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
else if (m1_slow_start_value > 4000 && m1_slow_start_value <= 5000)
{
m1_precsion_time_start = m1_slow_start_value / 8;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_frowardSpped_value / 8);
if (m1_incriment > m1_frowardSpped_value)
{
m1_incriment = m1_frowardSpped_value;
m1_clock_wise(m1_incriment);
}
else
{
m1_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
//-----------------------normal--------------------------
else if (millis() - m1_slow_start_millis >= m1_precsion_time_start)
{
m1_slow_start_millis = millis();
m1_clock_wise(m1_incriment);
m1_incriment++;
}
}
else if (m1_time_out)
{
if (m1_decriment >= 0)
{
//------------abnormal--------------------
if (m1_slowStop_value == 0)
{
m1_decriment = 0;
m1_clock_wise(m1_decriment);
m1_decriment--;
}
else if (m1_slowStop_value <= 1000)
{
m1_precsion_time_stop = m1_slowStop_value / 4;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_frowardSpped_value / 4);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_clock_wise(m1_decriment);
}
else
{
m1_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
else if (m1_slowStop_value > 1000 && m1_slowStop_value <= 2000)
{
m1_precsion_time_stop = m1_slowStop_value / 5;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_frowardSpped_value / 5);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_clock_wise(m1_decriment);
}
else
{
m1_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
else if (m1_slowStop_value > 2000 && m1_slowStop_value <= 3000)
{
m1_precsion_time_stop = m1_slowStop_value / 6;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_frowardSpped_value / 6);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_clock_wise(m1_decriment);
}
else
{
m1_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
else if (m1_slowStop_value > 3000 && m1_slowStop_value <= 4000)
{
m1_precsion_time_stop = m1_slowStop_value / 7;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_frowardSpped_value / 7);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_clock_wise(m1_decriment);
}
else
{
m1_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
else if (m1_slowStop_value > 4000 && m1_slowStop_value <= 5000)
{
m1_precsion_time_stop = m1_slowStop_value / 8;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_frowardSpped_value / 8);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_clock_wise(m1_decriment);
}
else
{
m1_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
//-----------------------normal--------------------------
else if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop)
{
m1_slow_stop_millis = millis();
m1_clock_wise(m1_decriment);
m1_decriment--;
}
}
else
{
m1_clockwise = false;
m1_incriment = 0;
m1_decriment = m1_frowardSpped_value;
m1_slow_start_millis = 0;
m1_slow_stop_millis = 0;
m1_time_out = false;
m1_in_process = false;
}
}
}
else
{
if (m1_incriment <= m1_reversedSpped_value)
{
//------------abnormal--------------------
if (m1_slow_start_value == 0)
{
m1_incriment = m1_reversedSpped_value;
m1_clock_wise(m1_incriment);
m1_incriment++;
}
else if (m1_slow_start_value <= 1000)
{
m1_precsion_time_start_CC = m1_slow_start_value / 4;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start_CC)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_reversedSpped_value / 4);
if (m1_incriment > m1_reversedSpped_value)
{
m1_incriment = m1_reversedSpped_value;
m1_anti_clock_wise(m1_incriment);
}
else
{
m1_anti_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
else if (m1_slow_start_value > 1000 && m1_slow_start_value <= 2000)
{
m1_precsion_time_start_CC = m1_slow_start_value / 5;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start_CC)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_reversedSpped_value / 5);
if (m1_incriment > m1_reversedSpped_value)
{
m1_incriment = m1_reversedSpped_value;
m1_anti_clock_wise(m1_incriment);
}
else
{
m1_anti_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
else if (m1_slow_start_value > 2000 && m1_slow_start_value <= 3000)
{
m1_precsion_time_start_CC = m1_slow_start_value / 6;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start_CC)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_reversedSpped_value / 6);
if (m1_incriment > m1_reversedSpped_value)
{
m1_incriment = m1_reversedSpped_value;
m1_anti_clock_wise(m1_incriment);
}
else
{
m1_anti_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
else if (m1_slow_start_value > 3000 && m1_slow_start_value <= 4000)
{
m1_precsion_time_start_CC = m1_slow_start_value / 7;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start_CC)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_reversedSpped_value / 7);
if (m1_incriment > m1_reversedSpped_value)
{
m1_incriment = m1_reversedSpped_value;
m1_anti_clock_wise(m1_incriment);
}
else
{
m1_anti_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
else if (m1_slow_start_value > 4000 && m1_slow_start_value <= 5000)
{
m1_precsion_time_start_CC = m1_slow_start_value / 8;
if (millis() - m1_slow_start_millis >= m1_precsion_time_start_CC)
{
m1_slow_start_millis = millis();
m1_incriment += (m1_reversedSpped_value / 8);
if (m1_incriment > m1_reversedSpped_value)
{
m1_incriment = m1_reversedSpped_value;
m1_anti_clock_wise(m1_incriment);
}
else
{
m1_anti_clock_wise(m1_incriment);
}
m1_incriment++;
}
}
//-----------------------normal--------------------------
else if (millis() - m1_slow_start_millis >= m1_precsion_time_start_CC)
{
m1_slow_start_millis = millis();
m1_anti_clock_wise(m1_incriment);
m1_incriment++;
}
}
else if (m1_time_out)
{
if (m1_decriment >= 0)
{
//------------abnormal--------------------
if (m1_slowStop_value == 0)
{
m1_decriment = 0;
m1_anti_clock_wise(m1_decriment);
m1_decriment--;
}
else if (m1_slowStop_value <= 1000)
{
m1_precsion_time_stop_CC = m1_slowStop_value / 4;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop_CC)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_reversedSpped_value / 4);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_anti_clock_wise(m1_decriment);
}
else
{
m1_anti_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
else if (m1_slowStop_value > 1000 && m1_slowStop_value <= 2000)
{
m1_precsion_time_stop_CC = m1_slowStop_value / 5;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop_CC)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_reversedSpped_value / 5);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_anti_clock_wise(m1_decriment);
}
else
{
m1_anti_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
else if (m1_slowStop_value > 2000 && m1_slowStop_value <= 3000)
{
m1_precsion_time_stop_CC = m1_slowStop_value / 6;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop_CC)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_reversedSpped_value / 6);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_anti_clock_wise(m1_decriment);
}
else
{
m1_anti_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
else if (m1_slowStop_value > 3000 && m1_slowStop_value <= 4000)
{
m1_precsion_time_stop_CC = m1_slowStop_value / 7;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop_CC)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_reversedSpped_value / 7);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_anti_clock_wise(m1_decriment);
}
else
{
m1_anti_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
else if (m1_slowStop_value > 4000 && m1_slowStop_value <= 5000)
{
m1_precsion_time_stop_CC = m1_slowStop_value / 7;
if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop_CC)
{
m1_slow_stop_millis = millis();
m1_decriment -= (m1_reversedSpped_value / 7);
if (m1_decriment < 0)
{
m1_decriment = 0;
m1_anti_clock_wise(m1_decriment);
}
else
{
m1_anti_clock_wise(m1_decriment);
}
m1_decriment--;
}
}
//-----------------------normal--------------------------
else if (millis() - m1_slow_stop_millis >= m1_precsion_time_stop_CC)
{
m1_slow_stop_millis = millis();
m1_anti_clock_wise(m1_decriment);
m1_decriment--;
}
}
else
{
m1_clockwise = true;
m1_incriment = 0;
m1_decriment = m1_frowardSpped_value;
m1_slow_start_millis = 0;
m1_slow_stop_millis = 0;
m1_time_out = false;
m1_in_process = false;
}
}
}
}