Paso 12: Electrónica - derecha esquemas y código
Aquí está el esquema y el código para el lado derecho.
Es bastante similar a la izquierda, menos la radio XBee. Los servos para el misil de antebrazo todos reciben la misma señal-uno de los servos que se abre la tapa lateral tendrá que ser rotación invertida. Dos de los servos que abren el panel de cohete hacia adelante y hacia atrás del hombro cubre también tendrá que tener su rotación invertida como reciban la misma señal que los servos en el hombro opuesto.
Aquí está el código-
#include "Servo.h" / / incluye la librería servo
Servo forearmServo; servos para mover misiles de antebrazo
Servo rearcoverServo; servo para mover el hombro posterior tapa cohete
Servo forwardcoverServo; servo para mover el cohete hacia adelante hombro tapa
Servo podServo; servo para mover la vaina del cohete de hombro
int RFIDResetPin = 13;
int servoPin1 = 7; pin de control de servos de misil de antebrazo
int servoPin2 = 8; pin de control de servo de cubierta posterior hombro cohete pod
int servoPin3 = 9; pin de control de servo de cubierta de pod de cohete hacia adelante
int servoPin4 = 10; pin de control de servo de pod de cohetes hombro
Registre aquí sus etiquetas RFID
char tag1 [13] = "440085E77452";
char la etiqueta2 [13] = "440085FC330E";
char tag3 [13] = "440085F97840";
char tag4 [13] = "4400863914EF";
void setup() {}
Serial.Begin(9600);
forearmServo.attach(servoPin1); se fija el servo en el pin 7 al objeto servo
rearcoverServo.attach(servoPin2); se fija el servo en el pin 8 al objeto servo
forwardcoverServo.attach(servoPin3); se fija el servo en el pin 9 al objeto servo
podServo.attach(servoPin4); se fija el servo en el pin 10 al objeto servo
forearmServo.write(45); Gire los servos del antebrazo a 45 grados
rearcoverServo.write(45); girar el servo cubierta trasera 45 grados
forwardcoverServo.write(45); girar el servo cubierta delantera a 45 grados
podServo.write(45); girar el servo de la solapa izquierda a 45 grados
pinMode (RFIDResetPin, salida);
digitalWrite (RFIDResetPin, alto);
}
void loop() {}
char tagString [13];
Índice de int = 0;
lectura boolean = false;
{while(serial.Available())}
readByte int = Serial.read(); Lee el siguiente byte disponible
if(readByte == 2) de lectura = true; Inicio de etiqueta
if(readByte == 3) de lectura = false; final de la etiqueta
Si (lectura & & readByte! = 2 & & readByte! = 10 & & readByte! = 13) {}
Guarde la etiqueta
tagString [index] = readByte;
Índice ++;
}
}
checkTag(tagString); Comprobar si es un partido
clearTag(tagString); Claro al char de todo valor
resetReader(); reiniciar el lector de RFID
}
void checkTag (char tag[]) {}
///////////////////////////////////
Compruebe la etiqueta leída contra conocidas etiquetas
///////////////////////////////////
if(strlen(TAG) == 0) volver; vacío, no hay necesidad de continuar
Si (compareTag (etiqueta, tag3)) {/ / si tag3, ello
forearmServo.write(135);
Delay(2500);
forearmServo.write(45);
} else if (compareTag (etiqueta, tag4)) {//if emparejado tag4, ello
rearcoverServo.write(70); girar el servo pod a 90 grados
Delay(500); esperar medio segundo
forwardcoverServo.write(100); girar el servo cubierta delantera a 110 grados
Delay(500);
podServo.write(80); girar el servo pod a 80 grados
Delay(4000);
podServo.write(45); girar el servo pod a 45 grados
Delay(500);
forwardcoverServo.write(45); Gire el coverservo adelante a 90 grados
Delay(500);
rearcoverServo.write(45); girar el servo pod a 135 grados
} else {}
Serial.println(TAG); leer cualquier etiqueta desconocido
}
}
void lightLED (int pin) {}
///////////////////////////////////
Enciende LED en pin "pin" de 250ms
///////////////////////////////////
Serial.println(PIN);
digitalWrite (pin, HIGH);
Delay(250);
digitalWrite (pin, LOW);
}
void resetReader() {}
///////////////////////////////////
Reiniciar el lector de RFID para leer otra vez.
///////////////////////////////////
digitalWrite (RFIDResetPin, bajo);
digitalWrite (RFIDResetPin, alto);
Delay(150);
}
void clearTag (char one[]) {}
///////////////////////////////////
claro el array de char por relleno de null - ASCII 0
Pensará la misma etiqueta ha sido leer de otra manera
///////////////////////////////////
para (int i = 0; i < strlen(one); i ++) {}
uno [i] = 0;
}
}
Boolean compareTag (char uno [], char two[]) {}
///////////////////////////////////
comparar dos valor a si mismo,
strcmp no funcionando al 100% por lo que lo hacemos
///////////////////////////////////
if(strlen(One) == 0) devuelven el valor false; vacío
para (int i = 0; i < 12; i ++) {}
Si (una [i]! = false return two[i]);
}
verdaderas; no hay desajustes
}