El PCA9685 es un controlador PWM controlado por I2C con un reloj integrado que alivia la carga de su microcontrolador, permitiéndole operar de forma autónoma. Perfecto para proyectos que requieren múltiples salidas PWM de alta resolución, como robótica avanzada, sistemas de iluminación complejos y más.
$14.95 USD
$14.95
Este sketch básico muestra cómo inicializar el controlador PCA9685 y mover un servo conectado al canal 0 entre la posición mínima (0°) y máxima (180°).
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
// Inicializamos el controlador PCA9685 con la dirección I2C predeterminada (0x40)
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
// Definiciones para los límites de pulso del servo (pueden variar)
#define SERVOMIN 150 // Pulso "mínimo" de 150 (aproximadamente 0 grados)
#define SERVOMAX 600 // Pulso "máximo" de 600 (aproximadamente 180 grados)
#define SERVO_FREQ 50 // Frecuencia de los servos estándar (50 Hz)
uint8_t servonum = 0; // Usamos el canal 0 del controlador
void setup() {
Serial.begin(9600);
Serial.println("PCA9685 Servo Test Iniciado!");
pwm.begin();
pwm.setPWMFreq(SERVO_FREQ); // Establece la frecuencia de PWM a 50 Hz
delay(1000);
}
// Función para mapear un ángulo (0-180) a un valor de pulso (SERVOMIN-SERVOMAX)
uint16_t mapAngleToPulse(int angle) {
// Utilizamos la función map de Arduino
return map(angle, 0, 180, SERVOMIN, SERVOMAX);
}
void loop() {
// Mover el servo a 0 grados (posición inicial)
Serial.println("Movimiento a 0 grados");
uint16_t pulso_min = mapAngleToPulse(0);
pwm.setPWM(servonum, 0, pulso_min);
delay(1500);
// Mover el servo a 180 grados (posición final)
Serial.println("Movimiento a 180 grados");
uint16_t pulso_max = mapAngleToPulse(180);
pwm.setPWM(servonum, 0, pulso_max);
delay(1500);
// Mover el servo a 90 grados (posición central)
Serial.println("Movimiento a 90 grados");
uint16_t pulso_mid = mapAngleToPulse(90);
pwm.setPWM(servonum, 0, pulso_mid);
delay(1500);
}
Este producto incluye la placa de expansión completamente probada y ensamblada, junto con conectores macho de 3x4 (para servos/LED), un bloque de terminales de 2 pines (para alimentación) y un conector de 6 pines de 0.1" (para protoboard). Se requiere una pequeña soldadura para personalizar los conectores deseados, un proceso simple y rápido.