top of page
Foto del escritorcmarinv2005

Programación en Arduino, módulo PCA9685

Conozca a profundidad el módulo PCA9685, cómo se conecta, cómo se direcciona, como se programa en el Arduino. Como ejercicio conectaremos 2 módulos PCA9685 al Arduino UNO y cada módulo controlara 4 servomotores para realizar diferentes acciones en un robot bípedo.

Aquí pueden descargar el código y modificarlo a su gusto:

Suscríbete a mi canal y de esta manera apoyas mi trabajo. http://www.youtube.com/subscription_center?add_user=cmarinv2005




#include <Wire.h>

#include <Adafruit_PWMServoDriver.h>


Adafruit_PWMServoDriver servos1 = Adafruit_PWMServoDriver(0x40);

Adafruit_PWMServoDriver servos2 = Adafruit_PWMServoDriver(0x41);


unsigned int pos0=172; // ancho de pulso en cuentas para pocicion 0°

unsigned int pos180=565; // ancho de pulso en cuentas para la pocicion 180°



void setup() {

servos1.begin();

servos1.setPWMFreq(60); //Frecuencia PWM de 60Hz o T=16,66ms

servos2.begin();

servos2.setPWMFreq(60); //Frecuencia PWM de 60Hz o T=16,66ms

setServo1(0,90);

setServo1(1,180);

setServo1(2,0);

setServo1(3,90);

setServo2(0,90);

setServo2(1,0);

setServo2(2,180);

setServo2(3,90);

delay(3000);

}


void setServo1(uint8_t n_servo1, int angulo1) {

int duty1;

duty1=map(angulo1,0,180,pos0, pos180);

servos1.setPWM(n_servo1, 0, duty1);

}


void setServo2(uint8_t n_servo2, int angulo2) {

int duty2;

duty2=map(angulo2,0,180,pos0, pos180);

servos2.setPWM(n_servo2, 0, duty2);

}


void loop() {


for(int i=180;i>30;i--){ //levanta brazo derecho

setServo1(1,i);

delay(5);

}


for(int i=90;i>50;i--){ //ladea pie derecho

setServo1(0,i);

delay(20);

}

for(int i=90;i>60;i--){ //inclina pie izquierdo

setServo2(0,i);

delay(20);

}


for(int i=0;i<6;i++){

for(int i=90;i<150;i++){ // Gira pierna derecha varias veces

setServo1(3,i);

delay(2);

}

}



for(int i=150;i>90;i--){ //Posicion inicial pierna derecha

setServo1(3,i);

delay(10);

}


for(int i=0;i<6;i++){ //sacude pie derecho

for(int j=50;j<140;j++){

setServo1(0,j);

delay(2);

}

}

for(int i=140;i>90;i--){ //Posicion inicial pie derecho

setServo1(0,i);

delay(20);

}


for(int i=60;i<90;i++){ //Posicion inicial pie izquierdo

setServo2(0,i);

delay(20);

}


for(int i=50;i<180;i++){ //baja brazo derecho

setServo1(1,i);

delay(5);

}





for(int i=0;i<150;i++){ //levanta brazo izquierdo

setServo2(1,i);

delay(5);

}

for(int i=90;i<145;i++){ //ladea pie izquierdo

setServo2(0,i);

delay(25);

}


for(int i=90;i<135;i++){ //inclina pie derecho

setServo1(0,i);

delay(25);

}


for(int i=0;i<6;i++){

for(int i=90;i>30;i--){ //Giro pierna izquierda varias veces

setServo2(3,i);

delay(2);

}

}

for(int i=30;i<90;i++){ //Posisicon inicial pierna izquierda

setServo2(3,i);

delay(5);

}


for(int i=0;i<6;i++){ //sacude pie izquierdo

for(int j=145;j>65;j--){

setServo2(0,j);

delay(2);

}

}


for(int i=65;i<90;i++){ //Posicion inicial pie izquierdo

setServo2(0,i);

delay(25);

}


for(int i=135;i>90;i--){ //Posicion inicial pie derecho

setServo1(0,i);

delay(25);

}


for(int i=150;i>0;i--){ //baja brazo izquierdo

setServo2(1,i);

delay(5);

}


for(int i=0;i<90;i++){ //gira brazo derecho

setServo1(2,i);

delay(5);

}


for(int i=180;i>90;i--){ //Posicion inicial brazo derecho

setServo2(2,i);

delay(5);

}

delay(500);


for(int i=90;i>0;i--){ //gira brazo izquierdo

setServo1(2,i);

delay(5);

}


for(int i=90;i<180;i++){ //Posicion inicial brazo izquierdo

setServo2(2,i);

delay(5);

}

}


950 visualizaciones0 comentarios

Entradas recientes

Ver todo

Comments


Publicar: Blog2_Post
bottom of page