에듀이노-코딩교육 전문 쇼핑몰 에듀이노-코딩교육 전문 쇼핑몰

학교, 공공기관이라면 후불결제하세요!

 
현재 위치
  1. 게시판
  2. 묻고답하기

묻고답하기

상품 게시판 상세
제목 리모컨 서보모터제어 세팅문의 (재문의)
작성자 up2zion (ip:)
  • 작성일 2019-03-15
  • 추천 추천하기
  • 조회수 298

리모컨으로 서보모터 제어하는 방법 질문한 사람입니다.

일단 세팅을 해서 성공은 했는데요 3가지 질문이 있습니다.


1. 리모컨을 눌렀을때 작동을 할때가 있고, 작동을 안할때가 있습니다.  여러번 눌러야 반응하는데 이것은 리모컨 자체의 문제인가요 아니면 뭔가 코드상 문제인가요?


2. 모터가 원하는데 까지 작동을 하고나서도 계속해서 모터가 도는 소리가 들립니다(모터는 돌아가는데 실제로 기어는 안움직임).... 원하는 각도까지 움직이고나서 모터가 동작이 딱 종료되는 방법은 없나요?


3. USB를 이용해 컴퓨터에 연결해서 작동시킬때는 작동을 하는데 9V건전지로 전원을 연결하면 작동하지 않습니다.  직류 전원 공급시에는 따로 명령어를 또 넣어줘야 하나요?



영상으로 찍어올려볼 했는데 찍을때는 작동을 안하고 녹화를 안하면 작동을해서 못찍었습니다....


입력한 코드는 다음과 같습니다.



#include <Servo.h>    // 서보모터 라이브러리

#include <IRremote.h>  // 적외선 리모컨 라이브러리


int remote = A0;    // 적외선 리모컨 수광 다이오드 신호선

int motor = 7;      // 서보모터



Servo servo;          // servo 라이브러리를 사용해주기 위해 servo객체 생성

IRrecv irrecv(remote);    // IRremote를 사용해주기 위해 irrecv객체 생성

decode_results results;   // 디코드한 결과값

 

int angle = 0;    // 서보모터 각도 값


void setup() {

  servo.attach(motor);    // 모터 시작

  irrecv.enableIRIn();    // 수광 다이오드 시작

 

  pinMode(motor,OUTPUT);  // 모터 출력

  pinMode(remote, INPUT); // 수광 다이오드 입력

 

}


void loop() {

  if (irrecv.decode(&results)){  // 적외선 리모컨의 신호를 받을 때

    switch (results.value) {

      case 0xA3C8EDDB:  // +  버튼을 눌렀을 때

        angle += 90;  // 각도값 90 추가

        if (angle > 180)  // 각도가 180이 넘어갈 때

          angle = 180;    // 각도값 최대를 180으로

        servo.write(angle); // 서보모터 각도 이동

        break;

       

      case 0xF076C13B:  // - 버튼을 눌렀을 때

        angle -= 90;  // 각도값 90 감소

        if(angle < 0) // 각도값이 0도보다 적을 때

          angle = 0;  // 각도값 최소값을 0으로

        servo.write(angle);  // 서보모터 각도 이동

        break;

    }

    irrecv.resume(); // 수광 다이오드 다음 값 받기

  }


   

   }

평점 0점
첨부파일
비밀번호 삭제하려면 비밀번호를 입력하세요.
댓글 수정

비밀번호 :

수정 취소

/ byte

비밀번호 : 확인 취소

댓글 입력

댓글달기이름 :비밀번호 : 관리자답변보기

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

댓글 입력

댓글달기이름 :비밀번호 :

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

«
»