Skip to content

PCA9685 16ch Servo Motor

PCA9685에 연결된 16개의 서보를 하나씩 움직인다.

pca9685.ino
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver board1 = Adafruit_PWMServoDriver(0x40);

#define SERVOMIN  125
#define SERVOMAX  625

void setup() {
  Serial.begin(115200);
  Serial.println("Servo test!");
  board1.begin();
  board1.setPWMFreq(60);
}

void loop() {
  for(int i=0; i<8; i++) {
    board1.setPWM(i, 0, angleToPulse(0) );
  }
  delay(1000);

  for( int angle =0; angle<181; angle +=10) {
    for(int i=0; i<8; i++) {
      board1.setPWM(i, 0, angleToPulse(angle) );
    }
  }
  delay(100);
}

int angleToPulse(int ang) {
  int pulse = map(ang,0, 180, SERVOMIN,SERVOMAX);
  Serial.print("Angle: ");Serial.print(ang);
  Serial.print(" pulse: ");Serial.println(pulse);
  return pulse;
}