Codey OnlineArduino- & ESP32-Komponentenbibliothek › 16 Channel 12-Bit PWM Servo Driver I2C
16 Channel 12-Bit PWM Servo Driver I2C
Schnittstelle

16 Channel 12-Bit PWM Servo Driver I2C

16-Kanal 12-Bit PWM-Servo-Driver I2C PCA9685

Protokolle: I2C Breite: 61 mm

Pinbelegung — 16 Channel 12-Bit PWM Servo Driver I2C

Pin Signal Beschreibung
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

Hinweise zur Verdrahtung

Für jedes Servo: PWM→CHn, VCC→CHn-V+ (oder gemeinsames V+), GND→GND anschließen. Auf dem Board 5V→VCC, GND→GND, SDA→A4, SCL→A5 verdrahten. Stromversorgung immer mit anschließen.

Beispielschaltplan — 16 Channel 12-Bit PWM Servo Driver I2C

Von Nach Kabel
board:5V x1:VCC red
board:GND x1:GND black
board:A4 x1:SDA green
board:A5 x1:SCL blue

Arduino-Beispielcode — 16 Channel 12-Bit PWM Servo Driver I2C

Dieses Beispiel wurde für das arduino-uno geschrieben und kompiliergeprüft. Codey Online passt es für jedes andere unterstützte Board an.

#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);
  }
}

Bau dein Arduino- oder ESP32-Projekt mit AI

Beschreib einfach, was du bauen willst. Codey Online schreibt den Code, zeichnet den Schaltplan, kompiliert alles und flasht dein Board direkt aus dem Browser.

Kostenlos starten