机甲大师——研究报告

1.思维导图

2.代码板块


#define PIN_1  27    //定义引脚(也可以选择直接pinMode定义)
#define PIN_2  13
#define PIN_3  17
#define PIN_4  12
#define PIN_5  15
#define PIN_6  14
#define PIN_7  4
#define PIN_8  2
pinMode(PIN_1, OUTPUT);
pinMode(PIN_2, OUTPUT);
pinMode(PIN_3, OUTPUT);
pinMode(PIN_4, OUTPUT);
pinMode(PIN_5, OUTPUT);
pinMode(PIN_6, OUTPUT);
pinMode(PIN_7, OUTPUT);
pinMode(PIN_8, OUTPUT);



void qianjin(){                  //设置前进等的模式
  digitalWrite(PIN_1, HIGH);
  digitalWrite(PIN_2, LOW);
  digitalWrite(PIN_3, HIGH);
  digitalWrite(PIN_4, LOW);
  digitalWrite(PIN_5, HIGH);
  digitalWrite(PIN_6, LOW);
  digitalWrite(PIN_7, HIGH);
  digitalWrite(PIN_8, LOW);
}

void houtui(){
  digitalWrite(PIN_2, HIGH);
  digitalWrite(PIN_1, LOW);
  digitalWrite(PIN_4, HIGH);
  digitalWrite(PIN_3, LOW);
  digitalWrite(PIN_6, HIGH);
  digitalWrite(PIN_5, LOW);
  digitalWrite(PIN_8, HIGH);
  digitalWrite(PIN_7, LOW);
}

void youpingyi(){  
  digitalWrite(PIN_1, HIGH);
  digitalWrite(PIN_2, LOW);
  digitalWrite(PIN_4, HIGH);
  digitalWrite(PIN_3, LOW);
  digitalWrite(PIN_5, HIGH);
  digitalWrite(PIN_6, LOW);
  digitalWrite(PIN_8, HIGH);
  digitalWrite(PIN_7, LOW);
}

void zuopingyi(){
  digitalWrite(PIN_1, LOW);
  digitalWrite(PIN_2, HIGH);
  digitalWrite(PIN_4, LOW);
  digitalWrite(PIN_3, HIGH);
  digitalWrite(PIN_5, LOW);
  digitalWrite(PIN_6, HIGH);
  digitalWrite(PIN_7, HIGH);
  digitalWrite(PIN_8, LOW);
}

