Stap 12: De code van het besturingselement van de x-as
De X-as wordt verplaatst in twee richtingen.De code van de x-as:
#include < Servo.h >
#include < Wire.h >
Servo XA;
Servo XB;
int dir = 0;
int oldDir = 0;
IR spullen
#include < IRremote.h >
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results resultaten;
Tekenreeks actie;
String oldAction;
//
niet-ondertekende lange tijd;
unsigned long timeIR;
unsigned long timeDiff;
VOID Setup {}
Wire.begin();
Serial.begin(9600);
irrecv.enableIRIn(); Start van de IR ontvanger
}
void loop {}
Lees IR knoppen en de actie instellen / /
Als (irrecv.decode (& resultaten)) {}
lange x = results.value;
Serial.println (results.value, HEX); voor het decoderen van de knoppen
Serial.println(x);
timeIR = millis(); de tijd van het wereldverslag van knop push
switch(x) {}
Case 351005205:
actie = "pijl";
dir = 5;
breken;
Case 350988375:
actie = "pijl";
dir = 6;
breken;
Case 350963895:
actie = "pijl links";
dir = 1;
breken;
Case 350976645:
actie = "pijl-rechts";
dir = 2;
breken;
Case 350952165:
actie = "ok/mute";
dir = 3;
breken;
Case 350986335:
actie = "B2";
dir = 4;
breken;
Case 4294967295:
breken;
}
irrecv.resume(); De volgende waarde ontvangen
}
timeDiff = millis() - timeIR;
Als ((timeDiff > 200) & & dir! = 0) {//if geen knop
DIR = 0;
actie = "geen";
}
Als (actie! = oldAction) {}
Als (actie == "pijl") {}
XA.attach(9);
XA.write(0);
XB.attach(10);
XB.write(180);
Serial.println ("X go away");
delay(100);
}
Als (actie == "pijl") {}
XA.attach(9);
XA.write(180);
XB.attach(10);
XB.write(0);
Serial.println ("X come back");
delay(100);
}
Als ((actie == "none") & & (oldDir == 5 || oldDir == 6)) {}
XA.detach();
XB.detach();
Serial.println ("stop x-as");
}
opdrachten verzenden
Wire.beginTransmission(9);
Wire.send(dir);
Wire.endTransmission();
Serial.println ("verzenden dir");
Serial.Print(dir);
Serial.Print("");
Serial.println(Action);
}
oldDir = dir;
oldAction = actie;
delay(100);
}