#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {
pinMode(45,OUTPUT);//OC5B
pinMode(46,OUTPUT);//OC5A
myservo.attach(46);
setPwmFrequency(45,100);
}
void loop() {
for (pos = 30; pos<= 60; pos ++) {
myservo.write(pos);
delay(24);
}
for (pos = 60; pos>=30; pos --) {
myservo.write(pos);
delay(24);
}
}
void setPwmFrequency(int pin,int precision){
if(pin == 11 || pin == 12 || pin == 13){ //timer 1
TCCR1A = _BV(COM1A0)|_BV(COM1B1)|_BV(WGM11)|_BV(WGM10);
TCCR1B = _BV(WGM13)|_BV(WGM12)|_BV(CS11);
OCR1A = precision;
}else if(pin == 6 || pin == 7 || pin == 8){ //timer 4
TCCR4A = _BV(COM4A0)|_BV(COM4B1)|_BV(WGM41)|_BV(WGM40);
TCCR4B = _BV(WGM43)|_BV(WGM42)|_BV(CS41);
OCR4A = precision;
}else if(pin == 46 || pin == 45 || pin == 44){ //timer 5
TCCR5A = _BV(COM5A0)|_BV(COM5B1)|_BV(WGM51)|_BV(WGM50);
TCCR5B = _BV(WGM53)|_BV(WGM52)|_BV(CS51);
OCR5A = precision;
}
}