1.控制电机
通过analogWrite控制引脚输出值
程序示例:
void wait(){ //停止
analogWrite(27, 0); // 将引脚 27 的模拟输出设置为 0
analogWrite(13,0); // 将引脚 13 的模拟输出设置为 0
analogWrite(4,0); // 将引脚 4 的模拟输出设置为 0
analogWrite(2, 0); // 将引脚 2 的模拟输出设置为 0
analogWrite(17, 0); // 将引脚 17 的模拟输出设置为 0
analogWrite(12,0); // 将引脚 12 的模拟输出设置为 0
analogWrite(15,0); // 将引脚 15 的模拟输出设置为 0
analogWrite(14,0); // 将引脚 14 的模拟输出设置为 0
}
// 前进控制函数
void forward() {
analogWrite(27, 255); // 将引脚 27 的模拟输出设置为 255
analogWrite(13, 0); // 将引脚 13 的模拟输出设置为 0
analogWrite(4, 255); // 将引脚 4 的模拟输出设置为 255
analogWrite(2, 0); // 将引脚 2 的模拟输出设置为 0
analogWrite(17, 255); // 将引脚 17 的模拟输出设置为 255
analogWrite(12, 0); // 将引脚 12 的模拟输出设置为 0
analogWrite(15, 255); // 将引脚 15 的模拟输出设置为 255
analogWrite(14, 0); // 将引脚 14 的模拟输出设置为 0
}
// 后退控制函数
void back() {
analogWrite(27, 0); // 将引脚 27 的模拟输出设置为 0
analogWrite(13, 255); // 将引脚 13 的模拟输出设置为 255
analogWrite(4, 0); // 将引脚 4 的模拟输出设置为 0
analogWrite(2, 255); // 将引脚 2 的模拟输出设置为 255
analogWrite(17, 0); // 将引脚 17 的模拟输出设置为 0
analogWrite(12, 255); // 将引脚 12 的模拟输出设置为 255
analogWrite(15, 0); // 将引脚 15 的模拟输出设置为 0
analogWrite(14, 255); // 将引脚 14 的模拟输出设置为 255
}
// 向左控制函数
void left() {
analogWrite(27, 0); // 将引脚 27 的模拟输出设置为 0
analogWrite(13, 255); // 将引脚 13 的模拟输出设置为 255
analogWrite(4, 255); // 将引脚 4 的模拟输出设置为 255
analogWrite(2, 0); // 将引脚 2 的模拟输出设置为 0
analogWrite(17, 255); // 将引脚 17 的模拟输出设置为 255
analogWrite(12, 0); // 将引脚 12 的模拟输出设置为 0
analogWrite(15, 0); // 将引脚 15 的模拟输出设置为 0
analogWrite(14, 255); // 将引脚 14 的模拟输出设置为 255
}
// 向右控制函数
void right() {
analogWrite(27, 255); // 将引脚 27 的模拟输出设置为 255
analogWrite(13, 0); // 将引脚 13 的模拟输出设置为 0
analogWrite(4, 0); // 将引脚 4 的模拟输出设置为 0
analogWrite(2, 255); // 将引脚 2 的模拟输出设置为 255
analogWrite(17, 0); // 将引脚 17 的模拟输出设置为 0
analogWrite(12, 255); // 将引脚 12 的模拟输出设置为 255
analogWrite(15, 255); // 将引脚 15 的模拟输出设置为 255
analogWrite(14, 0); // 将引脚 14 的模拟输出设置为 0
}
// 向右转控制函数
void tright() {
analogWrite(27, 0); // 将引脚 27 的模拟输出设置为 0
analogWrite(13, 0); // 将引脚 13 的模拟输出设置为 0
analogWrite(4, 255); // 将引脚 4 的模拟输出设置为 255
analogWrite(2, 0); // 将引脚 2 的模拟输出设置为 0
analogWrite(17, 0); // 将引脚 17 的模拟输出设置为 0
analogWrite(12, 255); // 将引脚 12 的模拟输出设置为 255
analogWrite(15, 0); // 将引脚 15 的模拟输出设置为 0
analogWrite(14, 0); // 将引脚 14 的模拟输出设置为 0
}
// 向左转控制函数
void tleft() {
analogWrite(27, 0); // 将引脚 27 的模拟输出设置为 0
analogWrite(13,0); // 将引脚 13 的模拟输出设置为 0
analogWrite(4,0); // 将引脚 4 的模拟输出设置为 0
analogWrite(2, 255); // 将引脚 2 的模拟输出设置为 255
analogWrite(17, 255); // 将引脚 17 的模拟输出设置为 255
analogWrite(12,0); // 将引脚 12 的模拟输出设置为 0
analogWrite(15,0); // 将引脚 15 的模拟输出设置为 0
analogWrite(14,0); // 将引脚 14 的模拟输出设置为 0
}
2.麦克纳姆轮
麦克纳姆轮是一种特殊的车轮,它的工作原理与普通车轮不同。以下是麦克纳姆轮的工作示意图:
- 麦克纳姆轮由许多小轮子组成,这些小轮子呈一定角度排列在大轮子的圆周上。
- 当麦克纳姆轮转动时,小轮子与地面接触并产生摩擦力。
- 由于小轮子的角度不同,它们对地面的摩擦力方向也不同。有些小轮子向前推动,有些小轮子向后推动,还有一些小轮子侧向推动。
- 通过合理调整小轮子的角度和转速,可以实现麦克纳姆轮的全方位运动,包括前进、后退、左右平移、旋转等。
3.PS3
if(Ps3.isConnected()){ // 如果 PS3 已连接
Serial.println("123"); // 输出 "123" 到串口
if(Ps3.data.button.cross ){ // 如果 PS3 上的十字键被按下
back();
}
else if(Ps3.data.button.square ){ // 如果 PS3 上的方形键被按下
left();
}
else if(Ps3.data.button.triangle ){ // 如果 PS3 上的三角形键被按下
forward();
}
else if(Ps3.data.button.circle ){ // 如果 PS3 上的圆形键被按下
right();
}
else if(Ps3.data.button.left ){ // 如果 PS3 上的左方向键被按下
tleft();
}
else if(Ps3.data.button.right ){ // 如果 PS3 上的右方向键被按下
tright();
}
else{
wait();
}
}
4.灯带
通过感应震动来调整灯的颜色
程序如下
// 灯光控制函数
void light(){
if (analogRead(32)>200){ // 如果模拟输入 32 的值大于 200
for (int i = 0; i < NUM_PIXELS; i++){ // 遍历 NeoPixel 灯带的每个像素
strip.setPixelColor(i, strip.Color(255, 0, 0)); // 设置像素颜色为红色
}
strip.show(); // 显示灯带
}else{
for (int i = 0; i < NUM_PIXELS; i++){ // 遍历 NeoPixel 灯带的每个像素
strip.setPixelColor(i, strip.Color(255, 255, 255)); // 设置像素颜色为白色
}
strip.show(); // 显示灯带
}
}
5.舵机
操控发射器上下
// 向上控制函数
void up(){
myservo.write(30); // 舵机转动到 30 度位置
}
// 向下控制函数
void down(){
myservo.write(150); // 舵机转动到 150 度位置
}
6.发射器
发射
// 输出控制函数
void out(){
if( Ps3.data.button.l2 ){ // 如果 PS3 控制器的 L2 按钮被按下
digitalWrite(25, HIGH); // 将数字引脚 25 设置为高电平
}
else{
digitalWrite(25, LOW); // 将数字引脚 25 设置为低电平
}
}