Étape 12 : Electronics - schémas de droite et code
Voici le schéma et le code pour le côté droit.
Il est assez semblable au côté gauche, moins la radio XBee. Les servos pour le missile avant-bras tous reçoivent le même signal-un des servos qui ouvre le capot latéral devra être rotation inversée. Deux des servos qui Ouvrez le panneau de roquette épaule vers l’avant et l’arrière couvre devront également avoir leur rotation inversée car ils reçoivent le même signal que les servos dans l’épaule opposée.
Voici le code-
#include « Servo.h » / / inclure la bibliothèque de servo
Servo forearmServo ; servos pour déplacer des missiles de l’avant-bras
Servo rearcoverServo ; servo pour déplacer l’épaule arrière rocket pod couverture
Servo forwardcoverServo ; servo pour déplacer les épaules vers l’avant rocket pod couverture
Servo podServo ; servo pour déplacer le pod de roquettes épaule
int RFIDResetPin = 13 ;
int servoPin1 = 7 ; broche de commande pour les servos de missile avant-bras
int servoPin2 = 8 ; broche de commande servo de couverture arrière épaule rocket pod
int servoPin3 = 9 ; broche de commande servo de couverture pour le pod fusée avant
int servoPin4 = 10 ; broche de commande servo de pod de roquettes épaule
Enregistrer vos tags RFID ici
char tag1 [13] = « 440085E77452 » ;
char tag2 [13] = « 440085FC330E » ;
char tag3 [13] = « 440085F97840 » ;
char tag4 [13] = « 4400863914EF » ;
void setup() {}
Serial.Begin(9600) ;
forearmServo.attach(servoPin1) ; s’adapte sur le servo sur la broche 7 l’objet servo
rearcoverServo.attach(servoPin2) ; s’adapte sur le servo sur la broche 8 l’objet de servo
forwardcoverServo.attach(servoPin3) ; attache le servo sur la broche 9 à l’objet de servo
podServo.attach(servoPin4) ; s’adapte sur le servo sur la broche 10 l’objet de servo
forearmServo.write(45) ; faire pivoter les servos avant-bras à 45 degrés
rearcoverServo.write(45) ; faire pivoter le servo de capot arrière à 45 degrés
forwardcoverServo.write(45) ; faire pivoter le servo couvercle vers l’avant à 45 degrés
podServo.write(45) ; faire pivoter le servo d’aileron gauche à 45 degrés
pinMode (RFIDResetPin, sortie) ;
digitalWrite (RFIDResetPin, élevé) ;
}
void loop() {}
char tagString [13] ;
int index = 0 ;
lecture booléen = false ;
{while(Serial.available())}
readByte int = Serial.read() ; lire l’octet disponible suivant
if(ReadByte == 2) lecture = true ; Date du début de la balise
if(ReadByte == 3) lecture = false ; fin de balise
Si (lecture & & readByte! = 2 & & readByte! = 10 & & readByte! = 13) {}
stocker la balise
tagString [index] = readByte ;
index ++ ;
}
}
checkTag(tagString) ; Vérifier si c’est un match
clearTag(tagString) ; Désactivez le char de toute valeur
resetReader() ; réinitialiser le lecteur RFID
}
void checkTag (char tag[]) {}
///////////////////////////////////
Vérifier la lecture tag contre tags connus
///////////////////////////////////
if(strlen(tag) == 0) return ; vide, sans devoir contunue
Si (compareTag (tag, tag3)) {/ / si appariés tag3, procédez comme suit
forearmServo.write(135) ;
Delay(2500) ;
forearmServo.write(45) ;
} else if (compareTag (tag, tag4)) {//if appariés tag4, cela
rearcoverServo.write(70) ; faire pivoter le servo pod à 90 degrés
Delay(500) ; attendre une demi-seconde
forwardcoverServo.write(100) ; faire pivoter le servo avant couverture à 110 degrés
Delay(500) ;
podServo.write(80) ; faire pivoter le servo pod à 80 degrés
Delay(4000) ;
podServo.write(45) ; faire pivoter le servo pod à 45 degrés
Delay(500) ;
forwardcoverServo.write(45) ; Faites tourner la coverservo avant à 90 degrés
Delay(500) ;
rearcoverServo.write(45) ; faire pivoter le servo pod à 135 degrés
} else {}
Serial.println(tag) ; lecture de n’importe quelle balise inconnue
}
}
void lightLED (int NIP) {}
///////////////////////////////////
Allumer la LED sur la broche « pin » pour 250 ms
///////////////////////////////////
Serial.println(pin) ;
digitalWrite (tige, haute) ;
Delay(250) ;
digitalWrite (broches, faible) ;
}
void resetReader() {}
///////////////////////////////////
Réinitialiser le lecteur RFID à relire.
///////////////////////////////////
digitalWrite (RFIDResetPin, basse) ;
digitalWrite (RFIDResetPin, élevé) ;
Delay(150) ;
}
Sub clearTag (char one[]) {}
///////////////////////////////////
effacer le tableau de char en le remplissant avec null - ASCII 0
Pensera même balise a été lue autrement
///////////////////////////////////
pour (int i = 0; i < strlen(one); i ++) {}
un [i] = 0 ;
}
}
Boolean compareTag (char [un], char two[]) {}
///////////////////////////////////
comparer deux valeurs pour voir s’il y a même,
strcmp ne fonctionne pas 100 %, si nous faisons cela
///////////////////////////////////
if(strlen(One) == 0) return false ; vide
pour (int i = 0; i < 12; i ++) {}
Si (un [i]! = two[i]) return false ;
}
retourne la valeur true ; aucune incompatibilités
}