#include <Servo.h>
//------------------------- stepper --------------------------------
#define stepPin_1 7
#define dirPin_1 8
#define stepPin_2 10
#define dirPin_2 11
//------------------------- servo ----------------------------------
Servo snippers_1;
#define servo_1 9
#define openAngle_1 90
#define openAngle_2 90
#define closedAngle 0
//--------------------------- input -------------------------------
#define start_Bt 13
#define stop_Bt 2
#define up_Bt 5
int state = 1;
void setup() {
Serial.begin(9600);
pinMode(start_Bt, INPUT_PULLUP);
pinMode(stop_Bt , INPUT_PULLUP);
pinMode(up_Bt , INPUT_PULLUP);
pinMode(stepPin_1,OUTPUT);
pinMode(dirPin_1,OUTPUT);
pinMode(stepPin_2,OUTPUT);
pinMode(dirPin_2,OUTPUT);
snippers_1.attach(servo_1 );
snippers_1.write(openAngle_1);
delay(100);
digitalWrite( dirPin_1, LOW);
digitalWrite( dirPin_2, LOW);
}
void loop() {
if (digitalRead(start_Bt)){
cutting_Work();}
if(digitalRead(stop_Bt)){
stop_Work();}
if(digitalRead(up_Bt)){
run_upBt(); }
}
void cutting_Work(){
while( ! digitalRead (stop_Bt)){
digitalWrite(dirPin_1, HIGH);
for(int i = 0; i < 377 ; i++){
digitalWrite(stepPin_1,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin_1,LOW);
delayMicroseconds(2000);}
if(digitalRead(stop_Bt) == HIGH){break;}
for(int i = 0; i < 560 ; i++){
digitalWrite(stepPin_1,HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin_1,LOW);
delayMicroseconds(1000);}
if(digitalRead(stop_Bt) == HIGH){break;}
for(int i = 0; i < 250 ; i++){
digitalWrite(stepPin_1,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin_1,LOW);
delayMicroseconds(2000);}
digitalWrite(dirPin_1, LOW);
digitalWrite(stepPin_1,LOW);
delay(1000);
if(digitalRead(stop_Bt) == HIGH){break;}
snippers_1.write(closedAngle);
delay(1000);
digitalWrite(dirPin_2,HIGH);
for(int i = 0; i < 100 ; i++){
digitalWrite(stepPin_2,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin_2,LOW);
delayMicroseconds(2000);}
delay(2000);
for(int i = 0; i < 100 ; i++){
digitalWrite(stepPin_2,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin_2,LOW);
delayMicroseconds(2000);}
digitalWrite(dirPin_2, LOW);
digitalWrite(stepPin_2,LOW);
if(digitalRead(stop_Bt) == HIGH){break;}
snippers_1.write(openAngle_1);
delay(1000);
Serial.println(" motor run");}}
void run_upBt(){
digitalWrite(dirPin_1,HIGH);
for(int i = 0; i < 430 ; i++){
digitalWrite(stepPin_1,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin_1,LOW);
delayMicroseconds(2000);}
digitalWrite(dirPin_1,LOW); }
void stop_Work (){
digitalWrite (dirPin_1 , LOW);
digitalWrite (stepPin_1 , LOW);
digitalWrite (dirPin_2 , LOW);
digitalWrite (stepPin_2 , LOW);
snippers_1.write(openAngle_1);}