#include <Servo.h>
//------------------------- stepper --------------------------------
#define stepPin 7
#define dirPin 8
//------------------------- servo ----------------------------------
Servo snippers_1;
Servo snippers_3;
#define servo_1 3
#define servo_3 4
#define openAngle_1 90
#define openAngle_2 90
#define closedAngle 0
//--------------------------- input -------------------------------
#define start_Bt 13
#define up_Bt 5
int state = 1;
const byte stop_Bt = 2;
volatile byte ledon = LOW;
void setup() {
Serial.begin(9600);
pinMode(start_Bt, INPUT_PULLUP);
pinMode(stop_Bt , INPUT_PULLUP);
attachInterrupt( digitalPinToInterrupt( stop_Bt), stop_Work, RISING);
pinMode(up_Bt , INPUT_PULLUP);
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
snippers_1.attach(servo_1 );
snippers_3.attach(servo_3);
snippers_1.write(openAngle_1);
snippers_3.write(openAngle_1);
delay(1000);
digitalWrite( dirPin, 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)){
for(int i = 0; i < 377 ; i++){
digitalWrite(stepPin,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin,LOW);
delayMicroseconds(2000);}
for(int i = 0; i < 560 ; i++){
digitalWrite(stepPin,HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin,LOW);
delayMicroseconds(1000);}
for(int i = 0; i < 280 ; i++){
digitalWrite(stepPin,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin,LOW);
delayMicroseconds(2000);}
Serial.println(" motor run");
delay(1000);
snippers_1.write(closedAngle);
Serial.print(" servo_1, run closeAngle :");
Serial.println (closedAngle);
delay(2000);
snippers_3.write(closedAngle);
Serial.print(" servo_3 run closeAngle :");
Serial.println (closedAngle);
delay(2000);
snippers_1.write(openAngle_1);
snippers_3.write(openAngle_1);
Serial.print(" servo_1,3, run openAngle :");
Serial.println (openAngle_1);
delay(2000); }}
void run_upBt(){
if(digitalRead(up_Bt)){
for(int i = 0; i < 430 ; i++){
digitalWrite(stepPin,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin,LOW);
delayMicroseconds(2000);}
} }
void stop_Work (){
digitalWrite (dirPin , LOW);
digitalWrite (stepPin , LOW);
snippers_1.write(openAngle_1);
snippers_3.write(openAngle_1);}