회원가입 ID/PW 찾기
AA
속도가 전혀~~~~~~~~~~~~~~~~~~~~~` 제어가 안되네요
무쟈게 빨라서 바디부분이 뿌아질라고 그람니다
답답해 죽겠네
어떻게 해야죠 님들 답변 부탁드려요~
댓글 6
  • No Profile
    글쓴이 고문관 07.10.23 02:30 댓글 좋아요 0 싫어요 0
    지금이 새벽2시반   답안나옵니다 ~
  • -.-;; 어캐... 제어 잘하시라는 말씀밖엔....

    그놈 서보모터 감히 고문관님의 말을 안듣다니.
  • No Profile

    드뎌 찾았습니다.ㅋㅋㅋ 도움되시길....이건 8051 작품란에도 올려놓겠습니다.
    동시에 여러개 RC서보 제어하는 방법은 빠라삐리뽀님 글을 찾으면 제가 답변해노은게 있습니다.

    이것도 어딘가 소스가 있을텐데.ㅠㅠ


    /*

    8051을 이용해 IR리모콘으로 RC서보모터 제어

    8051을 이용해서 IR리모콘(TV리모콘과 같은)로 RC서보모터를 원격조정하는 것입니다...
    만들당시 회로는 너무 간단해서 회로도는 그리지 않았습니다.;;
    사진은 차후에 올려드리겠습니다.
    작성자 :   아크마

     작성일 : 2004년 12월 8일
     VERSION : 0.1

    */

    // 컴파일러 : 마이크로비젼 7.0

    #include <at89x52.h>
     /*
    645
    1382
    2119
    18432
    */

    #define TIME_SEC    20000
    #define RATE_8952   0.000001085069444
    #define PULS_LEFT       900
    #define PULS_MID       2000
    #define PULS_RIGHT      5000
    #define PULS_OFF        18432
    #define SPEED_1        1
    #define SPEED_2        2
    #define SPEED_3       3
    #define SPEED_4       4
    #define SPEED_5       5
    #define SPEED_6       6
    #define SPEED_20      20

    #define TIMER0_ON  TR0 = 1
    #define TIMER0_OFF   TR0 = 0
    #define TIMER1_ON       TR1 = 1
    #define TIMER1_OFF   TR1 = 0
    #define TIMER_IT0_ENABLE ET0 = 1
    #define TIMER_IT0_DISALBE ET0 = 0
    #define TIMER_IT1_ENABLE ET1 = 1
    #define TIMER_IT1_DISABLE ET1 = 0
    #define IT_ENABLE  EA = 1
    #define IT_DISABLE   EA = 0
    #define SERVO_PORT  P2_7
    #define TRUE    1
    #define FALSE    0  


    #define REMOCON_RIGHT  P1_4                         
    #define REMOCON_DOWN  P1_3                         
    #define REMOCON_STOP  P1_2                         
    #define REMOCON_UP   P1_1                         
    #define REMOCON_LEFT  P1_0  

    #define REMOCON_TEST  P1_5                      

    char old_right=1;
    char old_down=1;
    char old_stop=1;
    char old_up=1;
    char old_left=1;

    typedef unsigned int  word;
    typedef unsigned char  byte;
    typedef char   bool;

    byte flag = 0;
    word speed;
    word rate= PULS_MID;//PULS_MID;
    word angle  = PULS_MID;
    word target = PULS_MID;
    bool chat_flag = FALSE;

    long delay_count =0;
    long delay_count_h=0;
    int led_num = 0;


    void delay_s(unsigned int iSec)
    {
     int iCnt;
     
     while(iSec)
     {
      for(iCnt=0; iCnt < TIME_SEC; iCnt++);
             iSec--;
     }
    }
      
    void delay_t(unsigned int iTime)
    {
     while(iTime--);
    }
     

    //타이머 초기화
    bool InitTimer(void)
    {    


        TMOD = 0x11;  // TMOD 1(16bit timer/counter) setting - use TH, TL, [hgigh : M1 = 0, M0 = 1]  [low : M1 = 0, M0 = 1]

     TH0 = 0x4C;
       TL0 = 0x00;
     TH1 = 0x4c;
     TL1 = 0x00;
           
        TIMER_IT0_ENABLE;
        TIMER_IT1_ENABLE;
     
     TIMER0_ON;
     IT_ENABLE;
     
        return 1;

    }

    //인터럽트 초기
    bool InitInt()
    {

     PX0 = 1 ;  
     IT0 = 1 ; 
     EX0 = 1 ;  
     EX1 = 1 ;
     IT_ENABLE;

    }

    // 서보 이동속도 설
    void SetSpeed(word s)
    {
     speed = s;
    }
    void test()
    {
     char cnt;

     for(cnt=0;cnt<3;cnt++)
     {
     REMOCON_TEST = 1;
     delay_s(1);
     REMOCON_TEST = 0;
     delay_s(1);
     }
     }


    int main(void)
    {

     char flag_h = 0;

     delay_t(1);
        delay_s(1);
          
        InitTimer();
     InitInt();

     SetSpeed(SPEED_3);
        rate = 92;
        
     P0_3 = 0;
        
     while(1)
     {

      chat_flag = TRUE;

      if(old_left!=REMOCON_LEFT)
      {
       old_left = REMOCON_LEFT; 
      /*
       if(REMOCON_LEFT==0)
       {
        if(target-100 >= PULS_LEFT)
         target-=100;  
       }
       */
        if(REMOCON_LEFT==0)
       {
        target=PULS_LEFT;  
       }else
       {
        target  = angle;
        }

      }


      
      if(old_right!=REMOCON_RIGHT)
      {
       old_right = REMOCON_RIGHT;

       if(REMOCON_RIGHT==0)
       {
        target=PULS_RIGHT;  
       }else
       {
        target  = angle;
        }
        }

      
      if(old_up!=REMOCON_UP)
      {
       old_up = REMOCON_UP;

       if(REMOCON_UP==0)
       {
        if(speed < SPEED_20)
        {
         speed+=3;
        }  
       }
      }

      
      if(old_down!=REMOCON_DOWN)
      {
       old_down = REMOCON_DOWN;

       if(REMOCON_DOWN==0)
       {
        if(speed > SPEED_1)
        {
         speed-=3;
        }
       }
      }

     

      delay_count++;
      if(delay_count>40000)
      {
       delay_count = 0;

       switch(led_num)
       {
        case 0:
         P0_0 = 0;
         P0_1 = 1;
         P0_2 = 1;
         break;
        case 1:
         P0_0 = 1;
         P0_1 = 0;
         P0_2 = 1;
         break;
        case 2:
            P0_0 = 1;
         P0_1 = 1;
         P0_2 = 0;
         break;
       }

       led_num++;
       if(led_num > 2)
        led_num = 0;
        }
      
     
        delay_count_h++;
      if(delay_count_h>3000)
      {
       delay_count_h=0;
       if(angle >= PULS_MID-100 && angle <= PULS_MID+100)
         {
        if(flag_h)
         P0_3 = 0;
        else
         P0_3 = 1;
     
          flag_h = ~flag_h;
         }else
         {
           P0_3 = 0;
         }
      }

          /* target = PULS_MID;

         delay_s(15);

         target = PULS_MID + 300;

         delay_s(15);
     
         target = PULS_MID - 500;

          delay_s(15);
      */
     }      
    }

     

    void T0_int (void) interrupt 1
    {

     TIMER0_OFF;         

         if(flag == 0)
         {
          flag = 1;
            SERVO_PORT = 0;
      rate = PULS_OFF - angle; // low level time
         }
        
         else
         {
      flag = 0;
           SERVO_PORT = 1;
      rate = angle;
     }
       
         if(angle + speed < target)
          angle += speed;
         else if(angle - speed > target)
          angle -= speed;
         else
          angle = target;
        
         TH0 = ~(byte)((0xff00 & rate) >> 8);
         TL0 = ~(byte)(0x00ff & rate);

        TIMER0_ON;
    }


    void ext_int(void) interrupt 0
    {
     IT_DISABLE;
    /*
     if(chat_flag)
     {//채터링처리
      if(target+100 <= PULS_RIGHT)
       target+=100;
      else
       target = PULS_LEFT;
     }else
         chat_flag = FALSE;
    */
     IT_ENABLE;
     

  • No Profile
    올리고 보니 AVR이었네요.ㅠㅠ

    http://www.micombox.com/avr_work/635 

    위 글과 같이 잘 보시길..어차피 원리는 다 똑같고 IR리모콘부분만 다르니까요.
  • No Profile
    글쓴이 고문관 07.10.23 10:35 댓글 좋아요 0 싫어요 0
    리모컨으로 제어하는건가요 ?
    참고하겠습니다
    근데 우회를회서
    rf제어를 하고 있습니다
    지금 한번에 많은 각을주지 않고 조금씩주어서 하고있습니다
    완전 부드럽지않고 ㅡㅡ 답안나옵니다
  • No Profile
    난언제 저거 하나 ㅡ.ㅡ;;

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
26 펌웨어 & 코딩언어 HOT모니터 정보 읽어올때 프로토콜1 빛나는 영혼 1365 2008.03.06
25 펌웨어 & 코딩언어 HOT아~~20 あさひ 926 2008.01.15
24 펌웨어 & 코딩언어 HOT최근에 질문 받은 소스-_-;;1 아크마 763 2007.08.16
23 펌웨어 & 코딩언어 HOTRS232 컨트롤 소스2 아크마 3830 2007.04.13
22 펌웨어 & 코딩언어 HOT시리얼통신 데모 프로그램 소스2 아크마 3299 2007.04.13
21 펌웨어 & 코딩언어 HOT시리얼통신 테스트 프로그램2 아크마 3254 2007.04.13
20 펌웨어 & 코딩언어 HOT화상 캠 제어 소스5 아크마 3284 2007.04.13
19 펌웨어 & 코딩언어 HOT음성변조 관련 프로그램 소스 모음4 아크마 6557 2007.04.13
18 펌웨어 & 코딩언어 HOT어셈으로 구현한 암호화 복호화 - by 아크마4 아크마 2755 2007.08.08
17 펌웨어 & 코딩언어 HOTC를 위한 어셈블리어22 아크마 3150 2007.06.06
16 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #16 [ 입력/출력 ]10 뺘쑝 3727 2007.06.02
15 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #15 [ 인터럽트 : DOS가 서비스를 제공하는 방법 ]5 뺘쑝 2863 2007.06.02
14 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #14 [ 스트링 작업 ]6 뺘쑝 2831 2007.05.24
13 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #13 [ 산술 연산 ]9 뺘쑝 3677 2007.05.24
12 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #12 [ 프로시저 ]9 뺘쑝 2889 2007.05.24
11 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #11 [ 제어 흐름의 구현 ]8 뺘쑝 2529 2007.05.24
10 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #10 [ 제어 흐름 ]7 뺘쑝 2650 2007.05.24
9 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #9 [ 일반 명령문 ]11 뺘쑝 3230 2007.05.11
8 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #8 [ 자료의 정의 ]8 뺘쑝 1933 2007.05.04
7 펌웨어 & 코딩언어 HOT어셈블리어 강좌 #7 [ 프로그램의 처리 ]6 뺘쑝 2281 2007.05.04
  • 인간의 참된 부는 세상에 공헌하는 착한 일이다.
    - 마호메트
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.