Stap 12: Elektronica - rechterkant schema's en code
Hier is het schema en de code voor de rechterkant.
Het is vrij gelijkaardig aan de linker kant, minus de XBee radio. De servo's voor de onderarm raket alle ontvangen de hetzelfde signaal-een van de servo's dat wordt geopend de kant cover zal moeten omgekeerde rotatie. Twee van de servo's die het naar voren en naar achteren schouder raket deelvenster covers moeten ook hun rotatie omgekeerd open zal als zij hetzelfde signaal als de servo's in de tegenovergestelde schouder ontvangen.
Hier is de code-
#include "Servo.h" / / de servo-bibliotheek
Servo forearmServo; servo's verplaatsen onderarm raket
Servo rearcoverServo; Servo te verplaatsen van de achterste schouder raket pod cover
Servo forwardcoverServo; Servo te verplaatsen naar voren schouder raket pod cover
Servo podServo; Servo te bewegen schouder raket pod
int RFIDResetPin = 13;
int servoPin1 = 7; controle pin voor onderarm raket servo 's
int servoPin2 = 8; controle pin voor achterste schouder raket pod cover servo
int servoPin3 = 9; controle pin voor voorwaartse raket pod cover servo
int servoPin4 = 10; controle pin schouder raket pod-servo
Registreer hier uw RFID-tags
Label1 char [13] = "440085E77452";
tag2 char [13] = "440085FC330E";
tag3 char [13] = "440085F97840";
tag4 char [13] = "4400863914EF";
VOID Setup {}
Serial.begin(9600);
forearmServo.attach(servoPin1); de servo op pin 7 hecht aan de servo-object
rearcoverServo.attach(servoPin2); de servo op pin 8 hecht aan de servo-object
forwardcoverServo.attach(servoPin3); de servo op pin 9 hecht aan de servo-object
podServo.attach(servoPin4); de servo op pin 10 hecht aan de servo-object
forearmServo.write(45); draaien van de onderarm servo's tot 45 graden
rearcoverServo.write(45); de achterklep servo op 45 graden roteren
forwardcoverServo.write(45); de voorwaartse cover servo op 45 graden roteren
podServo.write(45); het linker klepje servo op 45 graden roteren
pinMode (RFIDResetPin, uitvoer);
digitalWrite (RFIDResetPin, hoge);
}
void loop {}
char tagString [13];
int index = 0;
lezing van Boole = vals;
while(Serial.available()) {}
int readByte = Serial.read(); Lees volgende beschikbaar byte
if(readByte == 2) lezen = true; die beginnen van tag
if(readByte == 3) lezen = false; einde van tag
Als (lezen & & readByte! = 2 & & readByte! = 10 & & readByte! = 13) {}
opslaan van de tag
tagString [index] = readByte;
index ++;
}
}
checkTag(tagString); Controleer of het is een match
clearTag(tagString); Schakel de char van alle waarde
resetReader(); opnieuw instellen van de RFID-lezer
}
VOID checkTag (char tag[]) {}
///////////////////////////////////
Controleer de Lees tag tegen bekende tags
///////////////////////////////////
if(STRLEN(tag) == 0) keren; leeg, geen behoefte om te bevorderen
Als (compareTag (label, tag3)) {/ / als gematched tag3, dit doen
forearmServo.write(135);
delay(2500);
forearmServo.write(45);
} else if (compareTag (label, tag4)) {//if gematched tag4, hiervoor
rearcoverServo.write(70); de pod servo tot 90 graden draaien
delay(500); een halve seconde wachten
forwardcoverServo.write(100); de voorwaartse cover servo tot 110 graden roteren
delay(500);
podServo.write(80); de pod servo tot 80 graden roteren
delay(4000);
podServo.write(45); de pod servo op 45 graden roteren
delay(500);
forwardcoverServo.write(45); het voorwaartse coverservo tot 90 graden draaien
delay(500);
rearcoverServo.write(45); de pod servo tot 135 graden roteren
} else {}
Serial.println(tag); voorlezen aan een onbekende tag
}
}
VOID lightLED (int pin) {}
///////////////////////////////////
LED op pin "pin" inschakelen voor 250ms
///////////////////////////////////
Serial.println(PIN);
digitalWrite (pin, hoge);
delay(250);
digitalWrite (pin, laag);
}
ongeldig resetReader() {}
///////////////////////////////////
Reset de RFID-lezer om opnieuw te lezen.
///////////////////////////////////
digitalWrite (RFIDResetPin, laag);
digitalWrite (RFIDResetPin, hoge);
delay(150);
}
VOID clearTag (char one[]) {}
///////////////////////////////////
de char-matrix duidelijk door het invullen met null - ASCII 0
Zal denken dat dezelfde tag is anders gelezen
///////////////////////////////////
for (int i = 0; ik < strlen(one); i ++) {}
een [i] = 0;
}
}
Booleaanse compareTag (char [een], char two[]) {}
///////////////////////////////////
Vergelijk twee waarde om te zien of hetzelfde,
killerid niet 100% werken, zodat we dit doen
///////////////////////////////////
if(STRLEN(One) == 0) geretourneerd als false; leeg
for (int i = 0; ik < 12; i ++) {}
Als (een [i]! = two[i]) return false;
}
return true; geen incongruenties
}