아두이노

cutter_5

내동 2022. 4. 11. 19:44

#include <Servo.h>
#include <Stepper.h>
Servo snipper ;

#define Step 7
#define dir 8
#define  servo_1 11
#define Open_ang 0
#define  Close_ang 125
const int sw_1 = 2;
const int sw_2 = 3;
const int LED = 13;
 
 int state =0;
 volatile byte rrun =0;
 volatile byte long t1, t2;
 void rotate();
 void onerotate();
 
  void setup(){
    pinMode(sw_1, INPUT);   pinMode(sw_2, INPUT);
    pinMode(Step, OUTPUT);  pinMode(dir , OUTPUT);
    pinMode(LED, OUTPUT);
    snipper.attach(servo_1);
    snipper.write(Open_ang);
    digitalWrite(dir, LOW);
    attachInterrupt(0,sw1_on,RISING);
    attachInterrupt(1,sw2_on,RISING);
    t1=millis();
     Serial.begin(9600);
       }

  void loop(){
          while(1){ 
      if(rrun==1) { digitalWrite(LED, HIGH); rotate(); } 
       else if(rrun == 0) return;
       digitalWrite(LED,LOW);}
          }

  void rotate() {
    if(rrun==1) { delay(1000);
    for(int i=0; i<1150;i++){
      digitalWrite(Step, HIGH); delayMicroseconds(2000);
      digitalWrite(Step, LOW); delayMicroseconds(2000);}
      delay(500); if(rrun==0) return;
      snipper.write(Close_ang); 
      delay(3500);  if(rrun == 0) return; 
      snipper.write(Open_ang);
      delay(1500);  if(rrun == 0) return;
       }
  }

    void onerotate(){ 
    for(int i=0;i<430;i++){
      digitalWrite(Step, HIGH);  delayMicroseconds(2000);
      digitalWrite(Step, LOW);  delayMicroseconds(2000);
              }
     delay(500);
       }
    
   void sw1_on(){
     t2= millis();
     if(( t2-t1)<100) return;
     else t1= t2;
      rrun=(rrun+1)%2;
      }

  void sw2_on(){
     t2= millis();
     if(( t2-t1)<100) return;
     else t1= t2;
      onerotate();
      }

'아두이노' 카테고리의 다른 글

Forward Kinematics(순운동학)  (0) 2023.11.10
Delta robot  (0) 2023.10.22
1-wire 통신(온습도측정)  (0) 2022.03.13
세탁기1  (0) 2022.01.28
세탁기 표시창  (0) 2022.01.25