add sw project (incomplete)

This commit is contained in:
2024-07-03 21:52:50 +02:00
parent eee6dc511c
commit 31f9a27fe7
13 changed files with 868 additions and 0 deletions

View File

@@ -0,0 +1,369 @@
#include "Adafruit_MCP23X17.h"
#include <Ps3Controller.h>
#include <ESP32Servo.h> // by Kevin Harrington
// defines
#define clawServoPin 5
#define auxServoPin 18
#define cabLights 32
#define auxLights 33
#define pivot0 15
#define pivot1 14
#define mainBoom0 9
#define mainBoom1 8
#define secondBoom0 0
#define secondBoom1 1
#define tiltAttach0 3
#define tiltAttach1 2
#define thumb0 11
#define thumb1 10
#define auxAttach0 12
#define auxAttach1 13
#define leftMotor0 7
#define leftMotor1 6
#define rightMotor0 4
#define rightMotor1 5
Adafruit_MCP23X17 mcp;
Servo clawServo;
Servo auxServo;
int dly = 250;
int clawServoValue = 90;
int auxServoValue = 90;
int player = 0;
int battery = 0;
int servoDelay = 0;
bool cabLightsOn = false;
bool auxLightsOn = false;
bool moveClawServoUp = false;
bool moveClawServoDown = false;
bool moveAuxServoUp = false;
bool moveAuxServoDown = false;
void notify() {
//--------------- Digital D-pad button events --------------
if (Ps3.event.button_down.up) {
mcp.digitalWrite(thumb0, HIGH);
mcp.digitalWrite(thumb1, LOW);
Serial.println("Started pressing the up button");
}
if (Ps3.event.button_up.up) {
mcp.digitalWrite(thumb0, LOW);
mcp.digitalWrite(thumb1, LOW);
Serial.println("Released the up button");
}
if (Ps3.event.button_down.down) {
Serial.println("Started pressing the down button");
mcp.digitalWrite(thumb0, LOW);
mcp.digitalWrite(thumb1, HIGH);
}
if (Ps3.event.button_up.down) {
Serial.println("Released the down button");
mcp.digitalWrite(thumb0, LOW);
mcp.digitalWrite(thumb1, LOW);
}
if (Ps3.event.button_down.right) {
mcp.digitalWrite(auxAttach0, HIGH);
mcp.digitalWrite(auxAttach1, LOW);
Serial.println("Started pressing the right button");
}
if (Ps3.event.button_up.right) {
mcp.digitalWrite(auxAttach0, LOW);
mcp.digitalWrite(auxAttach1, LOW);
Serial.println("Released the right button");
}
if (Ps3.event.button_down.left) {
mcp.digitalWrite(auxAttach0, LOW);
mcp.digitalWrite(auxAttach1, HIGH);
Serial.println("Started pressing the left button");
}
if (Ps3.event.button_up.left) {
mcp.digitalWrite(auxAttach0, LOW);
mcp.digitalWrite(auxAttach1, LOW);
Serial.println("Released the left button");
}
//---------------- Analog stick value events ---------------
if (abs(Ps3.event.analog_changed.stick.lx) + abs(Ps3.event.analog_changed.stick.ly) > 2) {
Serial.print("Moved the left stick:");
Serial.print(" x=");
Serial.print(Ps3.data.analog.stick.lx, DEC);
Serial.print(" y=");
Serial.print(Ps3.data.analog.stick.ly, DEC);
Serial.println();
int LXValue = Ps3.data.analog.stick.lx;
Serial.print("LXValue =");
Serial.print(LXValue);
if (LXValue > 115) {
mcp.digitalWrite(pivot0, HIGH);
mcp.digitalWrite(pivot1, LOW);
delay(10);
Serial.print("Made to into Positive");
}
if (LXValue < -115) {
mcp.digitalWrite(pivot0, LOW);
mcp.digitalWrite(pivot1, HIGH);
delay(10);
Serial.print("Made to into negative");
}
int LYValue = Ps3.data.analog.stick.ly;
if (LYValue > 115) {
mcp.digitalWrite(secondBoom0, HIGH);
mcp.digitalWrite(secondBoom1, LOW);
delay(10);
}
if (LYValue < -115) {
mcp.digitalWrite(secondBoom0, LOW);
mcp.digitalWrite(secondBoom1, HIGH);
delay(10);
}
if (LXValue > -30 && LXValue < 30) {
mcp.digitalWrite(pivot0, LOW);
mcp.digitalWrite(pivot1, LOW);
}
if (LYValue > -30 && LYValue < 30) {
mcp.digitalWrite(secondBoom0, LOW);
mcp.digitalWrite(secondBoom1, LOW);
}
}
if (abs(Ps3.event.analog_changed.stick.rx) + abs(Ps3.event.analog_changed.stick.ry) > 2) {
Serial.print("Moved the right stick:");
Serial.print(" x=");
Serial.print(Ps3.data.analog.stick.rx, DEC);
Serial.print(" y=");
Serial.print(Ps3.data.analog.stick.ry, DEC);
Serial.println();
int RXValue = (Ps3.data.analog.stick.rx);
if (RXValue > 115) {
mcp.digitalWrite(tiltAttach0, HIGH);
mcp.digitalWrite(tiltAttach1, LOW);
delay(10);
Serial.print("Made to into Positive");
}
if (RXValue < -115) {
mcp.digitalWrite(tiltAttach0, LOW);
mcp.digitalWrite(tiltAttach1, HIGH);
delay(10);
Serial.print("Made to into negative");
}
int RYValue = (Ps3.data.analog.stick.ry);
if (RYValue > 115) {
mcp.digitalWrite(mainBoom0, HIGH);
mcp.digitalWrite(mainBoom1, LOW);
delay(10);
}
if (RYValue < -115) {
mcp.digitalWrite(mainBoom0, LOW);
mcp.digitalWrite(mainBoom1, HIGH);
delay(10);
}
if (RXValue > -30 && RXValue < 30) {
mcp.digitalWrite(tiltAttach0, LOW);
mcp.digitalWrite(tiltAttach1, LOW);
}
if (RYValue > -30 && RYValue < 30) {
mcp.digitalWrite(mainBoom0, LOW);
mcp.digitalWrite(mainBoom1, LOW);
}
}
//------------- Digital shoulder button events -------------
if (Ps3.event.button_down.l1) {
mcp.digitalWrite(leftMotor0, HIGH);
mcp.digitalWrite(leftMotor1, LOW);
delay(10);
Serial.println("Started pressing the left shoulder button");
}
if (Ps3.event.button_up.l1) {
mcp.digitalWrite(leftMotor0, LOW);
mcp.digitalWrite(leftMotor1, LOW);
delay(10);
Serial.println("Released the left shoulder button");
}
if (Ps3.event.button_down.r1) {
mcp.digitalWrite(rightMotor0, HIGH);
mcp.digitalWrite(rightMotor1, LOW);
delay(10);
Serial.println("Started pressing the right shoulder button");
}
if (Ps3.event.button_up.r1) {
mcp.digitalWrite(rightMotor0, LOW);
mcp.digitalWrite(rightMotor1, LOW);
delay(10);
Serial.println("Released the right shoulder button");
}
//-------------- Digital trigger button events -------------
if (Ps3.event.button_down.l2) {
mcp.digitalWrite(leftMotor0, LOW);
mcp.digitalWrite(leftMotor1, HIGH);
delay(10);
Serial.println("Started pressing the left trigger button");
}
if (Ps3.event.button_up.l2) {
mcp.digitalWrite(leftMotor0, LOW);
mcp.digitalWrite(leftMotor1, LOW);
delay(10);
Serial.println("Released the left trigger button");
}
if (Ps3.event.button_down.r2) {
mcp.digitalWrite(rightMotor0, LOW);
mcp.digitalWrite(rightMotor1, HIGH);
delay(10);
Serial.println("Started pressing the right trigger button");
}
if (Ps3.event.button_up.r2) {
mcp.digitalWrite(rightMotor0, LOW);
mcp.digitalWrite(rightMotor1, LOW);
delay(10);
Serial.println("Released the right trigger button");
}
//--- Digital cross/square/triangle/circle button events ---
if (Ps3.event.button_down.cross) {
moveClawServoUp = true;
Serial.println("Started pressing the cross button");
}
if (Ps3.event.button_up.cross) {
moveClawServoUp = false;
Serial.println("Released the cross button");
}
if (Ps3.event.button_down.square) {
moveAuxServoUp = true;
Serial.println("Started pressing the square button");
}
if (Ps3.event.button_up.square) {
moveAuxServoUp = false;
Serial.println("Released the square button");
}
if (Ps3.event.button_down.triangle) {
moveClawServoDown = true;
Serial.println("Started pressing the triangle button");
}
if (Ps3.event.button_up.triangle) {
moveClawServoDown = false;
}
if (Ps3.event.button_down.circle) {
moveAuxServoDown = true;
Serial.println("Started pressing the circle button");
}
if (Ps3.event.button_up.circle) {
moveAuxServoDown = false;
Serial.println("Released the circle button");
}
//--------------- Digital stick button events --------------
if (Ps3.event.button_down.l3) {
if (!cabLightsOn) {
digitalWrite(cabLights, HIGH);
cabLightsOn = true;
} else {
digitalWrite(cabLights, LOW);
cabLightsOn = false;
}
Serial.println("Started pressing the left stick button");
}
if (Ps3.event.button_up.l3)
Serial.println("Released the left stick button");
if (Ps3.event.button_down.r3) {
if (!auxLightsOn) {
digitalWrite(auxLights, HIGH);
auxLightsOn = true;
} else {
digitalWrite(auxLights, LOW);
auxLightsOn = false;
}
Serial.println("Started pressing the right stick button");
}
if (Ps3.event.button_up.r3) {
Serial.println("Released the right stick button");
}
if (moveClawServoUp) {
if (servoDelay == 3) {
if (clawServoValue >= 10 && clawServoValue < 170) {
clawServoValue = clawServoValue + 1;
clawServo.write(clawServoValue);
}
servoDelay = 0;
}
servoDelay++;
}
if (moveClawServoDown) {
if (servoDelay == 3) {
if (clawServoValue <= 170 && clawServoValue > 10) {
clawServoValue = clawServoValue - 1;
clawServo.write(clawServoValue);
}
servoDelay = 0;
}
servoDelay++;
}
if (moveAuxServoUp) {
if (servoDelay == 3) {
if (auxServoValue >= 10 && auxServoValue < 170) {
auxServoValue = auxServoValue + 1;
auxServo.write(auxServoValue);
}
servoDelay = 0;
}
servoDelay++;
}
if (moveAuxServoDown) {
if (servoDelay == 3) {
if (auxServoValue <= 170 && auxServoValue > 10) {
auxServoValue = auxServoValue - 1;
auxServo.write(auxServoValue);
}
servoDelay = 0;
}
servoDelay++;
}
}
void onConnect() {
Serial.println("Connected.");
}
void setup() {
Serial.begin(115200);
mcp.begin_I2C();
// put your setup code here, to run once:
for (int i = 0; i <= 15; i++) {
mcp.pinMode(i, OUTPUT);
}
Ps3.attach(notify);
Ps3.attachOnConnect(onConnect);
Ps3.begin("a0:5a:5a:a0:0f:91");
Serial.println("Ready.");
pinMode(clawServoPin, OUTPUT);
pinMode(auxServoPin, OUTPUT);
pinMode(cabLights, OUTPUT);
pinMode(auxLights, OUTPUT);
clawServo.attach(clawServoPin);
auxServo.attach(auxServoPin);
clawServo.write(clawServoValue);
auxServo.write(auxServoValue);
}
void loop() {
if (!Ps3.isConnected())
return;
delay(500);
}