Paso 8: Programa y depuración
Código:
#include
para v1.6
#include
PS2X ps2x; crear clase de controlador de PS2
Ahora, la biblioteca no es compatible con controladores enchufables caliente, lo que significa
usted debe siempre cualquier reinicio su Arduino después de conectar el regulador,
o llame al config_gamepad(pins) otra vez después de conectar el controlador.
error de int = 0;
tipo byte = 0;
vibrar de byte = 0;
Levantador del servo, hélice, girar;
int pro = 30, lif = 104, balance = 77, a = 15;
int estado = 0; impulsando el estado
int std_lif = 90, std_lif_dif = 5, std_pro = 50;
void setup() {}
Serial.Begin(57600);
pinMode(6,OUTPUT);
CAMBIOS para la v1.6 aquí!!!!!! PAGAR ATENCIÓN ***
Lifter.Attach(9); cable blanco de menor ESC
Propeller.Attach(6); cable naranja más grande de la ESC
Turn.Attach(10); cable blanco del motor dirección
Turn.Write(balance); posición de equilibrio de la disposición
error = ps2x.config_gamepad (4,3,5,2, true, true); configuración de pines y configuración: GamePad (reloj, orden, atención, datos, presiones?, Rumble?) Busque error
if(error == 0) {}
Serial.println ("encontrado controlador, configurar exitosa");
Serial.println ("probar todas las teclas, X vibrará el controlador, más rápido usted presione más fuerte;");
Serial.println ("holding L1 o R1 imprime los valores del stick analógico.");
Serial.println ("vaya a www.billporter.info para actualizaciones y para informar de errores.");
}
otro if(error == 1)
Serial.println ("ningún controlador encontrado, comprobar cableado, ver readme.txt para habilitar la depuración. visite www.billporter.info para solucionar");
otro if(error == 2)
Serial.println ("controlador encontrado pero no aceptar comandos. Consulte el archivo readme.txt para habilitar la depuración. Visite www.billporter.info para solucionar");
otro if(error == 3)
Serial.println ("controlador de negarse a entrar en modo de presión, podrían no admitirlo.");
Serial.Print (ps2x. Analog(1), hexagonal);
tipo = ps2x.readType();
{Switch(Type)}
caso 0:
Serial.println ("tipo de controlador desconocido");
rotura;
caso 1:
Serial.println ("controlador DualShock encontrado");
rotura;
caso 2:
Serial.println ("GuitarHero controlador encontrado");
rotura;
}
}
void loop() {}
/ * Debes leer Gamepad para obtener nuevos valores
GamePad de leer y establecer valores de vibración
ps2x.read_gamepad (pequeño motor encendido/apagado, mayor fuerza motor de 0-255)
Si no activas el rumble, use ps2x.read_gamepad(); sin valores
Esto debe llamar por lo menos una vez por segundo
*/
if(error == 1) lazo de //skip si no encuentra ningún controlador
retorno;
de trabajo:
Lifter.Write ((255-ps2x. Analog(PSS_RY))/255*150+30);
Si (pro < = 60)
{
Propeller.Write(Pro);
}
if(State)
Lifter.Write(LIF);
control de elevación:
if(ps2x. Button(PSB_L1))
{
LIF = std_lif-std_lif_dif;
estado = 1;
}
if(ps2x. Button(PSB_L2))
{
LIF = 30;
estado = 0;
}
prpelling:
if(ps2x. Button(PSB_R1))
{
Pro = std_pro;
LIF = std_lif;
if(ps2x. Analog(PSS_LX)!=128)
LIF = std_lif-abs(ps2x. Analógico (PSS_LX) -128) / 42;
} else {}
if(ps2x. Button(PSB_R2))
{
Pro = 60;
} else {}
LIF = std_lif-std_lif_dif;
Pro = 30;
}
}
para ajustar la posición de equilibrio del volante motor
if(ps2x. Button(PSB_PINK))
{
Serial.println(turn.Read());
}
if(ps2x. Analog(PSS_RX)==128)
{
Turn.Write(balance);
}
de torneado:
if(ps2x. Button(PSB_PAD_LEFT))
{
Turn.Write(45);
} else {}
if(ps2x. Button(PSB_PAD_RIGHT))
{
Turn.Write(105);
} else {}
Turn.Write (mapa (ps2x. Analog(PSS_LX),0,255,balance+a,balance-a));
}
}
cambiar la potencia de elevación en el modo frenado estándar
if(ps2x. Button(PSB_PAD_UP))
{
std_lif = std_lif + 1;
}
if(ps2x. Button(PSB_PAD_DOWN))
{
std_lif = std_lif-1;
}
cambiar la diferencia de elevación entre frenada y propulsión:
if(ps2x. Button(PSB_GREEN))
{
std_lif_dif = std_lif_dif + 1;
}
if(ps2x. Button(PSB_BLUE))
{
std_lif_dif = std_lif_dif-1;
}
ps2x.read_gamepad (false, vibración); controlador de leer y de fijar gran motor para hacer girar a velocidad "vibrar"
Delay(50);
}
Utilice al monitor de serie y pulse del botón de rosa para ver la posición del volante motor. Cambiar la posición de equilibrio hasta la posición adecuada.
Aviso: No olvide probar el aerodeslizador en un espacio abierto. Cuando está probando el aerodeslizador, no utilice toda su potencia al principio. Puede salir de control y herir a personas. Comprobar la temperatura del componente eléctrico en caso de del cortocircuito.