Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 3419|回復: 0
打印 上一主題 下一主題

[馬達問題MG-995][atmega32控制問題]我是新手!幫解

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-6-16 22:26:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我是一個新手,請教各位大大幫忙我
請問各位專家!!
1) 為什麼我的SERVO MG-995只可以轉60度而不可轉180度?
2) 我打算用atmega32控制8個 SERVO, 下面的是我的CODE, 但是不知道為什麼 channel 0,1 沒有轉而只停在140度, 其他channel 就沒問題停在90度.
     code:
// up to 8 servos on portB sequentially controlled
// mega32
// 8 MHz
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

// initial pulse times in us for servo 0, 1, 2...(last value is a synchro gap)
unsigned int servo[9] = {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 6000};

volatile unsigned char servo_num = 0;


ISR(TIMER1_COMPA_vect)
{
   PORTD = (1<<servo_num);                  
   OCR1A  = servo[servo_num];
   servo_num++;
   servo_num %= 9;                 // if servo_num = 9 then servo_num = 0;
}


int main (void)
{
      DDRD = 255;                        // portb output
      TCCR1B |= (1<<WGM12) | (1<<CS11);  // pwm mode 4, prescale 8
      TIMSK |= (1<<OCIE1A);             // enable T1_compareA interrupt
      sei();   

      for(;;)  // test                  
      {
         servo[0] = 1000;          // servos 0 and 1 left
         servo[1] = 1000;
         _delay_ms(5000);

         servo[0] = 1500;          // servos 0 and 1 center
         servo[1] = 1500;
         _delay_ms(5000);

         servo[0] = 2000;          // servos 0 and 1 right
         servo[1] = 2000;
         _delay_ms(5000);
      }

}//main

感謝啦!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-24 03:01 , Processed in 0.129261 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表