질문게시판 > 아두이노 코딩 질문드립니다

TODAY2,812 TOTAL804,709
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 아두이노 코딩 질문드립니다

페이지 정보

작성자 살라미 작성일2019-06-27 14:47 조회602회 댓글5건

본문

	
구동1 [비상정지 스위치가 작동되면 전부 멈춰야한다]
 1. 시작버튼을 눌렀을때 모터가 역회전 함과 동시에 초음파 릴레이가 ON이 된다. 
 2.  모터의 역회전은 리미트 스위치가 감지 될때까지 단계 1의 상태를 유지한다.
 3. 리미트 스위치가 감지되면 감지된 직후로부터 0.2초간 더 역회전을 실시한 후 정지한다. (초음파는 계속 ON)
 4. 1.5 초간 정지한 후 모터는 정회전을 5초간 실시한다. 초음파 OFF 
 5. 1~4의 단계를 반복할 예정입니다! 

구동2 [비상정지 스위치가 작동되면 전부 멈춰야한다]
 1. 상, 하, 초음파 버튼이 각각 3개씩 있다.
 2. 상 버튼을 눌렀을때 모터 정회전 
 3. 하 버튼을 눌렀을때 모터 역회전
 4. 초음파 버튼을 눌렀을때 초음파 릴레이 ON 

버튼은 전부 푸시버튼 스위치를 사용했습니다! 
모터 드라이버는 사용하지않았구요
릴레이 2개로 모터의 정 역 회전을 제어하고
릴레이 1개로 초음파 ON/OFF를 제어하고있습니다. 
총 릴레이가 3개입니다. 

제가 저 코드로  진행했을때 동작이 제대로 되지 않았습니다.. 

루프가 시작된 직후 if문과 else문을 주석처리하고 
상 하 초음파 구동만 실시했을때도 제대로 동작 되지 않았습니다..
(초음파 제어 부분을 지우고 상 , 하 제어 부분만 넣으면 그것은 작동 되더라구요.. 초음파 제어문을 넣으니 다시 제대로 동작을 하지 않습니다)->먹통이 되더라구요 
[{-> 이 부분에서 정상 작동과 상 하 초음파 버튼의 제어가 동시에 이루어지지 않아서 
아두이노 두개를 이용하여 릴레이 입력에 꽂아서 해보았습니다.. 
그리고 안되서 질문 게시판에 아두이노 출력 두개로 릴레이 입력에 연결하면 되는지 안되는지 질문글을 남겼구요..
쇼트가 일어날수있다는 답변을 받았습니다.
혹 안되는 이유가 릴레이가 쇼트가 나서 안되는 경우도 있을까요?

메카솔류션에서 판매하는 12V 1채널 릴레이 모듈 3개를 쓰고있습니다. 

셋 다 아두이노 두개 출력을 1개의 릴레이 입력에 연결하는 작업을 했었습니다. 

그리고 나서 두개의 입력이 되어있던걸 한개로 만들고 상 하 제어를 실시했을때
릴레이가 켜지는 딸깍 소리는 났지만 구동을 할때도 안할때도 있었습니다.. }]



비상정지 스위치의 if문은 작동이 되었습니다. ...
-

어느 부분이 잘못 되었는지 도저히 모르겠습니다. 






아래는 제 코드를 첨부하겠씁니다.
이 사이트에서 마스터님이 피드백 해주신 코드를 잠깐 수정하여 사용하였습니다.

