BASIC4MCU | 질문게시판 | 답변 : 아두이노 DC모터 제어 질문드려요
페이지 정보
작성자 master 작성일2019-04-04 09:41 조회5,643회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=8133
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-04-04 오전 9:47:14// by Ok-Hyun Park//제가 하고자 하는것은 이것입니다.!1.스위치 1개(작동버튼),리미트 스위치 두개(UP,DOWN),UP스위치,DOWN 스위치,비상정지버튼2.작동스위치를 누르면 DC모터 역방향 구동된다.3.DOWN리미트 스위치에 닿으면 DC모터가 1초간 더 작동후 1.5초간 멈춘다4.1.5초간 멈춘 후 UP리미트 스위치에 닿을떄 까지 모터가 역방향 한다5.UP리미트 스위치에 닿으면 작동이 끝이 난다.UP스위치를 누르면 모터가 역회전한다DOWN스위치를 누르면 모터가 정회전한다비상정지 버튼이 눌리면 그자리에서 작동이 정지한다.입니다!//int SW=8; // 작동스위치 푸시버튼사용int EMG=9; // 비상정지버튼int UP=10; // 실린더 UP 버튼int DOWN=11; // 실린더 DOWN버튼int LSU=7; // 리미트UPint LSD=6; // 리미트DOWNint ULT=12; // 릴레이(초음파)int IN1=3; // 드라이버 정int IN2=4; // 드라이버 역int EN=11;int mode=0; // 초기 정지모드//void motor_stop(){ digitalWrite(IN1,0); digitalWrite(IN2,0); }void motor_up() { digitalWrite(IN1,0); digitalWrite(IN2,1); }void motor_dn() { digitalWrite(IN1,1); digitalWrite(IN2,0); }//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,0); } // 비상정지 또는 작동스위치 off면 정지else{while(!digitalRead(LSU)){ // UP리미트 감지까지 dnif(!digitalRead(EMG )){ motor_stop(); return; }motor_dn();}//digitalWrite(ULT,1); 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,0);//while(1){if (!digitalRead(EMG )){ motor_stop(); }else if( digitalRead(UP )){ motor_up(); }else if( digitalRead(DOWN)){ motor_dn(); }}}}
알고리즘에 빠진 부분이 있어서 코드를 제대로 작성하지 못합니다.
순서도(플로우차트) 등을 만든 후에 순서도대로 코드를 작성해보세요
모든 경우의 수를 생각하면서 작성해야 합니다.
댓글 0
조회수 5,643등록된 댓글이 없습니다.