Étape 8: Programme et debug
Code :
#include
pour v1.6
#include
PS2X ps2x ; créer la classe de contrôleur PS2
à l’heure actuelle, la bibliothèque ne supporte pas les contrôleurs de connectable à chaud, ce qui signifie
vous devez toujours soit redémarrer votre Arduino après vous conect le contrôleur,
ou composez le config_gamepad(pins) à nouveau après la connexion du contrôleur.
erreur d’int = 0 ;
type d’octets = 0 ;
vibrer octets = 0 ;
Levier du servo, hélice, tourner ;
int pro = 30, FRV = 104, solde = 77, un = 15 ;
État int = 0 ; État de propulsion
int std_lif = 90, std_lif_dif = 5, std_pro = 50 ;
void setup() {}
Serial.Begin(57600) ;
pinMode(6,OUTPUT) ;
CHANGEMENTS pour v1.6 ici!!! PAYER ATTENTION ***
Lifter.Attach(9) ; fil blanc du ces petits
Propeller.Attach(6) ; fil orange du plus grand ces
Turn.Attach(10) ; fil blanc du pilotage moteur
Turn.Write(balance) ; position d’équilibre d’installation
erreur = ps2x.config_gamepad (4,3,5,2, true, true) ; broches et les paramètres de configuration : manette de jeu (horloge, commande, attention, données, pressions?, Rumble?) recherchez erreur
if(error == 0) {}
Serial.println ("trouvé Controller, configuré avec succès") ;
Serial.println ("essayer toutes les touches, X se met à vibrer le contrôleur, plus vite en appuyant plus dur;") ;
Serial.println (« holding L1 ou R1 volonté imprimer les valeurs du stick analogique.") ;
Serial.println ("aller à www.billporter.info pour les mises à jour et à rapporter les bugs") ;
}
d’autre if(error == 1)
Serial.println ("aucun contrôleur trouvé, vérifiez le câblage, voir Lisezmoi.txt pour activer le débogage. visitez www.billporter.info pour des conseils de dépannage") ;
d’autre if(error == 2)
Serial.println (contrôleur » trouvé, mais ne pas accepter des commandes. Voir Lisezmoi.txt pour activer le débogage. Visitez www.billporter.info pour des conseils de dépannage") ;
d’autre if(error == 3)
Serial.println (« contrôleur refusant d’entrer en mode de pression, peut le supporte pas.") ;
Serial.Print (ps2x. Analog(1), HEX) ;
type = ps2x.readType() ;
{Switch(type)}
case 0 :
Serial.println ("type de contrôleur inconnu") ;
rupture ;
cas 1 :
Serial.println ("manette DUALSHOCK trouvé") ;
rupture ;
cas 2 :
Serial.println ("GuitarHero contrôleur trouvé") ;
rupture ;
}
}
void loop() {}
/ * Lecture Gamepad pour obtenir de nouvelles valeurs, vous devez
Lu GamePad et définir des valeurs de vibrations
ps2x.read_gamepad (petit moteur marche/arrêt, la plus grande force de moteur de 0 à 255)
Si vous n’activez pas le grondement, utiliser ps2x.read_gamepad() ; sans valeurs
vous devez appeler cela au moins une fois par seconde
*/
if(Error == 1) //skip boucle si aucun contrôleur de trouvé
retour ;
de travail :
Lifter.Write ((255-ps2x. Analog(PSS_RY))/255*150+30) ;
Si (pro < = 60)
{
Propeller.Write(Pro) ;
}
if(State)
Lifter.Write(LIF) ;
contrôle levage :
if(ps2x. Button(PSB_L1))
{
FRV = std_lif-std_lif_dif ;
État = 1 ;
}
if(ps2x. Button(PSB_L2))
{
FRV = 30 ;
État = 0 ;
}
prpelling :
if(ps2x. Button(PSB_R1))
{
Pro = std_pro ;
FRV = std_lif ;
if(ps2x. Analog(PSS_LX)!=128)
FRV = std_lif-abs(ps2x. Analogique (PSS_LX) -128) / 42 ;
} else {}
if(ps2x. Button(PSB_R2))
{
Pro = 60 ;
} else {}
FRV = std_lif-std_lif_dif ;
Pro = 30 ;
}
}
pour ajuster la position d’équilibre du moteur direction
if(ps2x. Button(PSB_PINK))
{
Serial.println(Turn.Read()) ;
}
if(ps2x. Analog(PSS_RX)==128)
{
Turn.Write(balance) ;
}
tournage :
if(ps2x. Button(PSB_PAD_LEFT))
{
Turn.Write(45) ;
} else {}
if(ps2x. Button(PSB_PAD_RIGHT))
{
Turn.Write(105) ;
} else {}
Turn.Write (carte (ps2x. Analog(PSS_LX),0,255,balance+a,balance-a)) ;
}
}
modifier la puissance de levage sous mode de freinage standard
if(ps2x. Button(PSB_PAD_UP))
{
std_lif = std_lif + 1 ;
}
if(ps2x. Button(PSB_PAD_DOWN))
{
std_lif = std_lif-1 ;
}
changer différence de levage entre freinage et propulsion :
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, vibreur) ; lecture de contrôleur et définissez le grand moteur de tourner à la vitesse « vibrer »
Delay(50) ;
}
Utilisez le moniteur de la série et appuyez sur le bouton rose de la manette pour voir la position du moteur direction. Changer la position d’équilibre jusqu'à la bonne position.
Avis : N’oubliez pas de tester l’aéroglisseur dans un espace ouvert. Lorsque vous testez l’aéroglisseur, ne pas utiliser la pleine puissance dans un premier temps. Il peut aller hors de contrôle et de blesser les gens. Vérifier la température de l’appareil électrique dans le cas où ils le court-circuit.