int IN1 = 4;  //모터 릴레이 o
int IN2 = 5;  //모터 릴레이 o
int EMG = 6;  //비상정지버튼 i
int ULT = 7;  //초음파 릴레이 o 
int SW  = 8;  //시작 버튼 i
int UP  = 9;  //상 버튼 i
int DN  = 10; //하 버튼 i
int SW1 = 11; //초음파 버튼 i
int LMT = 12; //50mm 리미트 스위치 i
//
void motor_stop() { digitalWrite(IN1,1); digitalWrite(IN2,1); } //모터정지
void motor_up()   { digitalWrite(IN1,0); digitalWrite(IN2,1); } //모터 정회전 (전동실린더 상승)
void motor_dn() { digitalWrite(IN1,1); digitalWrite(IN2,0); }   //모터 역회전 (전동실린더 하강)
void ult_on()     { digitalWrite(ULT,0);                      } //초음파릴레이ON
void ult_off()    { digitalWrite(ULT,1);                      } //초음파릴레이OFF
//
void setup(){
  pinMode(EMG, INPUT_PULLUP); //비상정지 인풋
  pinMode(SW, INPUT_PULLUP);  //시작버튼 인풋
  pinMode(UP, INPUT_PULLUP);  //상 버튼 인풋
  pinMode(DN, INPUT_PULLUP);  //하 버튼 인풋
  pinMode(SW1, INPUT_PULLUP); //초음파 버튼 인풋
  pinMode(LMT, INPUT_PULLUP); //리미트스위치 인풋

  pinMode(IN1, OUTPUT);       //모터 릴레이 아웃풋
  pinMode(IN2, OUTPUT);       //모터 릴레이 아웃풋
  pinMode(ULT, OUTPUT);       //초음파 릴레이 아웃풋선
}
//
void loop(){
  if(!digitalRead(EMG)){ // 비상정지
    motor_stop(); digitalWrite(ULT,0);   // 정지
  }
  else{
    if(digitalRead(SW)==LOW){     //시작스위치가 한번 눌러졌을때 
    
     
        motor_dn(); // 모터 역회전 
        digitalWrite(ULT,HIGH); //초음파 ON 
        while(!digitalRead(LMT)){ if(!digitalRead(EMG))return; } // 리미트스위치 감지까지 모터 역회전 
        //
        delay(200); //감지후 모터 역회전 0.2초간 더 실시 
        motor_stop(); // 모터 정지 1.5초간 
        delay(1500);
        //
        motor_up();  //모터 정회전 5초간 
        delay(5000);
        
       
        motor_stop(); digitalWrite(ULT,LOW); // 모터 정지 및 초음파 OFF
      
    }
    //
    if     (digitalRead(UP  )==LOW)motor_up();               //UP스위치를 눌렀을 경우 모터 정회전 
    if     (digitalRead(DN)==LOW)motor_dn();                 //DOWN스위치를 눌렀을경우 모터 역회전 
    if     (digitalRead(SW1)==LOW){digitalWrite(ULT,HIGH);}  //초음파 스위치 눌렀을경우 초음파 ON 
    else    digitalWrite(ULT,LOW); motor_stop();             // 아무 버튼이 눌리지 않았을 경우 모터 정지 및 초음파 OFF상태
  }
}
  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 5

조회수 602

master님의 댓글

master 작성일

else    digitalWrite(ULT,LOW); motor_stop(); // 아무 버튼이 눌리지 않았을 경우 모터 정지 및 초음파 OFF상태
이 문장은 아래처럼 정렬 하는 것이 좋습니다.

else{ digitalWrite(ULT,LOW); motor_stop(); } // 아무 버튼이 눌리지 않았을 경우 모터 정지 및 초음파 OFF상태

괄호가 있고 없고의 차이가 크죠

master님의 댓글

master 작성일

어려운 코드가 아니므로 이 정도의 내용은 스스로 해결하셔야합니다.
아무리 쉬운 코드라고 하더라도 현재 상태를 본인 외에는 남들은 체크가 불가능하므로 남이 봐주기는 어렵습니다.

살라미님의 댓글

살라미 댓글의 댓글 작성일

감사합니다..
저에게는 정말 어려운코드로 느껴집니다
제 생각엔 작동이 되야하는게 맞는데 안되니 정말 골머리 썩으며
며칠밤을 새고있는지 모르겠습니다 ㅠㅠㅠ

조언 감사드립니다 마스터님!

master님의 댓글

