Controlador de servos PWM de 12 bits y 16 canales I2C PCA9685
| Pin | Señal | Descripción |
|---|---|---|
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 |
Para cada servo: conecta PWM→CHn, VCC→CHn-V+ (o V+ compartido), GND→GND. Cablea la placa: 5V→VCC, GND→GND, SDA→A4, SCL→A5. Incluye siempre las conexiones de alimentación.
| Desde | Hasta | Cable |
|---|---|---|
board:5V |
x1:VCC |
red |
board:GND |
x1:GND |
black |
board:A4 |
x1:SDA |
green |
board:A5 |
x1:SCL |
blue |
Este ejemplo se escribió y verificó por compilación para arduino-uno. Codey Online lo adapta a cualquier otra placa compatible.
#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);
}
}
Describe lo que quieres construir. Codey Online escribe el codigo, dibuja el esquema de conexiones, lo compila y graba tu placa directamente desde el navegador.
Empieza gratis