답변 : 답변 : 아두이노 제어 질문 드립니다
페이지 정보
작성자 master 작성일19-05-08 08:00 조회3,205회 댓글0건본문
// MCU BASIC: https://www.basic4mcu.com
// 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();
}
}
이 소스로도 동작을 하지 않는다면
회로도가 있어야지 체크를 할 수 있습니다.
댓글 : 0
조회수 : 3,205
등록된 댓글이 없습니다.