master 댓글의 댓글 작성일

아무리 쉬운 내용도 그 지식을 이해하는데 부족한 실력이라면 막막할테지만
더 어려운 내용이라도 알고나면 별 것 아닙니다.
공부를 더 하시는 방법밖에 없습니다.

살라미님의 댓글

살라미 댓글의 댓글 작성일

약간의 힌트라도 주시면 안될까요?? ㅠㅠ

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 997
공지 사이트 이용 안내댓글[10] master 17-10-29 8975
공지 [무료 공개] 소스코드 하이라이트 v2.0 beta [2013.02.07]댓글[1] 이미지첨부파일 master 18-01-23 3393
질문 서보모터 이용 자율주행 관련 질문 새글 klohs 14:34 4
질문 atmega128 / bldc모터 구동 질문입니다. 이미지새글첨부파일 조셉 04:37 8
질문 atmega128 lm35 질문입니다.댓글[3] 새글 오기 19-12-12 14
질문 블루투스(HM-10) 비콘 관련 질문댓글[2] 새글 으앙 19-12-12 12
질문 모터가 이상합니다.댓글[3] 새글첨부파일 이즈미 19-12-12 14
질문 아두이노 코딩 질문이요 새글 나비힛 19-12-12 19
답변 답변글 답변 : 아두이노 코딩 질문이요 새글 master 19-12-12 15
질문 앱인벤터에 값을 표기하는데 앞에 ( 가 붙는데 떼고 싶습니다. 이미지새글첨부파일 어려운AVR 19-12-11 8
답변 답변글 답변 : 앱인벤터에 값을 표기하는데 앞에 ( 가 붙는데 떼고 싶습니다.댓글[3] 새글 master 19-12-11 12
질문 아두이노 스텝모터 멈추기댓글[1] 새글 이즈미 19-12-11 17
질문 avr atmega128 숫자야구게임댓글[1] 새글첨부파일 주냥몬 19-12-11 28
질문 블루투스 값이 변조가 됩니다댓글[3] 이미지새글첨부파일 어려운AVR 19-12-11 17
답변 답변글 답변 : 블루투스 값이 변조가 됩니다 새글 master 19-12-11 12
질문 avr atmega128 숫자야구 게임만들기 주냥몬 19-12-11 18
질문 서보모터 각도 이용 거리 변수 지정댓글[1] klohs 19-12-11 17
질문 자이로센서로 리니어액추에이터 길이 조절하기댓글[2] ssnya 19-12-11 16
질문 AVR atmega128 블루투스모듈 hc-06 과 서보모터 sg90 코드의 잘못된 것좀 알려주세요 어려운AVR 19-12-11 15
답변 답변글 답변 : AVR atmega128 블루투스모듈 hc-06 과 서보모터 sg90 코드의 잘못된 것좀 알려주세요 master 19-12-11 22
질문 블루투스hc-06 두개써서 통신해보려는데 잘 안됍니다 hw4n2 19-12-10 16
답변 답변글 답변 : 블루투스hc-06 두개써서 통신해보려는데 잘 안됍니다댓글[1] master 19-12-11 17
질문 atmega 128 깔끔하게 정리 부탁드려요 ㅠㅠ댓글[1] 끵끵끵 19-12-10 31
답변 답변글 답변 : atmega 128 깔끔하게 정리 부탁드려요 ㅠㅠ댓글[3] master 19-12-10 30
답변 답변글 답변 : 답변 : atmega 128 깔끔하게 정리 부탁드려요 ㅠㅠ master 19-12-11 10
질문 아두이노 고정밀 서보모터 구동 master 19-12-10 11
질문 AVR ATMEGA128 블루투스 서보모터 제어 질문드립니다.댓글[5] 어려운AVR 19-12-10 26
질문 atmega128 스톱워치 질문 master 19-12-10 36
질문 atmega128 가변저항 LED 비러 19-12-10 9
게시물 검색

2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2019
모바일버전으로보기