Components and supplies
PCA9865 PWM Servo Driver
Arduino UNO
Apps and platforms
Arduino IDE
Project description
Code
Arduino Code to control 8 Adafruit servo drivers to adjust them to 90 degrees
arduino
1#include "Arduino.h" 2#include <Wire.h> 3#include <Adafruit_PWMServoDriver.h> 4 5//numbering works in binary. Check here if you get confused http://www.allspectrum.com/store/all-spectrum-electronics-binary-decimal-hex-reference-card-free-p-8251.html 6 7Adafruit_PWMServoDriver pwm0 = Adafruit_PWMServoDriver(0x40); //in this one you don't solder the board 8Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x41); //in this one you solder one register. Check adafruit tutorial for details https://learn.adafruit.com/16-channel-pwm-servo-driver/chaining-drivers 9Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x42); 10Adafruit_PWMServoDriver pwm7 = Adafruit_PWMServoDriver(0x43); 11Adafruit_PWMServoDriver pwm6 = Adafruit_PWMServoDriver(0x44); 12Adafruit_PWMServoDriver pwm5 = Adafruit_PWMServoDriver(0x45); 13Adafruit_PWMServoDriver pwm4 = Adafruit_PWMServoDriver(0x46); 14Adafruit_PWMServoDriver pwm3 = Adafruit_PWMServoDriver(0x47); 15 16 17 18 19int C = 500; //delay variable 20int x = 250; //through testing we found pwm 250 to look visiually as 90 degrees 21 22 23 24void setup() { 25 26 27 28 pwm0.begin(); 29 pwm0.setPWMFreq(50); //add frequency based on your motor datasheet, otherwise, do NOT complain of the jitter :) 30 pwm1.begin(); 31 pwm1.setPWMFreq(50); 32 pwm2.begin(); 33 pwm2.setPWMFreq(50); 34 pwm3.begin(); 35 pwm3.setPWMFreq(50); 36 37 38 pwm4.begin(); 39 pwm4.setPWMFreq(50); 40 pwm5.begin(); 41 pwm5.setPWMFreq(50); 42 pwm6.begin(); 43 pwm6.setPWMFreq(50); 44 pwm7.begin(); 45 pwm7.setPWMFreq(50); 46} 47 48void loop () { 49 50 for (int i = 0; i <= 15; i++) { //according to the driver library i is the number of motors 51 pwm7.setPWM(i, 0, x); 52 pwm6.setPWM(i, 0, x); 53 pwm5.setPWM(i, 0, x); 54 pwm4.setPWM(i, 0, x); 55 pwm3.setPWM(i, 0, x); 56 pwm2.setPWM(i, 0, x); 57 pwm1.setPWM(i, 0, x); 58 pwm0.setPWM(i, 0, x); 59 delay(50); 60 61 62} 63 64delay (C); 65}
Arduino Code to control 8 Adafruit servo drivers to adjust them to 90 degrees
arduino
1#include "Arduino.h" 2#include <Wire.h> 3#include <Adafruit_PWMServoDriver.h> 4 5//numbering works in binary. Check here if you get confused http://www.allspectrum.com/store/all-spectrum-electronics-binary-decimal-hex-reference-card-free-p-8251.html 6 7Adafruit_PWMServoDriver pwm0 = Adafruit_PWMServoDriver(0x40); //in this one you don't solder the board 8Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x41); //in this one you solder one register. Check adafruit tutorial for details https://learn.adafruit.com/16-channel-pwm-servo-driver/chaining-drivers 9Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x42); 10Adafruit_PWMServoDriver pwm7 = Adafruit_PWMServoDriver(0x43); 11Adafruit_PWMServoDriver pwm6 = Adafruit_PWMServoDriver(0x44); 12Adafruit_PWMServoDriver pwm5 = Adafruit_PWMServoDriver(0x45); 13Adafruit_PWMServoDriver pwm4 = Adafruit_PWMServoDriver(0x46); 14Adafruit_PWMServoDriver pwm3 = Adafruit_PWMServoDriver(0x47); 15 16 17 18 19int C = 500; //delay variable 20int x = 250; //through testing we found pwm 250 to look visiually as 90 degrees 21 22 23 24void setup() { 25 26 27 28 pwm0.begin(); 29 pwm0.setPWMFreq(50); //add frequency based on your motor datasheet, otherwise, do NOT complain of the jitter :) 30 pwm1.begin(); 31 pwm1.setPWMFreq(50); 32 pwm2.begin(); 33 pwm2.setPWMFreq(50); 34 pwm3.begin(); 35 pwm3.setPWMFreq(50); 36 37 38 pwm4.begin(); 39 pwm4.setPWMFreq(50); 40 pwm5.begin(); 41 pwm5.setPWMFreq(50); 42 pwm6.begin(); 43 pwm6.setPWMFreq(50); 44 pwm7.begin(); 45 pwm7.setPWMFreq(50); 46} 47 48void loop () { 49 50 for (int i = 0; i <= 15; i++) { //according to the driver library i is the number of motors 51 pwm7.setPWM(i, 0, x); 52 pwm6.setPWM(i, 0, x); 53 pwm5.setPWM(i, 0, x); 54 pwm4.setPWM(i, 0, x); 55 pwm3.setPWM(i, 0, x); 56 pwm2.setPWM(i, 0, x); 57 pwm1.setPWM(i, 0, x); 58 pwm0.setPWM(i, 0, x); 59 delay(50); 60 61 62} 63 64delay (C); 65}
Downloadable files
PWM driver to arduino wiring, image from Adafriut.com
PWM driver to arduino wiring, image from Adafriut.com
Comments
Only logged in users can leave comments