|
我是一個新手,請教各位大大幫忙我
請問各位專家!!
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
感謝啦! |
|