Codey OnlineArduino- & ESP32-componentenbibliotheek › 16 Channel 12-Bit PWM Servo Driver I2C
16 Channel 12-Bit PWM Servo Driver I2C
Interface

16 Channel 12-Bit PWM Servo Driver I2C

16-kanaals 12-bits PWM servo-driver I2C PCA9685

Protocollen: I2C Breedte: 61 mm

Pinout — 16 Channel 12-Bit PWM Servo Driver I2C

Pin Signaal Beschrijving
POWER.GND ground Top-left mounting hole area labeled GND near power section
POWER.+ power Top-center power terminal hole labeled +
CH0 PWM Channel 0 header hole in left output block
CH1 PWM Channel 1 header hole in left output block
CH2 PWM Channel 2 header hole in left output block
CH3 PWM Channel 3 header hole in left output block
CH4 PWM Channel 4 header hole in left output block
CH5 PWM Channel 5 header hole in left output block
CH6 PWM Channel 6 header hole in left output block
CH7 PWM Channel 7 header hole in left output block
CH8 PWM Channel 8 header hole in middle output block
CH9 PWM Channel 9 header hole in middle output block
CH10 PWM Channel 10 header hole in middle output block
CH11 PWM Channel 11 header hole in middle output block
CH12 PWM Channel 12 header hole in right output block
CH13 PWM Channel 13 header hole in right output block
CH14 PWM Channel 14 header hole in right output block
CH15 PWM Channel 15 header hole in right output block
V+ power Left side power header top pin
VCC power Left side power header second pin
SDA SDA Left side I2C data pin
SCL SCL Left side I2C clock pin
OE digital Left side output enable pin
GND ground Left side ground pin
VCC.1 power Right side power pin
SDA.1 SDA Right side I2C data pin
SCL.1 SCL Right side I2C clock pin
OE.1 digital Right side output enable pin
GND.1 ground Right side ground pin
V+.1 power Right side power header top pin
CH0-V+ V+ Channel 0 header hole in left output block
CH1-V+ V+ Channel 1 header hole in left output block
CH2-V+ V+ Channel 2 header hole in left output block
CH3-V+ V+ Channel 3 header hole in left output block
CH4-V+ V+ Channel 4 header hole in left output block
CH5-V+ V+ Channel 5 header hole in left output block
CH6-V+ V+ Channel 6 header hole in left output block
CH7-V+ V+ Channel 7 header pin
CH8-V+ V+ Channel 8 header pin
CH9-V+ V+ Channel 9 header pin
CH10-V+ V+ Channel 10 header pin
CH11-V+ V+ Channel 11 header pin
CH12-V+ V+ Channel 12 header pin
CH13-V+ V+ Channel 13 header pin
CH14-V+ V+ Channel 14 header pin
CH15-V+ V+ Channel 15 header pin
CH0-GND GND Channel 0 header pin
CH1-GND GND Channel 1 header pin
CH2-GND GND Channel 2 header pin
CH3-GND GND Channel 3 header pin
CH4-GND GND Channel 4 header pin
CH5-GND GND Channel 5 header pin
CH6-GND GND Channel 6 header pin
CH7-GND GND Channel 7 header pin
CH8-GND GND Channel 8 header pin
CH9-GND GND Channel 9 header pin
CH10-GND GND Channel 10 header pin
CH11-GND GND Channel 11 header pin
CH12-GND GND Channel 12 header pin
CH13-GND GND Channel 13 header pin
CH14-GND GND Channel 14 header pin
CH15-GND GND Channel 15 header pin

Aansluittips

Voor elke servo: sluit PWM→CHn, VCC→CHn-V+ (of gedeelde V+), GND→GND aan. Verbind op het board 5V→VCC, GND→GND, SDA→A4, SCL→A5. Sluit altijd ook de voeding aan.

Voorbeeld-aansluitschema — 16 Channel 12-Bit PWM Servo Driver I2C

Van Naar Draad
board:5V x1:VCC red
board:GND x1:GND black
board:A4 x1:SDA green
board:A5 x1:SCL blue

Voorbeeld-Arduinocode — 16 Channel 12-Bit PWM Servo Driver I2C

Dit voorbeeld is geschreven en compile-gecheckt voor de arduino-uno. Codey Online past het voor je aan naar elk ander ondersteund board.

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

// Typical servo pulse limits for a 50 Hz PWM signal on the PCA9685.
// These values work well for many hobby servos.
static const uint16_t SERVO_MIN = 150; // about 0.5 ms
static const uint16_t SERVO_MAX = 600; // about 2.5 ms

uint16_t angleToPulse(uint8_t angle) {
  return map(angle, 0, 180, SERVO_MIN, SERVO_MAX);
}

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ;
  }

  Serial.println("PCA9685 servo driver example");

  pwm.begin();
  pwm.setPWMFreq(50); // Servos use 50 Hz
  delay(10);
}

void loop() {
  // Sweep a servo on channel 0 from 0 to 180 degrees and back.
  for (uint8_t angle = 0; angle <= 180; angle++) {
    uint16_t pulse = angleToPulse(angle);
    pwm.setPWM(0, 0, pulse);
    Serial.print("Channel 0 angle: ");
    Serial.print(angle);
    Serial.print("  pulse: ");
    Serial.println(pulse);
    delay(15);
  }

  for (int angle = 180; angle >= 0; angle--) {
    uint16_t pulse = angleToPulse((uint8_t)angle);
    pwm.setPWM(0, 0, pulse);
    Serial.print("Channel 0 angle: ");
    Serial.print(angle);
    Serial.print("  pulse: ");
    Serial.println(pulse);
    delay(15);
  }
}

Bouw je Arduino- of ESP32-project met AI

Beschrijf wat je wilt bouwen. Codey Online schrijft de code, tekent het aansluitschema, compileert het en flasht je board rechtstreeks vanuit de browser.

Gratis starten