Bygga en stor kran spel (13 / 19 steg)
Steg 13: Y- och Z-axeln kod
Koden för att kontrollera att Y och Z axii är båda lastades på samma Arduino., så koden är allt i ett program.Y-axeln rör sig i 2 riktningar, Z-axeln går upp och ner, och jordluckraren öppnas och stängs.
Arduino kod:
#include < Servo.h >
#include < Wire.h >
Servo YA;
Servo YB;
Servo Z;
Servo klo;
IR grejer
#include < IRremote.h >
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results resultat.
Sträng åtgärd;
Sträng oldAction;
osignerad länge;
osignerade långa timeIR;
osignerade långa timeDiff;
int dir = 0;
int oldDir = 0;
void setup() {
Serial.BEGIN(9600);
irrecv.enableIRIn(); Starta IR-mottagaren
}
void loop() {
läst IR knappar och anger åtgärden / /
om (irrecv.decode (& resultat)) {
lång x = results.value;
Serial.println (results.value, HEX); för avkodning knappar
Serial.println(x);
timeIR = millis(); rekordtid på knappen push
Switch(x) {
fall 351005205:
Action = "uppåtpil";
dir = 5;
bryta;
fall 350988375:
Action = "nedåtpil";
dir = 6;
bryta;
fall 350963895:
Action = "vänsterpil";
dir = 1;
bryta;
fall 350976645:
Action = "höger pil";
dir = 2;
bryta;
fall 350952165:
Action = "ok/mute";
dir = 3;
bryta;
fall 350986335:
Action = "B2";
dir = 4;
bryta;
fall 4294967295:
bryta;
}
irrecv.Resume(); Ta emot nästa värde
}
timeDiff = millis() - timeIR;
om ((timeDiff > 200) & & dir! = 0) {//if ingen knapp
dir = 0;
Action = "ingen";
}
om (action! = oldAction) {
om (åtgärder == "vänsterpil") {
YA.attach(9);
YA.write(0);
YB.attach(10);
YB.write(180);
Serial.println ("Y gå vänster");
Delay(100);
}
om (åtgärder == "höger pil") {
YA.attach(9);
YA.write(180);
YB.attach(10);
YB.write(0);
Serial.println ("Y gå rätt");
Delay(100);
}
om (åtgärder == "B2") {
Z.attach(2);
Z.write(180); ned
Claw.attach(6);
Claw.write(100); Öppna?
Serial.println ("klo ner och öppna");
Delay(100);
}
om (åtgärder == "ok/mute") {
Z.attach(2);
Z.write(0); upp
Claw.attach(6);
Claw.write(20); nära?
Serial.println ("klo upp och Stäng");
Delay(100);
}
om ((åtgärder == "none") & & (oldDir == 1 || oldDir == 2 || oldDir == 3 || oldDir == 4)) {
YA.detach();
YB.detach();
Z.detach();
Claw.detach();
Serial.println ("alla stopp");
Delay(100);
}
Serial.Print(Dir);
Serial.Print("");
Serial.println(action);
}
oldDir = dir;
oldAction = åtgärd;
Delay(100);
} #include < Servo.h >
#include < Wire.h >
Servo YA;
Servo YB;
Servo Z;
Servo klo;
IR grejer
#include < IRremote.h >
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results resultat.
Sträng åtgärd;
Sträng oldAction;
osignerad länge;
osignerade långa timeIR;
osignerade långa timeDiff;
int dir = 0;
int oldDir = 0;
void setup() {
Serial.BEGIN(9600);
irrecv.enableIRIn(); Starta IR-mottagaren
}
void loop() {
läst IR knappar och anger åtgärden / /
om (irrecv.decode (& resultat)) {
lång x = results.value;
Serial.println (results.value, HEX); för avkodning knappar
Serial.println(x);
timeIR = millis(); rekordtid på knappen push
Switch(x) {
fall 351005205:
Action = "uppåtpil";
dir = 5;
bryta;
fall 350988375:
Action = "nedåtpil";
dir = 6;
bryta;
fall 350963895:
Action = "vänsterpil";
dir = 1;
bryta;
fall 350976645:
Action = "höger pil";
dir = 2;
bryta;
fall 350952165:
Action = "ok/mute";
dir = 3;
bryta;
fall 350986335:
Action = "B2";
dir = 4;
bryta;
fall 4294967295:
bryta;
}
irrecv.Resume(); Ta emot nästa värde
}
timeDiff = millis() - timeIR;
om ((timeDiff > 200) & & dir! = 0) {//if ingen knapp
dir = 0;
Action = "ingen";
}
om (action! = oldAction) {
om (åtgärder == "vänsterpil") {
YA.attach(9);
YA.write(0);
YB.attach(10);
YB.write(180);
Serial.println ("Y gå vänster");
Delay(100);
}
om (åtgärder == "höger pil") {
YA.attach(9);
YA.write(180);
YB.attach(10);
YB.write(0);
Serial.println ("Y gå rätt");
Delay(100);
}
om (åtgärder == "B2") {
Z.attach(2);
Z.write(180); ned
Claw.attach(6);
Claw.write(100); Öppna?
Serial.println ("klo ner och öppna");
Delay(100);
}
om (åtgärder == "ok/mute") {
Z.attach(2);
Z.write(0); upp
Claw.attach(6);
Claw.write(20); nära?
Serial.println ("klo upp och Stäng");
Delay(100);
}
om ((åtgärder == "none") & & (oldDir == 1 || oldDir == 2 || oldDir == 3 || oldDir == 4)) {
YA.detach();
YB.detach();
Z.detach();
Claw.detach();
Serial.println ("alla stopp");
Delay(100);
}
Serial.Print(Dir);
Serial.Print("");
Serial.println(action);
}
oldDir = dir;
oldAction = åtgärd;
Delay(100);
}