Remote Control svävare (8 / 9 steg)
Steg 8: Program och debug
Kod:
#include
för v1.6
#include
PS2X ps2x; skapa PS2 kontrollerklass
just nu är biblioteket stöder inte hot pluggable domänkontrollanter, vilket innebär
Du måste alltid antingen starta om din Arduino efter du conect registeransvarige,
eller ring config_gamepad(pins) igen efter att du anslutit registeransvarige.
int fel = 0;
byte typ = 0;
byte vibrera = 0;
Servo lyftare, propeller, slå;
int pro = 30, lif = 104, balans = 77, en = 15.
int state = 0; framdriva staten
int std_lif = 90, std_lif_dif = 5, std_pro = 50;
void setup() {
Serial.BEGIN(57600);
pinMode(6,OUTPUT);
ÄNDRINGAR för v1.6 här!!! BETALA UPPMÄRKSAMHET ***
Lifter.attach(9); mindre ESC vit tråd
propeller.attach(6); större ESC orange tråd
Turn.attach(10); styrning motor vit tråd
Turn.write(Balance); setup balans position
fel = ps2x.config_gamepad (4,3,5,2, sant, sant); setup stift och inställningar: GamePad (klocka, kommando, uppmärksamhet, data, tryck?, Rumble?) när på fel
IF(Error == 0) {
Serial.println ("hittade Controller, konfigurerad framgångsrika");
Serial.println (prova alla knappar, X vibrerar registeransvarige, snabbare när du trycker på hårdare;");
Serial.println ("anläggning L1 eller R1 kommer skriva ut analog pinne värden.");
Serial.println ("gå till www.billporter.info för uppdateringar och att rapportera fel.");
}
annat if(error == 1)
Serial.println ("ingen styrenhet hittade, kontrollera ledningar, se readme.txt aktivera debug. «««Besök www.billporter.info för felsökning tips");
annat if(error == 2)
Serial.println ("Controller hittade men inte emot kommandon. se readme.txt aktivera debug. «««Besök www.billporter.info för felsökning tips");
annat if(error == 3)
Serial.println ("Controller vägrar att ställa in trycket läge, kanske inte stöder det.");
Serial.Print (ps2x. Analog(1), HEX);
typ = ps2x.readType();
Switch(Type) {
fall 0:
Serial.println ("Okänd Controller typ");
bryta;
fall 1:
Serial.println ("DualShock handkontrollen hittade");
bryta;
fall 2:
Serial.println ("GuitarHero Controller hittade");
bryta;
}
}
void loop() {
/ * Du måste Läs Gamepad för att få nya värden
Läs GamePad och ange vibrationsvärden
ps2x.read_gamepad (liten motor på/av, större motor styrka från 0-255)
Om du inte aktiverar mullret, använda ps2x.read_gamepad(); med några värden
du ska ringa detta minst en gång per sekund
*/
IF(Error == 1) //skip loop om ingen domänkontrollant hittas
hemkomst.
arbetar:
Lifter.write ((255-ps2x. Analog(PSS_RY))/255*150+30);
om (pro < = 60)
{
propeller.write(Pro);
}
IF(State)
Lifter.write(LIF);
styra lyft:
IF(ps2x. Button(PSB_L1))
{
Lif = std_lif-std_lif_dif;
State = 1;
}
IF(ps2x. Button(PSB_L2))
{
Lif = 30.
State = 0;
}
prpelling:
IF(ps2x. Button(PSB_R1))
{
Pro = std_pro;
Lif = std_lif;
IF(ps2x. Analog(PSS_LX)!=128)
Lif = std_lif-abs(ps2x. Analog (PSS_LX) nummer -128) / 42;
} annat {
IF(ps2x. Button(PSB_R2))
{
Pro = 60.
} annat {
Lif = std_lif-std_lif_dif;
Pro = 30.
}
}
för att justera balansen position av manöverorganet motorn
IF(ps2x. Button(PSB_PINK))
{
Serial.println(turn.Read());
}
IF(ps2x. Analog(PSS_RX)==128)
{
Turn.write(Balance);
}
svarvning:
IF(ps2x. Button(PSB_PAD_LEFT))
{
Turn.write(45);
} annat {
IF(ps2x. Button(PSB_PAD_RIGHT))
{
Turn.write(105);
} annat {
Turn.write (karta (ps2x. Analog(PSS_LX),0,255,Balance+a,Balance-a));
}
}
ändra lyft makten under bromsning standardläge
IF(ps2x. Button(PSB_PAD_UP))
{
std_lif = std_lif + 1.
}
IF(ps2x. Button(PSB_PAD_DOWN))
{
std_lif = std_lif-1;
}
ändra lyft skillnaden mellan bromsning och driver:
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 (falskt, vibrerar); Läs controller och ställa stora motorn att snurra på "vibrera" hastighet
Delay(50);
}
Använd den seriella bildskärmen och tryck rosa knappen på domänkontrollanten se positionen för styrning motorn. Ändra balansen till rätt position.
Notis: Kom ihåg att testa svävare i ett öppet utrymme. När du testar svävare, Använd inte full effekt först. Det kan gå över styr och skada människor. Kontrollera elektriska komponentens temperatur om de kortslutning.