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

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

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

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

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

BASIC4MCU > 질문게시판

질문드립니다...

페이지 정보

작성자 살라미 작성일19-05-16 19:38 조회4,497회 댓글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,497

master님의 댓글

master 작성일

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

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 PIC 블루투스 연결 댓글[17] 픽공부 새글 10:28
질문 PIC18F452 블루투스 연결 댓글[4] 마이컴 새글 22-08-08
질문 아두이노 코드 해석을 못하겠습니다... 댓글[2] 김가헌 새글 22-08-08
질문 아두이노 코드를 avr로 변환해 주세요 ...ㅠ 댓글[3] 옹냥냥 새글 22-08-08
질문 아두이노 녹음-스피커모듈 관련 질문있습니다 ㅠㅠ 댓글[2] 방귀뿡뿡 새글 22-08-08
질문 Serial EEPROM 실수값 저장.. 댓글[2] 첨부파일광이 새글 22-08-07
질문 STM32 Live Expression 값들이 깜빡이는… 댓글[3] 둠둠  22-08-05
질문 아두이노 ESP32 wifi module 댓글[1] Yoon  22-08-03
질문 atmega128과 dht11, lcd를 연결했는데 0… 댓글[1] 고양이33  22-08-02
질문 ATMEGA 128 코드를 합치려고 하는데 어렵네요 댓글[2] 고양이33  22-08-02
질문 서보모터 제어에 대해 질문있습니다. 댓글[2] 첨부파일뉴비에오  22-07-30
질문 적외선 통신 알려주실분있나요 ㅠㅠ 댓글[1] hkjsj10  22-07-30
질문 아두이노 관련 궁금합니다. 댓글[1] 뱝뱝  22-07-28
질문 아두이노 우노 MCP4725 댓글[3] opqr  22-07-27
질문 레오나르도 인체감지센서 알림 안옴 면지지  22-07-24
답변 답변 : 레오나르도 인체감지센서 알림 안옴 master  22-07-25
질문 Uno에서 엔코더값 놓치는 이유가 뭘까요... 댓글[3] MAKTUB  22-07-24
질문 아두이노 압력센서 연동 질문 댓글[4] dbice  22-07-23
질문 아두이노 버튼 누르기 문의 댓글[1] 김형근  22-07-23
질문 HM10 다중페어링 댓글[1] ㅎㅋㅎㅋㅎ  22-07-22
질문 모터드라이브 선정 댓글[6] 조숩인  22-07-22
질문 ad9850 sin파 2 댓글[6] 첨부파일opqr  22-07-21
질문 ad9850 sin파 합성 댓글[7] 첨부파일opqr  22-07-20
질문 특정값이 n초이상,n번 이상 연속될경우를 감지하는 함수… 댓글[4] 우수  22-07-17
질문 delay를 millis함수로 바꾸는데 질문있습니다. 댓글[12] 첨부파일뉴비에오  22-07-16
질문 피에조 부저로 맬로디 만들기인대 코딩 까지 했는데 아두… 댓글[2] 첨부파일mingu123  22-07-15
질문 블루투스와 안드로이드 연동관련 질문입니다! ㅎㅇㅎㅇ  22-07-14
질문 아두이노간 블루투스 통신에 대해서 질문있습니다 첨부파일뉴비에오  22-07-13
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전