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 开发板
注意接线,不要接短路了哦!!!!!!!