DIY trådlös svävare (Team OZ) (10 / 11 steg)
Steg 10: Ladda upp programmet Arduino
Använda en USB-kabel för att ansluta Arduino till en dator, och använder en Arduino programvara ladda upp koderna. Du kan också ladda ner koden från Github: https://github.com/susanxie123/hovercraft.git
< p > #include < PS2X_lib.h >
< ps2x_lib.h > //for v1.6 < br > #include < Servo.h >< servo.h >
PS2X ps2x; skapa PS2 kontrollerklass
Servo ser;
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;
int olja = 0;
flyta ls = 0;
flyta rs = 0;
void setup() {
ser.attach(3);
Serial.BEGIN(57600);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(4,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
analogWrite(5,0);
analogWrite(9,0);
ÄNDRINGAR för v1.6 här!!! BETALA UPPMÄRKSAMHET ***
fel = ps2x.config_gamepad (13,11,10,12, 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;
}
} < /servo.h >< /ps2x_lib.h >< /p >< p > void loop() {
digitalWrite(4,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
/ * 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.
IF(Type == 2) {//Guitar Hero Controller
ps2x.read_gamepad(); Läs controller
IF(ps2x. ButtonPressed(GREEN_FRET))
Serial.println ("gröna bandet tryckt");
IF(ps2x. ButtonPressed(RED_FRET))
Serial.println ("röda bandet tryckt");
IF(ps2x. ButtonPressed(YELLOW_FRET))
Serial.println ("gula bandet tryckt");
IF(ps2x. ButtonPressed(BLUE_FRET))
Serial.println ("blå bandet tryckt");
IF(ps2x. ButtonPressed(ORANGE_FRET))
Serial.println ("Orange bandet tryckt");
IF(ps2x. ButtonPressed(STAR_POWER))
Serial.println ("stjärna makt kommandot");
IF(ps2x. Button(UP_STRUM)) //will vara sant så länge knappen trycks
Serial.println ("uppåt Strum");
IF(ps2x. Button(DOWN_STRUM))
Serial.println ("ner Strum");
IF(ps2x. Button(PSB_START)) //will vara sant så länge knappen trycks
Serial.println ("Start hålls");
IF(ps2x. Button(PSB_SELECT))
Serial.println ("Välj hålls"); < /p >< p > if(ps2x. Button(ORANGE_FRET)) / / Skriv ut stick värdet sant om
{
Serial.Print ("Wammys Bar ståndpunkt:");
Serial.println (ps2x. Analog(WHAMMY_BAR), DEC);
}
} < /p >< p > annat {//DualShock Controller
flyta leftspeed = 0;
flyta rightspeed = 0;
IF(ps2x. Button(PSB_L2))
{
digitalWrite(4,LOW);
digitalWrite(6,HIGH);
}
IF(ps2x. Button(PSB_R2))
{
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
IF(ps2x. Button(PSB_L1))
{
leftspeed = 255;
}
annat
{
leftspeed = 0;
}
IF(ps2x. Button(PSB_R1))
{
rightspeed = 255;
}
annat
{
rightspeed = 0;
}
IF(ps2x. Analog(PSS_LY) > 130)
{
leftspeed = abs ((ps2x. Analog(PSS_LY)-128.0)/128.0*255.0);
digitalWrite(4,LOW);
digitalWrite(6,HIGH);
}
IF(ps2x. Analog(PSS_LY) < 110)
{
leftspeed = abs ((ps2x. Analog(PSS_LY)-128.0)/128.0*255.0);
digitalWrite(4,HIGH);
digitalWrite(6,LOW);
}
IF(ps2x. Analog(PSS_RY) > 130)
{
rightspeed = abs ((ps2x. Analog(PSS_RY)-128.0)/128.0*255.0);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
IF(ps2x. Analog(PSS_RY) < 110)
{
rightspeed = abs ((ps2x. Analog(PSS_RY)-128.0)/128.0*255.0);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}
analogWrite(5,(int)leftspeed);
LS = leftspeed;
IF(rightspeed>250.0) {rightspeed = 255.0;}
analogWrite(9,(int)rightspeed);
rs = rightspeed;
ps2x.read_gamepad (falskt, vibrerar); Läs controller och ställa stora motorn att snurra på "vibrera" hastighet
IF(ps2x. Button(PSB_START)) //will vara sant så länge knappen trycks
Serial.println ("Start hålls");
IF(ps2x. Button(PSB_SELECT))
Serial.println ("Välj hålls");
IF(ps2x. Button(PSB_PAD_UP)) {//will vara sant så länge knappen trycks
Serial.Print ("upp höll detta hårt:");
leftspeed = 255; rightspeed = 255;
Serial.println (ps2x. Analog(PSAB_PAD_UP), DEC);
om (abs (leftspeed - ls) > 10)
{
analogWrite(5,leftspeed);
LS = leftspeed;
}
IF(ABS(rightspeed-RS) > 10)
{
rs = rightspeed;
}
}
IF(ps2x. Button(PSB_PAD_RIGHT)) {
Serial.Print ("högern höll detta hårt:");
Serial.println (ps2x. Analog(PSAB_PAD_RIGHT), DEC);
}
IF(ps2x. Button(PSB_PAD_LEFT)) {
Serial.Print ("vänster höll detta hårt:");
Serial.println (ps2x. Analog(PSAB_PAD_LEFT), DEC);
}
IF(ps2x. Button(PSB_PAD_DOWN)) {
Serial.Print ("DOWN höll detta hårt:");
Serial.println (ps2x. Analog(PSAB_PAD_DOWN), DEC);
}
vibrera = ps2x. Analog(PSAB_BLUE); Detta anger den stora motorn vibrerar hastighet baserat på
om (ps2x. NewButtonState()) //will vara sant om någon knapp ändrar tillstånd (på off eller off till på)
{
IF(ps2x. Button(PSB_L3))
Serial.println ("L3 tryckte");
IF(ps2x. Button(PSB_R3))
Serial.println ("R3 tryckte");
IF(ps2x. Button(PSB_L2))
Serial.println ("L2 tryckte");
IF(ps2x. Button(PSB_R2))
Serial.println ("R2 tryckte");
IF(ps2x. Button(PSB_GREEN))
Serial.println ("triangel tryckte");
}
IF(ps2x. ButtonPressed(PSB_RED)) {//will vara sant om rumpa på trycktes bara
Serial.println ("cirkel bara tryckte");
olja = olja + 10.
}
IF(ps2x. ButtonPressed(PSB_PINK)) {//will vara sant om knappen trycktes bara
Serial.println ("square bara tryckte");
olja = olja-10;
}
IF(ps2x. ButtonPressed(PSB_GREEN)) {//will vara sant om knappen trycktes bara
Serial.println ("cirkel bara tryckte");
olja = olja + 1.
}
IF(ps2x. ButtonPressed(PSB_BLUE)) {//will vara sant om knappen trycktes bara
Serial.println ("square bara tryckte");
olja = olja-1;
} < /p >< p > if(ps2x. Button(PSB_L3) || ps2x. Button(PSB_R3))
{
ser.write(Oil-3);
}
annat
{
ser.write(Oil);
}
IF(ps2x. ButtonReleased(PSB_PINK))
Serial.println ("Square precis släppt");
IF(ps2x. NewButtonState(PSB_BLUE))
Serial.println ("X bara ändrat");
IF(ps2x. Button(PSB_L1) || ps2x. Button(PSB_R1)) / / skriva ut stick värden om endera är sant {
Serial.Print ("sticka värden:");
Serial.Print (ps2x. Analog(PSS_LY), DEC); Vänster styrspak, Y-axeln. Andra alternativ: LX, RY, RX
Serial.Print(",");
Serial.Print (ps2x. Analog(PSS_LX), DEC);
Serial.Print(",");
Serial.Print (ps2x. Analog(PSS_RY), DEC);
Serial.Print(",");
Serial.println (ps2x. Analog(PSS_RX), DEC);
}
}
Delay(50);
} < /p >