Código completo:
#include <PS3BT.h>
#include <usbhub.h>
#ifdef dobogusinclude
#include <spi4teensy3.h>
#include <SPI.h>
#endif
#include <Servo.h>
Servo a;
Servo b;
Servo c;
Servo d;
Servo e;
Servo f;
Servo g;
Servo h;
Servo i;
Servo j;
Servo k;
Servo l;
USB Usb;
BTD Btd(&Usb);
PS3BT PS3(&Btd);
bool printTemperature;
bool printAngle;
int Numero;
int angD;
int angI;
void setup() {
Serial.begin(115200);
#if !defined(__MIPSEL__)
while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
if (Usb.Init() == -1) {
Serial.print(F("\r\nOSC did not start"));
while (1); //halt
}
Serial.print(F("\r\nPS3 Bluetooth Library Started"));
a.attach(2);
b.attach(3);
c.attach(4);
d.attach(34); //5
e.attach(6);
f.attach(7);
g.attach(8);
h.attach(36); //9
i.attach(32); //10
j.attach(28); //11
k.attach(30); //12
l.attach(13);
a.write(90);
b.write(90);
c.write(90);
d.write(90);
e.write(90);
f.write(90);
g.write(90);
h.write(90);
i.write(90);
j.write(90);
k.write(90);
l.write(90);
delay(2000);
Numero = 0;
angD = 90;
angI = 90;
}
void loop() {
Usb.Task();
if (PS3.PS3Connected || PS3.PS3NavigationConnected) {
if (PS3.getAnalogHat(LeftHatX) > 137 || PS3.getAnalogHat(LeftHatX) < 117 || PS3.getAnalogHat(LeftHatY) > 137 || PS3.getAnalogHat(LeftHatY) < 117 || PS3.getAnalogHat(RightHatX) > 137 || PS3.getAnalogHat(RightHatX) < 117 || PS3.getAnalogHat(RightHatY) > 137 || PS3.getAnalogHat(RightHatY) < 117) {
Serial.print(F("\r\nLeftHatX: "));
Serial.print(PS3.getAnalogHat(LeftHatX));
Serial.print(F("\tLeftHatY: "));
Serial.print(PS3.getAnalogHat(LeftHatY));
if (PS3.PS3Connected) { // The Navigation controller only have one joystick
Serial.print(F("\tRightHatX: "));
Serial.print(PS3.getAnalogHat(RightHatX));
Serial.print(F("\tRightHatY: "));
Serial.print(PS3.getAnalogHat(RightHatY));
}
}
}
// Analog button values can be read from almost all buttons
if (PS3.getAnalogButton(L2) || PS3.getAnalogButton(R2)) {
Serial.print(F("\r\nL2: "));
Serial.print(PS3.getAnalogButton(L2));
if (PS3.PS3Connected) {
Serial.print(F("\tR2: "));
Serial.print(PS3.getAnalogButton(R2));
}
}
if (PS3.getButtonClick(PS)) {
Serial.print(F("\r\nPS"));
PS3.disconnect();
}
else {
if (PS3.getButtonClick(TRIANGLE)){
//Inclinandose hacia adelante
//Azules
a.write(45);c.write(90);e.write(135);g.write(45);i.write(90);k.write(135);
//Derecha desde arriba
b.write(5);d.write(45);f.write(90);
//Izquierda desde arriba
h.write(90);j.write(135);l.write(180);
}
if (PS3.getButtonClick(CIRCLE)){
//Incinandose hacia derech desde arriba
//Azules
a.write(45);c.write(90);e.write(135);g.write(45);i.write(90);k.write(135);
//Derecha desde arriba
b.write(5);d.write(5);f.write(5);
//Izquierda desde arriba
h.write(90);j.write(90);l.write(90);
}
if (PS3.getButtonClick(CROSS)){
//Inclinandose hacia atras
//Azules
a.write(45);c.write(90);e.write(135);g.write(45);i.write(90);k.write(135);
//Derecha desde arriba
b.write(90);d.write(45);f.write(5);
//Izquierda desde arriba
h.write(180);j.write(135);l.write(90);
}
if (PS3.getButtonClick(SQUARE)){
//Inclinado hacia la izquierda desde arriba
//Azules
a.write(45);c.write(90);e.write(135);g.write(45);i.write(90);k.write(135);
//Derecha desde arriba
b.write(90);d.write(90);f.write(90);
//Izquierda desde arriba
h.write(180);j.write(180);l.write(180);
}
if (PS3.getButtonClick(UP)) {
//if ( PS3.getAnalogHat(LeftHatY) < 117 && PS3.getAnalogHat(LeftHatY) > 10){
Serial.print(F("\r\nUp"));
Numero = 1 ;
//gait
if( Numero = 1){
d.write(5);h.write(180);l.write(180); //levantando 2,4,6
delay(150); //¿150?
c.write(80);g.write(100);k.write(100); //moviendo 2,4,6 hacia delante
a.write(100);e.write(100);i.write(80); //moviedo 1,3,5 para avanzar
delay(150); //250
d.write(angI);h.write(angD);l.write(angD); //bajando 2,4,6
delay(150);
b.write(5);f.write(5);j.write(180); //levantando 1,3,5
delay(150);
a.write(80);e.write(80);i.write(100); //moviendo 1,3,5 hcia delante
c.write(100);g.write(80);k.write(80); //moviendo 2,4,6 para avanzar
delay(150);
b.write(angI);f.write(angI);j.write(angD); //bajando 1,3,5
delay(150);
}
}
if (PS3.getButtonClick(RIGHT)) {
Serial.print(F("\r\nRight"));
Numero = 2;
if (Numero = 2){
//horario
d.write(5); h.write(1800); l.write(180); //levantando 2,4,6
delay(150); //¿150?
c.write(110); g.write(110); k.write(110); //moviendo 2,4,6 antihorario AUMENTANDO
delay(150);
d.write(angI);h.write(angD);l.write(angD); //bajando 2,4,6
delay(150);
b.write(5); f.write(5); j.write(180); //levantando 1,3,5
delay(150);
a.write(110); e.write(110); i.write(110); //moviendo 1,3,5 horario
delay(150);
b.write(angI);f.write(angI);j.write(angD); //bajando 1,3,5
delay(150);
a.write(90); c.write(90); e.write(90); g.write(90); i.write(90); k.write(90); // igualando cuerpo
delay(150);
}
}
if (PS3.getButtonClick(DOWN)) {
d.write(5);h.write(180);l.write(180); //levantando 2,4,6
delay(150); //¿150?
c.write(100);g.write(80);k.write(80); //moviendo 2,4,6 hacia atras
a.write(80);e.write(80);i.write(100); //moviedo 1,3,5 para retroceder
delay(150); //250
d.write(angI);h.write(angD);l.write(angD); //bajando 2,4,6
delay(150);
b.write(5);f.write(5);j.write(180); //levantando 1,3,5
delay(150);
a.write(100);e.write(100);i.write(80); //moviendo 1,3,5 hcia atras
c.write(80);g.write(100);k.write(100); //moviendo 2,4,6 para retroceder
delay(150);
b.write(angI);f.write(angI);j.write(angD); //bajando 1,3,5
delay(150);
}
if (PS3.getButtonClick(LEFT)) {
Serial.print(F("\r\nLeft"));
Numero = 3;
if(Numero = 3){
d.write(5); h.write(1800); l.write(180); //levantando 2,4,6
delay(150); //¿150?
c.write(70); g.write(70); k.write(70); //moviendo 2,4,6 antihorario AUMENTANDO
delay(150);
d.write(angI);h.write(angD);l.write(angD); //bajando 2,4,6
delay(150);
b.write(5); f.write(5); j.write(180); //levantando 1,3,5
delay(150);
a.write(70); e.write(70); i.write(70); //moviendo 1,3,5 horario
delay(150);
b.write(angI);f.write(angI);j.write(angD); //bajando 1,3,5
delay(150);
a.write(90); c.write(90); e.write(90); g.write(90); i.write(90); k.write(90); // igualando cuerpo
delay(150); }
//////////////////
}
if (PS3.getButtonClick(L1)) { // Subir
if ( angD > 90 && angI < 90 ){
angD = angD - 5;
angI = angI + 5;
// Azules
a.write(90); c.write(90); e.write(90); g.write(90); i.write(90); k.write(90);
// Derecha de frente // 180
h.write(angD); j.write(angD); l.write(angD);
// Izquierda de frente // 5
b.write(angI); d.write(angI); f.write(angI);
}}
if (PS3.getButtonClick(L3))
Serial.print(F("\r\nL3"));
if (PS3.getButtonClick(R1)){ // Bajar
if ( angD < 180 && angI > 5 ){
angD = angD + 5;
angI = angI - 5;
// Azules
a.write(90); c.write(90); e.write(90); g.write(90); i.write(90); k.write(90);
// Derecha de frente // 180
h.write(angD); j.write(angD); l.write(angD);
// Izquierda de frente // 5
b.write(angI); d.write(angI); f.write(angI);
}}
if (PS3.getButtonClick(R3))
Serial.print(F("\r\nR3"));
if (PS3.getButtonClick(SELECT)) {
Serial.print(F("\r\nSelect - "));
PS3.printStatusString();
}
if (PS3.getButtonClick(START)) {
Serial.print(F("\r\nStart"));
printAngle = !printAngle;
}
}
}