Stap 8: Programma en foutopsporing
Code:
#include
voor v1.6
#include
PS2X ps2x; PS2 Controller klasse maken
op dit ogenblik, hot-pluggable controllers, wat betekent dat niet wordt ondersteund door de mediawisselaar
u moet altijd beide herstart je Arduino na u conect de controller,
of bel config_gamepad(pins) opnieuw na het aansluiten van de controller.
int fout = 0;
byte type = 0;
byte trillen = 0;
Servo lifter, propeller draaien;
int pro = 30, lif = 104, evenwicht = 77, een = 15;
int status = 0; voortdrijvende staat
int std_lif = 90, std_lif_dif = 5, std_pro = 50;
VOID Setup {}
Serial.begin(57600);
pinMode(6,OUTPUT);
WIJZIGINGEN voor v1.6 hier!!! BETALEN AANDACHT ***
lifter.attach(9); kleinere ESC de witte draad
propeller.attach(6); grotere ESC de oranje draad
Turn.attach(10); de witte draad van de sturende motor
Turn.write(Balance); Setup evenwicht positie
fout = ps2x.config_gamepad (4,3,5,2, true, true); Setup pinnen en instellingen: GamePad (klok, opdracht, aandacht, gegevens, druk?, Rumble?) controleren op fouten
if(Error == 0) {}
Serial.println ("gevonden Controller, geconfigureerd succesvol");
Serial.println ("uitproberen van alle knoppen, X gaat sneller als u harder; druk op de controller, trillen");
Serial.println ("bedrijf L1 of R1 wil uitprinten van de analoge stick waarden.");
Serial.println ("Go www.billporter.info voor updates en rapporteer fouten.");
}
anders if(error == 1)
Serial.println ("geen controller gevonden, Controleer bedrading, zie het bestand Leesmij.txt foutopsporing inschakelen. Bezoek www.billporter.info voor troubleshooting tips");
anders if(error == 2)
Serial.println ("Controller gevonden maar opdrachten niet te accepteren. Zie het bestand Leesmij.txt foutopsporing inschakelen. Bezoek www.billporter.info voor troubleshooting tips");
anders if(error == 3)
Serial.println ("Controller weigeren om de modus van de druk, kan geen ondersteuning voor het.");
Serial.Print (ps2x. Analog(1), HEX);
type = ps2x.readType();
switch(type) {}
Case 0:
Serial.println ("onbekend type van domeincontroller");
breken;
Case 1:
Serial.println ("DualShock-Controller gevonden");
breken;
Case 2:
Serial.println ("GuitarHero-Controller gevonden");
breken;
}
}
void loop {}
/ * Moet je lezen Gamepad om nieuwe waarden
GamePad lezen en trillingen waarden
ps2x.read_gamepad (kleine motor aan/uit, grotere motor kracht van 0-255)
Als u de rumble niet inschakelt, gebruikt u ps2x.read_gamepad(); met geen waarden
je moet dit minstens één keer een tweede bellen
*/
if(Error == 1) //skip-lus als geen domeincontroller wordt gevonden
terugkeer;
werken:
lifter.write ((255-ps2x. Analog(PSS_RY))/255*150+30);
Als (pro < = 60)
{
propeller.write(Pro);
}
if(State)
lifter.write(LIF);
controle op te heffen:
if(ps2x. Button(PSB_L1))
{
LIF = std_lif-std_lif_dif;
staat = 1;
}
if(ps2x. Button(PSB_L2))
{
LIF = 30;
staat = 0;
}
prpelling:
if(ps2x. Button(PSB_R1))
{
Pro = std_pro;
LIF = std_lif;
if(ps2x. Analog(PSS_LX)!=128)
LIF = std_lif-abs(ps2x. Analoog (PSS_LX)-128) / 42;
} else {}
if(ps2x. Button(PSB_R2))
{
Pro = 60;
} else {}
LIF = std_lif-std_lif_dif;
Pro = 30;
}
}
voor het aanpassen van de positie van de balans van de sturende motor
if(ps2x. Button(PSB_PINK))
{
Serial.println(Turn.Read());
}
if(ps2x. Analog(PSS_RX)==128)
{
Turn.write(Balance);
}
draaien:
if(ps2x. Button(PSB_PAD_LEFT))
{
Turn.write(45);
} else {}
if(ps2x. Button(PSB_PAD_RIGHT))
{
Turn.write(105);
} else {}
Turn.write (kaart (ps2x. Analog(PSS_LX),0,255,Balance+a,Balance-a));
}
}
wijzigen van de opheffing van het vermogen onder Standaardmodus remmen
if(ps2x. Button(PSB_PAD_UP))
{
std_lif = std_lif + 1;
}
if(ps2x. Button(PSB_PAD_DOWN))
{
std_lif = std_lif-1;
}
opheffing van het verschil tussen remmen en voortbewegen wijzigen
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, trillen); lezen van de controller en grote motor te draaien met "trillen" snelheid
delay(50);
}
Gebruik de seriële monitor en druk op de roze knop op de controller te zien hier de positie van de sturende motor. De positie van de balans tot de juiste positie te wijzigen.
Let op: Vergeet niet om het testen van de hovercraft in een open ruimte. Wanneer u de hovercraft test, gebruik geen volle kracht op het eerste. Het kan gaan uit de hand en mensen kwetsen. Controleer de temperatuur van de elektrische component ingeval zij kortsluiting.