#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 |