先放资料
立创开源地址:https://oshwhub.com/allen-liu/esp8266-pca9685-di-32-lu-duo-ji-kuo-zhan-ban
B站演示地址:https://www.bilibili.com/video/BV1u34y1Y7PG?spm_id_from=333.999.0.0
arduino 32路舵机驱动板(开源)
这是一块32路舵机驱动板,做舵机机器人非常方便。主控用的esp8266.
电源用的5V的电池,电池直接给舵机供电,经过压降之后产生3.3V电压给esp8266模组供电。
这块板儿主要是用于控制sg90舵机,就是那种蓝色舵机,或者mg90s舵机。
后续会升级,升级后可以控制5-12V的pwm舵机。
这样就可以控制高压的舵机,比如型号为mg996r或mg995的舵机。
3D图片如下图所示:
实物图如下:
/***************************************************
对于ARDUINO UNOS,这是SCL->模拟5,SDA - >模拟4
****************************************************/
#include
#include
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x41);
#define SERVOMIN 102 //0.5/20 * 4096 = 102
#define SERVOMAX 512 //2.5/20 * 4096 = 512
void setup() {
Serial.begin(115200);
Serial.println("16 channel Servo test!");
pwm.begin();
pwm1.begin();
pwm.setPWMFreq(50); // Analog servos run at ~50 Hz updates
pwm1.setPWMFreq(50); // Analog servos run at ~50 Hz updates
}
void loop() {
for (uint16_t pulselen = SERVOMIN; pulselen < SERVOMAX; pulselen++) {
for(int i=0;i<16;i++)
{
pwm.setPWM(i, 0, pulselen);
pwm1.setPWM(i, 0, pulselen);
}
delayMicroseconds(200);
ESP.wdtFeed(); //喂狗防止复位
}
for (uint16_t pulselen = SERVOMAX; pulselen > SERVOMIN; pulselen--) {
for(int i=0;i<16;i++)
{
pwm.setPWM(i, 0, pulselen);
pwm1.setPWM(i, 0, pulselen);
}
delayMicroseconds(200);
ESP.wdtFeed(); //喂狗防止复位
}
}