질문게시판 > 질문드립니다...

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

질문드립니다...

페이지 정보

작성자 살라미 작성일19-05-16 19:38 조회4,146회 댓글1건

본문

/*

제가 하고자 하는것은 이것입니다.!

1.스위치 1개(작동버튼),리미트 스위치 두개(UP,DOWN),UP스위치,DOWN 스위치,비상정지버튼

2.작동스위치를 누르면 DC모터 역방향 구동된다.

3.DOWN리미트 스위치에 닿으면 DC모터가 1초간 더 작동후 1.5초간 멈춘다

4.1.5초간 멈춘 후 UP리미트 스위치에 닿을떄 까지 모터가 역방향 한다

5.UP리미트 스위치에 닿으면 작동이 끝이 난다.

UP스위치를 누르면 모터가 역회전한다

DOWN스위치를 누르면 모터가 정회전한다

비상정지 버튼이 눌리면 그자리에서 작동이 정지한다.

입니다!

*/

 

 

// DateTime : 2019-05-08 오전 8:06:45
// by Ok-Hyun Park
//
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);   // 정지
  }
  else{
    if(!digitalRead(SW)){     // 작동스위치
      if(digitalRead(LSD)){} // DOWN리미트 감지중이면 통과
      else{
        motor_dn(); digitalWrite(ULT,HIGH);
        while(!digitalRead(LSD)){ if(!digitalRead(EMG))return; } // DOWN리미트 감지까지 dn
        //
        delay(200); motor_stop(); delay(1500);
        //
        motor_up();
        while(!digitalRead(LSU)){ if(!digitalRead(EMG))return; } // UP리미트 감지까지 up
        motor_stop(); digitalWrite(ULT,LOW);
      }
    }
    //
    if     (!digitalRead(UP  ))motor_up();
    else if(!digitalRead(DOWN))motor_dn();
    else                      motor_stop();
  }
}


위 코드 각 스위치 리드스위치 다 확인해도 멀쩡히 잘 작동합니다.
시리얼을 통해서 1,0 나오는지 다 확인도 했구요

계속 상,하 버튼에 의한 조작에서만 막히는데.. 

뭐가 문제인지 당최 모르겠습니다.

if문의 위치도 바꿔보았구요 
첫번째 else {}안에 있는 애들을 밖으로 꺼내서 해보아도 안되고..

정말 어디서 잘못된건지 궁금합니다.. 
  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 1

조회수 : 4,146

master님의 댓글

master 작성일

void loop() 함수의 실행을 보면
비상스위치는 눌려있지 않을테니
else{}와 업다운 스위치 체크문이 실행 됩니다.
작동 스위치가 눌려있으면 else 문 안의 딜레이가 (약 1.7초로) 길고
while(!digitalRead(LSU)) 리미트 스위치가 눌려있으면 무한루프에 빠지므로
업다운 스위치 체크하지 못합니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 라즈베리파이4 신형 선택문제 댓글[1] maximum 새글 22-06-26
질문 음전압 ADC 댓글[1] 412904 새글 22-06-26
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2  22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201  22-06-24
답변 답변 : ATmega128, ATmega28 RS232… 댓글[1] master  22-06-25
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
질문 atmeg128 질문이요 댓글[1] 첨부파일공대생er  22-06-18
질문 atmega128 초음파 센서로 신호등 시간초 늘리기 서동씨  22-06-18
답변 답변 : atmega128 초음파 센서로 신호등 시간초… 댓글[1] master  22-06-18
질문 atmega128 댓글[2] 망경이  22-06-18
질문 앱인벤터 이용해서 수동 자동 할라고하는데 ..잘안됩니다… 댓글[1] 따랑해영  22-06-18
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 ..… 댓글[1] 첨부파일따랑해영  22-06-19
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 .… 첨부파일따랑해영  22-06-19
질문 서보모터와 초음파센서 댓글[1] 브링미히어  22-06-17
질문 LCD 도와주세요 ㅜㅠㅠㅠ 댓글[2] 첨부파일dentist22  22-06-17
질문 안녕하세요 atmega128 질문드리고 싶습니다. (자… 댓글[3] dlcldl  22-06-17
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전