机甲大师项目总结

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.麦克纳姆轮

麦克纳姆轮是一种特殊的车轮,它的工作原理与普通车轮不同。以下是麦克纳姆轮的工作示意图:

  1. 麦克纳姆轮由许多小轮子组成,这些小轮子呈一定角度排列在大轮子的圆周上。
  2. 当麦克纳姆轮转动时,小轮子与地面接触并产生摩擦力。
  3. 由于小轮子的角度不同,它们对地面的摩擦力方向也不同。有些小轮子向前推动,有些小轮子向后推动,还有一些小轮子侧向推动。
  4. 通过合理调整小轮子的角度和转速,可以实现麦克纳姆轮的全方位运动,包括前进、后退、左右平移、旋转等。

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 设置为低电平
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值