Descripción
PCA9685 Controlador de servomotores
- Esta es una comunicación i2c de uso, con unidad PWM incorporada y un reloj.
- Es 5 V compatible, lo que significa que también puede utilizar un microordenador de chip de 3,3 V y conducir de forma segura a 6 V salida
- Salida PWM de modulación de frecuencia 1,6 kHz
- Salida 12 Resolución para motor paso a paso, lo que significa que a 60Hz la velocidad Salida de empuje
- Configurable o salida de circuito abierto
#define MIN_PULSE_WIDTH 650 //Minimos y maximos del servo
#define MAX_PULSE_WIDTH 2350
#define DEFAULT_PULSE_WIDTH 1500
#define FREQUENCY 60
int pulseWidth(int angle){ //Calculo del angulo del servo
int pulse_wide, analog_value;
pulse_wide = map(angle, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
analog_value = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);
Serial.println(analog_value);
return analog_value;
}
void setup(){
Serial.begin(9600);
//Serial.println(«Prueba»);
pwm.begin(); //inicializar libreria
pwm.setPWMFreq(FREQUENCY); //frecuencia del servo a 60Mhz
// conectar un servo en cada pin del 1 al 6
pwm.setPWM(1,0,pulseWidth(0));
pwm.setPWM(2,0,pulseWidth(0));
pwm.setPWM(3,0,pulseWidth(0));
pwm.setPWM(4,0,pulseWidth(0));
pwm.setPWM(5,0,pulseWidth(0));
pwm.setPWM(6,0,pulseWidth(0));
}
void loop(){
pwm.setPWM(6,0,pulseWidth(45));
pwm.setPWM(4,0,pulseWidth(0));
delay(1000);
pwm.setPWM(3,0,pulseWidth(0));
pwm.setPWM(1,0,pulseWidth(120));
delay(500);
pwm.setPWM(3,0,pulseWidth(90));
pwm.setPWM(1,0,pulseWidth(0));
delay(2000);
delay(2000);
pwm.setPWM(2,0,pulseWidth(0));
pwm.setPWM(6,0,pulseWidth(0));
delay(2000);
}
//PROBAR EL BRAZO quitando las diagonales
//pwm.setPWM(1,0,pulseWidth(0)); //abrir garra
//pwm.setPWM(1,0,pulseWidth(120)); //cerrar garra
//pwm.setPWM(2, 0, pulseWidth(90)); //mover garra
//pwm.setPWM(3,0,pulseWidth(20)); //bajar lentamente la mano
//pwm.setPWM(3,0,pulseWidth(0)); //bajar rapido la mano
//pwm.setPWM(4, 0, pulseWidth(180));//bajar el codo
//pwm.setPWM(4, 0, pulseWidth(70));
Valoraciones
No hay valoraciones aún.