BASIC4MCU | 질문게시판 | 아두이노 제어 질문 드립니다
페이지 정보
작성자 닷모드 작성일2019-05-02 19:30 조회8,533회 댓글2건첨부파일
본문
/*
제가 하고자 하는것은 이것입니다.!
1.스위치 1개(작동버튼),리미트 스위치 두개(UP,DOWN),UP스위치,DOWN 스위치,비상정지버튼
2.작동스위치를 누르면 DC모터 역방향 구동된다.
3.DOWN리미트 스위치에 닿으면 DC모터가 1초간 더 작동후 1.5초간 멈춘다
4.1.5초간 멈춘 후 UP리미트 스위치에 닿을떄 까지 모터가 역방향 한다
5.UP리미트 스위치에 닿으면 작동이 끝이 난다.
UP스위치를 누르면 모터가 역회전한다
DOWN스위치를 누르면 모터가 정회전한다
비상정지 버튼이 눌리면 그자리에서 작동이 정지한다.
입니다!
*/
int ULT=7; // 릴레이(초음파)
int SW=8; // 작동스위치 푸시버튼사용
int UP=9; // 실린더 UP 버튼
int DOWN=10; // 실린더 DOWN버튼
int LSU=11; // 리미트UP
int LSD=12; // 리미트DOWN
int EMG=13; // 비상정지버튼
int IN1=3; // 드라이버 정
int IN2=4; // 드라이버 역
int EN=11; //PWM으로 속도 조절시 필요
int mode=0; // 초기 정지모드
//
void motor_stop(){ digitalWrite(IN1,0); digitalWrite(IN2,0); }
void motor_up() { digitalWrite(IN1,1); digitalWrite(IN2,0); }
void motor_dn() { digitalWrite(IN1,0); digitalWrite(IN2,1); }
//
void setup(){
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(EN,OUTPUT);
pinMode(ULT,OUTPUT); //릴레이(진동자 On/Off)
pinMode(SW,INPUT_PULLUP);
pinMode(LSU,INPUT_PULLUP);
pinMode(LSD,INPUT_PULLUP);
pinMode(EMG,INPUT_PULLUP);
pinMode(UP,INPUT_PULLUP);
pinMode(DOWN,INPUT_PULLUP);
}
//
void loop(){
if(!digitalRead(EMG)||!digitalRead(SW))
{ motor_stop(); digitalWrite(ULT,LOW); } // 비상정지 또는 작동스위치 off면 정지
else{
while(!digitalRead(LSU)){ // UP리미트 감지까지 dn
if(!digitalRead(EMG)){ motor_stop(); return; } //만약 EMG스위치 값이 반대가 될경우(즉 눌릴경우) 모터스탑 후 while문 탈출
motor_dn();
}
//
digitalWrite(ULT,HIGH); motor_dn(); delay( 200); motor_stop(); delay(1500); //초음파 ON, 정회전 0.2초 //1.5초간 정지
//
while(!digitalRead(LSD)){ //DOWN 리미트 감지까지 구동
if(!digitalRead(EMG )){ motor_stop(); return; }
motor_up();
}
digitalWrite(ULT,LOW);
//
while(1){
if (!digitalRead(EMG )){ motor_stop(); }
else if( digitalRead(UP )){ motor_up(); }
else if( digitalRead(DOWN)){ motor_dn(); }
}
}
}
인데 정상 작동은 한번만 하고
반복이 되지 않습니다..
작동스위치를 누를때 마다 작동하게 하고싶은데
최초1회는 잘 실행이 되지만
그 다음이 되질않습니다..
댓글 2
조회수 8,533닷모드님의 댓글
닷모드 작성일
와일문이 중간에 껴서 탈출을 못한다는 조언을 선배한테 들었는데 무슨소린지 잘 모르겠습니다.
task schedule은 또 어떤건가요?
테스크 스케줄을 쓰면 된다는데
시간 흐름에 따라 함수를 넣는다 정도의 개념만 알고 사용할 줄 모르겠습니다
닷모드님의 댓글
닷모드 작성일작동 영상도 첨부했습니다!