电路
正负极没有标识
程序
第一次使用不要忘了配置蓝牙模块
mega配置蓝牙模块参考https://blog.csdn.net/qq_45037925/article/details/109680769
#include <Wire.h> //16路舵机控制板头文件(pca9685)
#include <Adafruit_PWMServoDriver.h> //16路舵机控制板头文件
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();//以这种方式调用,它(pca9685)使用默认地址0x40。
//Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x41);//也可以用不同的地址调用它
void setServoPulse(uint8_t n, double pulse); //以秒为单位设置脉冲长度函数
void pwm_text(); //16路舵机控制板测试函数,效果是来回转动,16路同时
/*根据你的伺服制作,脉冲宽度最小和最大可能变化,你想要这些尽可能小大而不碰到
硬停止,对于最大范围。你必须调整它们以匹配你的伺服系统!*/
#define SERVOMIN 150 //这是“最小”脉冲长度计数(在4096中)//本程序不用
#define SERVOMAX 600 //这是“最大”脉冲长度计数(在4096中)
const int relayPin0 =7; //the "s" of relay module attach to//3个继电器控制引脚
const int relayPin1 =8; //the "s" of relay module attach to
const int relayPin2 =9; //the "s" of relay module attach to
const int input1 = 3; // 定义uno的pin 5 向 input1 输出 //4个l298n控制引脚
const int input2 = 4; // 定义uno的pin 6 向 input2 输出
const int input3 = 5; // 定义uno的pin 9 向 input3 输出
const int input4 = 6; // 定义uno的pin 10 向 input4 输出
int flag[11]={
0,0,0,0,0,0,0,0,0,0,0};//用来记录舵机应该上去还是转下去的数组
void setup()
{
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
pinMode(input3,OUTPUT);
pinMode(input4,OUTPUT);
pinMode(relayPin0, OUTPUT); //initialize relay as an output
pinMode(relayPin1, OUTPUT); //initialize relay as an output
pinMode(relayPin2, OUTPUT); //initialize relay as an output
// 设置波特率为 38400
Serial.begin(38400); //和电脑通信的
Serial3.begin(9600);//和蓝牙模块通信的
Serial.println("BT is ready!");
pwm.begin(