任务一 控制电机旋转
1号电机27,13引脚控制;2号电机4,2引脚控制;3号电机17,12引脚控制;4号电机15,14引脚控制
analogWrite(27,255);
analogWrite(13,0);
analogWrite(4,255);
analogWrite(2,0);
analogWrite(17,255);
analogWrite(12,0);
analogWrite(15,255);
analogWrite(14,0);
`
任务二 控制车前后左右移动,平移
前进:四个轮子正转;后退:四个轮子反转;左转:左侧轮反转,右侧轮正转;右转:左侧轮正转,右侧轮反转;左平移:1,4号轮反转,2,3号轮正转;右平移:1,4号轮正转,2,3号轮反转;停止:四轮不转。
平移使用麦克纳姆轮
void qianjing(){
analogWrite(27,255);
analogWrite(13,0);
analogWrite(4,255);
analogWrite(2,0);
analogWrite(17,255);
analogWrite(12,0);
analogWrite(15,255);
analogWrite(14,0);
}
void houtui(){
analogWrite(27,0);
analogWrite(13,255);
analogWrite(4,0);
analogWrite(2,255);
analogWrite(17,0);
analogWrite(12,255);
analogWrite(15,0);
analogWrite(14,255);
}
void zuopingyi(){
analogWrite(27,0);
analogWrite(13,255);
analogWrite(4,255);
analogWrite(2,0);
analogWrite(17,255);
analogWrite(12,0);
analogWrite(15,0);
analogWrite(14,255);
}
void youpingyi(){
analogWrite(27,255);
analogWrite(13,0);
analogWrite(4,0);
analogWrite(2,255);
analogWrite(17,0);
analogWrite(12,255);
analogWrite(15,255);
analogWrite(14,0);
}
void zuo(){
analogWrite(27,0);
analogWrite(13,255);
analogWrite(4,0);
analogWrite(2,255);
analogWrite(17,255);
analogWrite(12,0);
analogWrite(15,255);
analogWrite(14,0);
}
void you(){
analogWrite(27,255);
analogWrite(13,0);
analogWrite(4,255);
analogWrite(2,0);
analogWrite(17,0);
analogWrite(12,255);
analogWrite(15,0);
analogWrite(14,255);
}
void stop(){
analogWrite(27,0);
analogWrite(13,0);
analogWrite(4,0);
analogWrite(2,0);
analogWrite(17,0);
analogWrite(12,0);
analogWrite(15,0);
analogWrite(14,0);
}
任务三 PS3手柄控制车
摇杆:stick.lx/ly/rx/ry;方向键:button.up/down/left/right;图形键:button.triangle/square/cross/circle;前按键:button.l1/l2/r1/r2。
配对地址
#include <Ps3Controller.h>
void kongzhi(){
if(Ps3.data.analog.stick.lx>=100){
you();}
else if (Ps3.data.analog.stick.lx<=-100){
zuo();}
else if(Ps3.data.analog.stick.rx>=100){
youpingyi();}
else if(Ps3.data.analog.stick.rx<=-100){
zuopingyi();}
else if(Ps3.data.analog.stick.ly>=100){
houtui();}
else if(Ps3.data.analog.stick.ly<=-100){
qianjing();}
else if(Ps3.data.analog.stick.ry>=100){
houtui();}
else if(Ps3.data.analog.stick.ry<=-100){
qianjing();}
else{
stop();
}
}
撞击感应
振动传感器感应力度,力度>500闪一下红灯,常规绿灯。
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel rgb_display_5 = Adafruit_NeoPixel(12,5,NEO_GRB + NEO_KHZ800);
void boom(){
if (analogRead(32)>=500){
for(int i = 0;i <16;i++){
rgb_display_5.setPixelColor(i,255,0,0);
}
rgb_display_5.show();
delay(200);
} else{
for (int i = 0;i<16;i++){
rgb_display_5.setPixelColor(i,0,255,0);
}
rgb_display_5.show();
}
}
舵机
通过手柄控制摇臂控制发射器上下。
#include<ESP32Servo.h>
void duoji(){
if(Ps3.data.analog.button.l2){
if(servo < 180){
servo_25.write(servo);
delay(10);
servo=servo+2;
}
}else if(Ps3.data.analog.button.r2){
if(servo>90){
servo_25.write(servo);
delay(10);
servo=servo-2;
}
}
}
发射器
用手柄控制发射器发射子弹
void biubiu(){
if (Ps3.data.analog.button.l1){
analogWrite(26,255);
}else{
analogWrite(26,0);
}
}