void stopAll() {
  digitalWrite(PIN_1, LOW);
  digitalWrite(PIN_2, LOW);
  digitalWrite(PIN_3, LOW);
  digitalWrite(PIN_4, LOW);
  digitalWrite(PIN_5, LOW);
  digitalWrite(PIN_6, LOW);
  digitalWrite(PIN_7, LOW);
  digitalWrite(PIN_8, LOW);
}
 void zuozhuan() {
  digitalWrite(27, HIGH);
  digitalWrite(13, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(2, LOW);
  digitalWrite(17, LOW);
  digitalWrite(12, LOW);
  digitalWrite(15, LOW);
  digitalWrite(14, LOW);
}

void youzhuan() {
  digitalWrite(17, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(15, HIGH);
  digitalWrite(14, LOW);
  digitalWrite(27, LOW);
  digitalWrite(13, LOW);
  digitalWrite(4, LOW);
  digitalWrite(2, LOW);
}
 






 if(Ps3.isConnected()){    //包扩了部分手柄的一部分,用ps3手柄按键控制


        if( Ps3.data.button.cross ){
            Serial.println("Pressing the cross button");
            houtui();
        }

        else if( Ps3.data.button.square ){
            Serial.println("Pressing the square button");
            zuopingyi();
        }

         else if( Ps3.data.button.triangle ){
            Serial.println("Pressing the triangle button");
            qianjin();
        }

         else if( Ps3.data.button.circle ){
            Serial.println("Pressing the circle button");
            youpingyi();
        }
        
        else if(Ps3.data.button.right){
            zuozhuan();
         }
        else if(Ps3.data.button.left){
            youzhuan();
             }

        else{
          stopAll();
        }

      
}

3.舵机

Servo ss;
    


 
a=180;
 ss.attach(23); 
 Serial.begin(9600);
 pixels.begin();
 pinMode(32, INPUT);

void shang(){
  ss.write(a); 
  delay(15);
  a--;
}
void xia(){
  ss.write(a);
  delay(15);
  a++;
}
   



if(Ps3.data.button.up){
         Serial.println(123);
         ss.write(90);
         //shang();
                              
      }
  if(Ps3.data.button.down){
        Serial.println(321);
        ss.write(180);
        // xia();
    }

4.灯带

#define PIN        5  // 连接灯带的数字引脚
#define NUMPIXELS 12  // 灯带中的灯珠数量
  for (int i = 0; i < NUMPIXELS; i++) {
    if (analogRead(32) > 50) {
      pixels.setPixelColor(i, pixels.Color(0, 255, 0)); // 设置为绿色
    } else {
      pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // 设置为红色
    }
  }
  pixels.show(); 
  delay(200);

5.代码总览

#include <Ps3Controller.h>
#include <Arduino.h>
#include <Adafruit_NeoPixel.h>
#include <ESP32Servo.h>
#include <Wire.h> 
#define PIN        5  // 连接灯带的数字引脚
#define NUMPIXELS 12  // 灯带中的灯珠数量
 
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);


// 定义引脚
#define PIN_1  27
#define PIN_2  13
#define PIN_3  17
#define PIN_4  12
#define PIN_5  15
#define PIN_6  14
#define PIN_7  4
#define PIN_8  2
int a = 50;

Servo ss;
void setup() {

  a=180;
  ss.attach(23); 
  Serial.begin(9600);
  pixels.begin();
  pinMode(32, INPUT);


  // 配置引脚为输出模式
  pinMode(PIN_1, OUTPUT);
  pinMode(PIN_2, OUTPUT);
  pinMode(PIN_3, OUTPUT);
  pinMode(PIN_4, OUTPUT);
  pinMode(PIN_5, OUTPUT);
  pinMode(PIN_6, OUTPUT);
  pinMode(PIN_7, OUTPUT);
  pinMode(PIN_8, OUTPUT);
  pinMode(25,OUTPUT);
  pinMode(26,OUTPUT);
  Serial.begin(115200);
    Ps3.begin("01:02:03:04:05:06");
    Serial.println("Ready.");
}

void fashe(){
  digitalWrite(25,HIGH);
}


void qianjin(){
  digitalWrite(PIN_1, HIGH);
  digitalWrite(PIN_2, LOW);
  digitalWrite(PIN_3, HIGH);
  digitalWrite(PIN_4, LOW);
  digitalWrite(PIN_5, HIGH);
  digitalWrite(PIN_6, LOW);
  digitalWrite(PIN_7, HIGH);
  digitalWrite(PIN_8, LOW);
}

void houtui(){
  digitalWrite(PIN_2, HIGH);
  digitalWrite(PIN_1, LOW);
  digitalWrite(PIN_4, HIGH);
  digitalWrite(PIN_3, LOW);
  digitalWrite(PIN_6, HIGH);
  digitalWrite(PIN_5, LOW);
  digitalWrite(PIN_8, HIGH);
  digitalWrite(PIN_7, LOW);
}

void youpingyi(){  
  digitalWrite(PIN_1, HIGH);
  digitalWrite(PIN_2, LOW);
  digitalWrite(PIN_4, HIGH);
  digitalWrite(PIN_3, LOW);
  digitalWrite(PIN_5, HIGH);
  digitalWrite(PIN_6, LOW);
  digitalWrite(PIN_8, HIGH);
  digitalWrite(PIN_7, LOW);
}

void zuopingyi(){
  digitalWrite(PIN_1, LOW);
  digitalWrite(PIN_2, HIGH);
  digitalWrite(PIN_4, LOW);
  digitalWrite(PIN_3, HIGH);
  digitalWrite(PIN_5, LOW);
  digitalWrite(PIN_6, HIGH);
  digitalWrite(PIN_7, HIGH);
  digitalWrite(PIN_8, LOW);
}

void stopAll() {
  digitalWrite(PIN_1, LOW);
  digitalWrite(PIN_2, LOW);
  digitalWrite(PIN_3, LOW);
  digitalWrite(PIN_4, LOW);
  digitalWrite(PIN_5, LOW);
  digitalWrite(PIN_6, LOW);
  digitalWrite(PIN_7, LOW);
  digitalWrite(PIN_8, LOW);
}
 void zuozhuan() {
  digitalWrite(27, HIGH);
  digitalWrite(13, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(2, LOW);
  digitalWrite(17, LOW);
  digitalWrite(12, LOW);
  digitalWrite(15, LOW);
  digitalWrite(14, LOW);
}

void youzhuan() {
  digitalWrite(17, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(15, HIGH);
  digitalWrite(14, LOW);
  digitalWrite(27, LOW);
  digitalWrite(13, LOW);
  digitalWrite(4, LOW);
  digitalWrite(2, LOW);
}

void shang(){
  ss.write(a); 
  delay(15);
  a--;
}
void xia(){
  ss.write(a);
  delay(15);
  a++;
}

void loop(){


  for (int i = 0; i < NUMPIXELS; i++) {
    if (analogRead(32) > 50) {
      pixels.setPixelColor(i, pixels.Color(0, 255, 0)); // 设置为绿色
    } else {
      pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // 设置为红色
    }
  }
  pixels.show(); 
  delay(200);

  if(Ps3.data.button.up){
         Serial.println(123);
         ss.write(90);
         //shang();
                              
      }
  if(Ps3.data.button.down){
        Serial.println(321);
        ss.write(180);
        // xia();
    }
    if(Ps3.isConnected()){


        if( Ps3.data.button.cross ){
            Serial.println("Pressing the cross button");
            houtui();
        }

        else if( Ps3.data.button.square ){
            Serial.println("Pressing the square button");
            zuopingyi();
        }

         else if( Ps3.data.button.triangle ){
            Serial.println("Pressing the triangle button");
            qianjin();
        }

         else if( Ps3.data.button.circle ){
            Serial.println("Pressing the circle button");
            youpingyi();
        }
        
        else if(Ps3.data.button.right){
            zuozhuan();
         }
        else if(Ps3.data.button.left){
            youzhuan();
             }
            else if(Ps3.data.button.l1){
              fashe();
            }
        else{
          stopAll();
        }

      
}}

6.库,需要下载库,是这几个,在编码前先下载, .h不用加

 <Ps3Controller.h>
 <Arduino.h>
 <Adafruit_NeoPixel.h>
 <ESP32Servo.h>
 <Wire.h> 

7.

ESP32 Dev Module   开发板

注意接线,不要接短路了哦!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值