Cómo construir a Sauron El señor de los robots
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
|
Aplicaciones y servicios en línea
|
Acerca de este proyecto
¿Eres fanático de la serie de películas El señor de los anillos? Si es así, ¡seguro que conoces a "Sauron"!
En este proyecto, construiremos un robot semihumanoide de tamaño humano que se parece a Sauron :)
El robot tiene dos brazos de 3 grados de libertad y un cabezal de 3 grados de libertad y una base fija. El robot Sauron puede funcionar en tres modos y puedes cambiar entre estos modos usando dos botones conectados a dos pines de entrada digital:
1. Modo de espera Este modo para mostrar la carcasa del robot en cualquier evento, el robot realiza una secuencia de movimientos para atraer a los asistentes.
2. Modo de mando de juegos En este modo, el asistente al evento puede controlar el robot usando el protector de Gamepad de la aplicación 1Sheeld.
3. Modo de imitación En este modo, el robot puede imitar los movimientos de los asistentes al evento como el niño en Real Steal Movie. Por lo tanto, usará guantes con su teléfono inteligente fijo y Arduino leerá los valores de los sensores de su teléfono inteligente como la orientación y el giroscopio y luego usará estos valores para controlar los brazos del robot.
Hice este proyecto para participar en New York Maker Faire para hacer felices a los niños e inspirarlos a usar tecnologías modernas, especialmente en plataformas de desarrollo como Arduino y 1Sheeld para construir sus personajes de películas como ATOM en la película Real Steal o Sauron de El señor de los anillos. series de película. He incluido todos los archivos necesarios (dibujos CAD, esquemas y diseños de circuitos, códigos Arduino y archivos dxf para cortadora láser) para ayudar a cualquiera a construir su propio Sauron :)
Comencemos a construir el Señor de los Robots.
Paso 1:construcción de la cabeza del robot
Para ahorrar tiempo y esfuerzo decidí no reinventar la rueda, así que en lugar de diseñar un nuevo cabezal robótico utilicé este fantástico cabezal robótico de código abierto "Fritz" de xyzbot. Descargué sus archivos de cortador láser y luego usé un cortador láser en un espacio de fabricación cercano para cortar las partes de la cabeza.En mi caso, traté de reducir el tiempo y el costo, así que me salté la impresión en 3D de las partes de los ojos y luego me salté los labios y las cejas. .
Usé una lámina de madera contrachapada de 3 mm para implementar las partes de la cabeza, después de cortar estas partes con el cortador láser, siga el video adjunto para ensamblar el kit, pero tenga cuidado con estos puntos:
1. Saltará el montaje de la base.
2. Omitirá todos los pasos relacionados con las partes impresas en 3D de los ojos.
3. Te saltearás todos los pasos relacionados con las cejas y los labios.
Open_Source_Files.zip FFRDB2LIKJ8MS1G.dxf
Paso 2:construcción del cuerpo del robot
Como de costumbre, construyo mis proyectos para que sean portátiles y puedan ensamblarse fácilmente en poco tiempo si viajo con él para asistir a un evento como Maker Faire, así que construí el cuerpo del robot con varillas Artelon y láminas de madera contrachapada de 3 mm.
Usé Tongue and Groove Joints para fijar el pecho con los hombros, el cuello y la espalda. Luego utilicé tornillos de 4 mm x 20 mm para fijar el marco de madera con el esqueleto de Artelon y un tornillo de 12 mm x 30 mm para fijar el esqueleto de Artelon con la base del robot. Usé un tornillo de 4 mm x 10 mm para fijar los servomotores con el marco de madera. El esqueleto de Artelon consta de 5 partes:
1. La caña básica está hecho de varilla Artelon de 50 mm.
2. El esqueleto está hecho de varilla Artelon de 25 mm.
3. Las barras de ancho -> el robot tiene 3 partes para fijar el cofre con la espalda con la ayuda del esqueleto Artelon, estas partes están hechas de varilla Artelon de 15mm.
Puede consultar los dibujos adjuntos para obtener más información sobre la fabricación de todas estas piezas.
F7DSZV7IKMXH73S.pdf FI5J5H6IKMXH73X.pdf FYPCBU7IKMXH748.pdf FXN90VDIKMXH75Z.pdf F3LCJDQIKMXH763.pdf FZ2QN61IKMXH769.pdf FA2UEZBIKMXH90J.zip
Paso 3:creación de la base del robot
- Usé Solidworks para diseñar esta base para fijar el robot a mi escritorio, puede usar los tres tornillos para fijarlo al escritorio o puede usar dos abrazaderas C de 4 pulgadas.
- Usé chapa de 6 mm para fabricar esta base, e hice estas aberturas para reducir su peso.
- Usé un tornillo de 12 mm x 30 mm para fijar la base con el esqueleto Artelon.
- Puede utilizar el archivo .dxf adjunto para implementar el suyo.
Paso 4:construcción de los brazos del robot
Los brazos del robot fueron el mayor desafío en este proyecto. Quería que fueran modulares y que se ensamblaran y desmontaran lo más fácilmente posible para que me permitieran viajar con el robot a Estados Unidos.
Quería que estos brazos fueran de uso general y puedo modificarlos fácilmente. Si quisiera que este robot fuera un pirata, puedo usar una espada y un gancho y si quisiera que el robot fuera un boxeador como Atom en la película Real Steal, puedo agregar dos puños y puedo agregar dos pinzas para convertirlo en un propósito general. robot, así que diseñé la articulación del antebrazo para este propósito.
Usé láminas de madera contrachapada de 3 mm para implementar el marco del brazo y la inclinación de la bandeja de aluminio para las articulaciones de los hombros, luego usé láminas de balsa para cortar las armas, la espada y el gancho.
Utilicé Solidworks para calcular el par requerido y el resultado fue que necesito usar servomotores de 3 kg / cm, pero usé motores más grandes para hacer que el robot levantara algo.En lugar de hacer mucho mecanizado en el torno para implementar el antebrazo juntas Usé Autodesk 123D Make para dividirlas en un estante de rebanadas, luego usé el cortador láser para cortarlas.
Adjunté el diseño del brazo robótico en Solidworks para que pueda realizar sus modificaciones y calcular el torque.
Paso 5:cosplay de casco y armadura de Sauron
Hasta ahora, el robot parece ATOM de la película real Steal, ayude a ATOM a ser Sauron:D
Mi amiga Kareem me ayudó a implementar el cosplay. Seguimos estos fantásticos instructables para construir el casco y la armadura del robot, pero los modifiqué ligeramente para que se ajustaran a las dimensiones del robot.
http://www.instructables.com/id/Sauron-Cosplay/
http://www.instructables.com/id/Sauron-Cosplay-Hel ...
Si tienes alguna pregunta sobre la parte del cosplay, puedes preguntarle a través de su página de Facebook
Gracias a Nate Space.
Paso 6:la electrónica del robot
1. Usé Arduino Mega con 1Sheeld para controlar los brazos del robot y los servomotores de cabeza.
2. Usé una fuente de alimentación de 5V / 5A para alimentar los motores y el Arduino.
3. Usé una pequeña placa para conectar todos los motores Vcc y GND junto con la fuente de alimentación
4. Usé 1Sheeld para controlar el robot usando mi teléfono inteligente. 1Sheeld es una plataforma de creación rápida de prototipos para Arduino que le permite aprovechar los sensores y capacidades de su teléfono inteligente y le permite usarlos en sus proyectos Arduino. Básicamente, es un escudo de hardware que se encuentra en la parte superior de su placa Arduino y se comunica a través de Bluetooth a esta aplicación de Android, para transferir datos entre ella y su teléfono inteligente.
La aplicación móvil 1Sheeld tiene una larga lista de escudos, debe seleccionar el escudo de Gamepad, el escudo de orientación, el escudo del reproductor de música, el escudo de terminal y el botón de alternancia de esta lista.
1. Escudo de mando que es una GUI en mi teléfono inteligente que tiene algunos botones como el joystick de PlayStation y está conectado a Arduino a través de Bluetooth y lo usé para controlar los servomotores manualmente. Cuando presiona cualquier botón del protector de Gamepad, la aplicación enviará datos a 1Sheeld y luego Arduino controlará los servomotores de los brazos y la cabeza del robot.
2. Escudo de orientación :Uso guantes con mi teléfono inteligente fijo y luego mapeo los valores de los sensores del teléfono inteligente para enviarlos como ángulos a los servomotores.
3. Escudo del reproductor de música: Utilizo el escudo del reproductor de música para reproducir una banda sonora que tiene la voz de Sauron cuando mueve la boca hacia arriba y hacia abajo.
4. Botón de alternar Escudo: Utilizo este escudo para elegir el modo deseado en lugar de agregar botones físicos
5. Escudo de terminal: Utilizo este escudo en lugar de usar el monitor serial IDE de Arduino porque 1Sheeld no puede comunicarse con la PC y el módulo Bluetooth al mismo tiempo.
Paso 7:el código Arduino
Paso 1: Coloque su 1Sheeld en su placa Arduino y luego conecte el Arduino a su computadora portátil o PC.
Paso 2: Descargue la aplicación 1Sheeld en su teléfono inteligente. La aplicación está disponible en Google Play Store en http://1sheeld.com/app
Paso 3: Descargue la biblioteca de 1Sheeld Descargue la biblioteca de OneSheeld a su computadora a través de este enlace.
Paso 4: Extraiga la carpeta, cópiela y péguela en su directorio de bibliotecas Arduino.
Paso 5: Abra mi Arduino Sketch (lo encontrará en los archivos adjuntos)
Paso 6: Sube tu boceto
Aquí viene la parte más importante de todo el tutorial, cambie 1Sheeld al modo de carga (este es el interruptor etiquetado UART Switch en la placa) antes de cargar su boceto en la placa Arduino para evitar conflictos en serie entre 1Sheeld y Arduino, luego presione el botón Cargar en el IDE.
El modo de carga se activa cuando el interruptor UART se aleja del logotipo de 1Sheeld. Una vez que haya completado la carga, debe volver a cambiar 1Sheeld al modo de funcionamiento.
¡No lo olvide! Si no vuelve a cambiar el interruptor UART al modo operativo, su proyecto no funcionará correctamente ya que no tendrá comunicación entre 1Sheeld y la placa Arduino. El modo de funcionamiento se activa cuando el interruptor UART se presiona más cerca del logotipo de 1Sheeld.
Paso 7: Utilice la aplicación 1Sheeld Abra la aplicación 1Sheeld en su teléfono inteligente Android. La aplicación primero buscará a través de Bluetooth su 1Sheeld, tomará unos segundos y el teléfono lo encontrará. Una vez que aparezca en su pantalla como 1Sheeld #xxxx, se le pedirá que ingrese el código de emparejamiento (el código de emparejamiento predeterminado es 1234) y se conecte a 1Sheeld a través de Bluetooth.
NOTA: Si tiene problemas, asegúrese de que el Bluetooth esté activado en su teléfono Android y que el teléfono Android esté cerca de su 1Sheeld.
Paso 8: Seleccione Escudo de mando, Escudo de orientación, Escudo de reproductor de música y Botón de alternancia Escudo y Escudo de terminal de la lista de escudos y presione el ícono de múltiples escudos en la parte superior derecha de la aplicación.
Paso 9: Una vez que encienda el robot, operará en el modo de espera de forma predeterminada si desea controlarlo manualmente usando Gamepad, acceda al escudo del botón de alternancia y elija el pin 2 y luego presione Encendido. Si desea volver al modo de espera, presione APAGADO.
Paso 10: Si desea controlarlo manualmente usando el sensor de orientación, acceda al escudo del botón de alternancia y elija el pin 3 y luego presione Encendido. y asegúrese de que el estado del pin 2 sea BAJO.
F5KJZGXIKMXG3DG.ino
Paso 8:Sauron en Maker Faire New York
Ahora veamos a Sauron entre sus fans en Maker Faire New York :)
Paso 9:Trabajo futuro
Recuerda este instructable: Grabaré un video para mí mientras ensambla el robot y luego pruebo los tres modos .
Observa la cabeza del robot: En esta iteración, decidí reducir el costo, así que usé solo 3 motores en la cabeza.En la próxima iteración agregaré el resto de motores e imprimiré en 3D las partes de los ojos como (párpado, corchete, ojo, pasador de horquilla, globo ocular shell)
Respecto a la base del robot: Reemplazaré la base fija con una base de robot de 4 ruedas mecanum para darle al robot la capacidad de moverse libremente. Terminé de diseñar la base en Solidworks pero no tengo tiempo para fusionarla con el robot.
Código
- Código Arduino de Sauron
Código Sauron Arduino Arduino
#define CUSTOM_SETTINGS # define INCLUDE_GAMEPAD_SHIELD # define INCLUDE_MUSIC_PLAYER_SHIELD # define INCLUDE_TERMINAL_SHIELD # define INCLUDE_ORIENTATION_SENSOR_SHIELD / * Incluye biblioteca de 1Sheeld. * / # include#include Servo rightArm_Motor1; Servo rightArm_Motor2; Servo rightArm_Motor3; Servo leftArm_Motor1; Servo leftArm_Motor2; Servo leftArm_Motor3; Servo cuello horizontal contorneado1; int modePin2 =3; volatile int modeState1 =LOW; volatile int modeState2 =LOW; volatile boolean gamepadMode_Enabled =false; volatile boolean imitationMode_Enabled =false; const int ledPin1 =A0; const int ledPin2 =A1; // ------- ----------------------------------- configuración nula ------------- -------------------------------------- void setup () {// Iniciar comunicación OneSheeld.begin (); // Establecer algunos pines como salida pinMode (modePin1, INPUT); pinMode (modePin2, ENTRADA); // Establecer Led como salida y pinMode "Ojo de Saurons" ALTO (ledPin1, SALIDA); pinMode (ledPin2, SALIDA); digitalWrite (ledPin1, ALTO); digitalWrite (ledPin2, ALTO); // Pines digitales utilizables para interrupciones cuando se usa Mega, Mega2560, MegaADK (2, 3, 18, 19, 20, 21) attachInterrupt (digitalPinToInterrupt (modePin1), gampadMode_ChangeISR, CHANGE); attachInterrupt (digitalPinToInterrupt (modePin2), imitationMode_ChangeISR, CHANGE); / * Conecte los pines de señal (naranja) de los motores a los pines Arduino mega PWM directamente, luego encienda los motores desde la fuente de alimentación, NO desde el Arduino, luego conecte ambas conexiones a tierra de Arduino y la fuente de alimentación entre sí * / rightArm_Motor1.attach (4); rightArm_Motor2.attach (5); rightArm_Motor3.attach (6); leftArm_Motor1.attach (7); leftArm_Motor2.attach (8); leftArm_Motor3.attach (9); neckHorizontal.attach (10); neckVertical.attach (11); boca.atravesado (12); // posición inicial rightArm_Motor1.write (95); rightArm_Motor2.write (150); rightArm_Motor3.write (20); leftArm_Motor1.write (90); leftArm_Motor2.write (45); leftArm_Motor3.write (180); neckHorizontal.write (105); neckVertical.write (30); mouth.write (100);} // ---------------------------------- bucle vacío ---- ----------------------------------------------- bucle vacío ( ) {modeState1 =digitalRead (modePin1); modeState2 =digitalRead (modePin2); // Siempre verifique el modo deseado si (modeState1 ==HIGH) {Terminal.println ("Se seleccionó el modo GamePad"); gamePadMode (); } // Pin 12 =Alto -> Modo de control de juegos else if (modeState2 ==HIGH) {Terminal.println ("Se seleccionó el modo de imitación"); imitationMode (); } // Pin 13 =Alto -> Modo de imitación else {Terminal.println ("Se seleccionó el modo de espera"); modo de espera(); }} // bucle vacío // ----------------------------------------- vacío Modo de espera --------------------------------------------- anular el modo de espera ( ) {// Modo de espera Terminal.println ("Modo de espera activado"); // posición inicial Terminal.println ("1ª posición"); rightArm_Motor1.write (95); rightArm_Motor2.write (150); rightArm_Motor3.write (20); leftArm_Motor1.write (90); leftArm_Motor2.write (45); leftArm_Motor3.write (180); neckHorizontal.write (105); neckVertical.write (30); // Establecer el volumen // MusicPlayer.setVolume (10); MusicPlayer.play (); para (int i =0; i <=19; i ++) {boca.escribir (100); OneSheeld.delay (150); boca.escribir (75); OneSheeld.delay (150); } // para MusicPlayer.pause (); boca.escribir (100); OneSheeld.delay (3000); // ------------------------------------------------ ---- // Siempre verifique el modo deseado if (gamepadMode_Enabled ==true) {Terminal.println ("El sistema fue interrumpido y activará el modo GamePad ahora"); gamePadMode (); } // Pin 12 =Alto -> Modo de control de juegos else if (imitationMode_Enabled ==true) {Terminal.println ("El sistema se interrumpió y activará el modo de imitación ahora"); imitationMode (); } // Pin 13 =Alto -> Modo de imitación else {// Completa el resto de la secuencia // Mueve la cabeza 90 -> 0 -> 180 -> 90 Terminal.println ("2nd position"); rightArm_Motor1.write (95); rightArm_Motor2.write (150); rightArm_Motor3.write (20); leftArm_Motor1.write (90); leftArm_Motor2.write (45); leftArm_Motor3.write (180); neckHorizontal.write (105); OneSheeld.delay (1500); neckHorizontal.write (65); OneSheeld.delay (1500); neckHorizontal.write (140); OneSheeld.delay (1500); neckHorizontal.write (105); neckVertical.write (30); // Establecer el volumen // MusicPlayer.setVolume (10); MusicPlayer.play (); para (int i =0; i <=19; i ++) {boca.escribir (100); OneSheeld.delay (150); boca.escribir (75); OneSheeld.delay (150); } // para MusicPlayer.pause (); boca.escribir (100); OneSheeld.delay (3000); } // else -> completa el resto de la secuencia // ----------------------------------- ----------------- // Siempre verifique el modo deseado si (gamepadMode_Enabled ==true) {Terminal.println ("El sistema fue interrumpido y activará el modo GamePad ahora"); gamePadMode (); } // Pin 12 =Alto -> Modo de control de juegos else if (imitationMode_Enabled ==true) {Terminal.println ("El sistema se interrumpió y activará el modo de imitación ahora"); imitationMode (); } // Pin 13 =Alto -> Modo de imitación else {// Completa el resto de la secuencia // Mueve las manos y la cabeza a 45 grados Terminal.println ("3ª posición"); rightArm_Motor1.write (15); rightArm_Motor2.write (180); rightArm_Motor3.write (0); leftArm_Motor1.write (180); leftArm_Motor2.write (30); leftArm_Motor3.write (145); neckHorizontal.write (65); neckVertical.write (30); // Establecer el volumen // MusicPlayer.setVolume (10); MusicPlayer.play (); para (int i =0; i <=19; i ++) {boca.escribir (100); OneSheeld.delay (150); boca.escribir (75); OneSheeld.delay (150); } // para MusicPlayer.pause (); boca.escribir (100); OneSheeld.delay (3000); } // else -> completa el resto de la secuencia // ----------------------------------- -------------- // Siempre verifique el modo deseado if (gamepadMode_Enabled ==true) {Terminal.println ("El sistema fue interrumpido y activará el modo GamePad ahora"); gamePadMode (); } // Pin 12 =Alto -> Modo de control de juegos else if (imitationMode_Enabled ==true) {Terminal.println ("El sistema se interrumpió y activará el modo de imitación ahora"); imitationMode (); } // Pin 13 =Alto -> Modo de imitación else {// Completa el resto de la secuencia // Mueve la mano derecha y dirígete a 135 grados Terminal.println ("4ª posición"); rightArm_Motor1.write (15); rightArm_Motor2.write (150); rightArm_Motor3.write (30); leftArm_Motor1.write (180); leftArm_Motor2.write (30); leftArm_Motor3.write (145); neckHorizontal.write (140); neckVertical.write (30); // Establecer el volumen // MusicPlayer.setVolume (10); MusicPlayer.play (); for (int i =0; i <=19; i++) { mouth.write(100); OneSheeld.delay(150); mouth.write(75); OneSheeld.delay(150); }//for MusicPlayer.pause(); mouth.write(100); OneSheeld.delay(3000); }//else --> complete the rest of the sequence //--------------------------------------------------- // Always check the desired mode if (gamepadMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate GamePad Mode Now"); gamePadMode(); } //Pin 12 =High --> Gamepad mode else if (imitationMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate Imitation Mode Now"); imitationMode(); } //Pin 13 =High --> Imitation Mode else { // Complete the rest of the sequence // Move head to the center Terminal.println("5th position"); rightArm_Motor1.write(15); rightArm_Motor2.write(150); rightArm_Motor3.write(30); leftArm_Motor1.write(180); leftArm_Motor2.write(30); leftArm_Motor3.write(145); neckHorizontal.write(105); neckVertical.write(30); // Set the volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) { mouth.write(100); OneSheeld.delay(150); mouth.write(75); OneSheeld.delay(150); }//for MusicPlayer.pause(); mouth.write(100); OneSheeld.delay(3000); }//else --> complete the rest of the sequence //---------------------------------------------------- // Always check the desired mode if (gamepadMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate GamePad Mode Now"); gamePadMode(); } //Pin 12 =High --> Gamepad mode else if (imitationMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate Imitation Mode Now"); imitationMode(); } //Pin 13 =High --> Imitation Mode else { // Complete the rest of the sequence // Move hands up Terminal.println("6th position"); rightArm_Motor1.write(110); rightArm_Motor2.write(0); rightArm_Motor3.write(45); leftArm_Motor1.write(90); leftArm_Motor2.write(180); leftArm_Motor3.write(145); neckHorizontal.write(105); neckVertical.write(30); // Set the volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) { mouth.write(100); OneSheeld.delay(150); mouth.write(75); OneSheeld.delay(150); }//for MusicPlayer.pause(); mouth.write(100); OneSheeld.delay(3000); }//else --> complete the rest of the sequence //------------------------------------------------- // Always check the desired mode if (gamepadMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate GamePad Mode Now"); gamePadMode(); } //Pin 12 =High --> Gamepad mode else if (imitationMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate Imitation Mode Now"); imitationMode(); } //Pin 13 =High --> Imitation Mode else { // Complete the rest of the sequence /* Move hands to sides o -- | -- ^ */ Terminal.println("7th position"); rightArm_Motor1.write(110); rightArm_Motor2.write(80); rightArm_Motor3.write(60); leftArm_Motor1.write(90); leftArm_Motor2.write(115); leftArm_Motor3.write(140); neckHorizontal.write(105); neckVertical.write(30); // Set the volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) { mouth.write(100); OneSheeld.delay(150); mouth.write(75); OneSheeld.delay(150); }//for MusicPlayer.pause(); mouth.write(100); OneSheeld.delay(3000); }//else --> complete the rest of the sequence //--------------------------------------------------- // Always check the desired mode if (gamepadMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate GamePad Mode Now"); gamePadMode(); } //Pin 12 =High --> Gamepad mode else if (imitationMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate Imitation Mode Now"); imitationMode(); } //Pin 13 =High --> Imitation Mode else { // Complete the rest of the sequence // Strike right hand Terminal.println("8th position"); rightArm_Motor1.write(0); rightArm_Motor2.write(0); rightArm_Motor3.write(45); leftArm_Motor1.write(90); leftArm_Motor2.write(45); leftArm_Motor3.write(180); OneSheeld.delay(500); rightArm_Motor1.write(180); rightArm_Motor2.write(0); rightArm_Motor3.write(45); OneSheeld.delay(1000); rightArm_Motor1.write(95); rightArm_Motor2.write(150); rightArm_Motor3.write(20); neckHorizontal.write(105); neckVertical.write(30); // Set the volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) { mouth.write(100); OneSheeld.delay(150); mouth.write(75); OneSheeld.delay(150); }//for MusicPlayer.pause(); mouth.write(100); OneSheeld.delay(3000); }//else --> complete the rest of the sequence //-------------------------------------------------- // Always check the desired mode if (gamepadMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate GamePad Mode Now"); gamePadMode(); } //Pin 12 =High --> Gamepad mode else if (imitationMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate Imitation Mode Now"); imitationMode(); } //Pin 13 =High --> Imitation Mode else { // Complete the rest of the sequence // Strike left hand Terminal.println("9th position"); rightArm_Motor1.write(95); rightArm_Motor2.write(150); rightArm_Motor3.write(20); leftArm_Motor1.write(90); leftArm_Motor2.write(180); leftArm_Motor3.write(110); OneSheeld.delay(500); leftArm_Motor1.write(0); leftArm_Motor2.write(180); leftArm_Motor3.write(110); OneSheeld.delay(1000); leftArm_Motor1.write(90); leftArm_Motor2.write(45); leftArm_Motor3.write(180); neckHorizontal.write(105); neckVertical.write(30); // Set the volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) { mouth.write(100); OneSheeld.delay(150); mouth.write(75); OneSheeld.delay(150); }//for MusicPlayer.pause(); mouth.write(100); OneSheeld.delay(3000); }//else --> complete the rest of the sequence //----------------------------------------------------- // Always check the desired mode if (gamepadMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate GamePad Mode Now"); gamePadMode(); } //Pin 12 =High --> Gamepad mode else if (imitationMode_Enabled ==true) { Terminal.println("System Was Interrupted And It Will Activate Imitation Mode Now"); imitationMode(); } //Pin 13 =High --> Imitation Mode else { // Complete the rest of the sequence // Play Music Player and move the robot's mouth Terminal.println("Return to the home position"); rightArm_Motor1.write(95); rightArm_Motor2.write(150); rightArm_Motor3.write(20); leftArm_Motor1.write(90); leftArm_Motor2.write(45); leftArm_Motor3.write(180); neckHorizontal.write(105); neckVertical.write(30); // Set the volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=49; i++) { mouth.write(100); OneSheeld.delay(150); mouth.write(75); OneSheeld.delay(150); }//for MusicPlayer.pause(); mouth.write(100); Terminal.println("Done"); }//else --> complete the rest of the sequence}// void standby mode//----------------------------------------- void Gamepad Mode ---------------------------------------------void gamePadMode() { Terminal.println("Gamepad mode activated"); // Always check the status of gamepad buttons if (GamePad.isUpPressed()) { // Move both hands up Terminal.println("Up is pressed"); rightArm_Motor1.write(110); rightArm_Motor2.write(0); rightArm_Motor3.write(45); leftArm_Motor1.write(90); leftArm_Motor2.write(180); leftArm_Motor3.write(145); neckHorizontal.write(105); neckVertical.write(30); mouth.write(100); }//Up is pressed if (GamePad.isDownPressed()) { // Move both hands up Terminal.println("Down is pressed"); rightArm_Motor1.write(110); rightArm_Motor2.write(170); rightArm_Motor3.write(45); leftArm_Motor1.write(90); leftArm_Motor2.write(20); leftArm_Motor3.write(145); neckHorizontal.write(105); neckVertical.write(30); mouth.write(100); }//Down is pressed if (GamePad.isRightPressed()) { // Move right hand side Terminal.println("Right is pressed"); rightArm_Motor1.write(110); rightArm_Motor2.write(80); rightArm_Motor3.write(60); leftArm_Motor1.write(90); leftArm_Motor2.write(20); leftArm_Motor3.write(145); neckHorizontal.write(105); neckVertical.write(30); mouth.write(100); }//Right is pressed if (GamePad.isLeftPressed()) { // Move left hand side Terminal.println("Left is pressed"); rightArm_Motor1.write(110); rightArm_Motor2.write(170); rightArm_Motor3.write(45); leftArm_Motor1.write(90); leftArm_Motor2.write(115); leftArm_Motor3.write(140); neckHorizontal.write(105); neckVertical.write(30); mouth.write(100); }//Left is pressed if (GamePad.isRedPressed()) { // Combo 1 Terminal.println("Red is pressed"); rightArm_Motor1.write(180); rightArm_Motor2.write(45); rightArm_Motor3.write(100); leftArm_Motor1.write(90); leftArm_Motor2.write(180); leftArm_Motor3.write(110); neckHorizontal.write(105); neckVertical.write(30); mouth.write(100); }//Red is pressed if (GamePad.isOrangePressed()) { // Combo 2 Terminal.println("Orange is pressed"); rightArm_Motor1.write(15); rightArm_Motor2.write(100); rightArm_Motor3.write(0); leftArm_Motor1.write(180); leftArm_Motor2.write(100); leftArm_Motor3.write(180); neckHorizontal.write(105); neckVertical.write(30); mouth.write(100); }//Orange is pressed if (GamePad.isGreenPressed()) { // Combo 3 Terminal.println("Green is pressed"); rightArm_Motor1.write(95); rightArm_Motor2.write(45); rightArm_Motor3.write(120); leftArm_Motor1.write(90); leftArm_Motor2.write(135); leftArm_Motor3.write(60); neckHorizontal.write(105); neckVertical.write(10); mouth.write(100); }//Green is pressed if (GamePad.isBluePressed()) { // Combo 4 Terminal.println("Blue is pressed"); rightArm_Motor1.write(90); rightArm_Motor2.write(0); rightArm_Motor3.write(90); leftArm_Motor1.write(180); leftArm_Motor2.write(45); leftArm_Motor3.write(180); neckHorizontal.write(105); neckVertical.write(30); mouth.write(100); }//Blue is pressed}// Gamepad mode//----------------------------------------- void Imitation Mode -------------------------------------------void imitationMode() { // Imitation mode Terminal.println("Imitation mode activated"); if (OrientationSensor.getY()> -90 &&OrientationSensor.getY() <=90) { leftArm_Motor1.write(map(OrientationSensor.getY(), -90, 90, 0, 180)); } if (OrientationSensor.getZ()> -70 &&abs(OrientationSensor.getZ()) <=70) { leftArm_Motor2.write(map(OrientationSensor.getZ(), 0, 60, 100, 160)); leftArm_Motor3.write(map(OrientationSensor.getZ(), 0, 60, 160, 100)); }}// void imitation mode//-----------------------------------------------------------------------------------------------------------//-------------------------------------------- Modes ISR ----------------------------------------------------//-----------------------------------------------------------------------------------------------------------void gampadMode_ChangeISR() { if (gamepadMode_Enabled &&!imitationMode_Enabled) { gamepadMode_Enabled =false; imitationMode_Enabled =false; } else { gamepadMode_Enabled =true; imitationMode_Enabled =false; }}//gampadMode_ChangeISR//------------------------------------------------------------------------------------------------------------void imitationMode_ChangeISR() { if (imitationMode_Enabled &&!gamepadMode_Enabled) { gamepadMode_Enabled =false; imitationMode_Enabled =false; } else { gamepadMode_Enabled =false; imitationMode_Enabled =true; }}//imitationMode_ChangeISR
Esquemas
Proceso de manufactura
- Cómo los robots de pulverización mejoran la coherencia
- Cómo los robots de pintura reducen el retrabajo
- Cómo reducir el costo de retrabajo en la fabricación
- ¿Cuál es la realidad de la visión del robot?
- ¿Qué diablos es un robot autoprogramable?
- Robot industrial
- Mantener a los robots ocupados
- Cómo crear el equipo de implementación de ERP perfecto
- Robot SCARA | Cómo construir su propio robot basado en Arduino
- Robot Raspberry Pi:cómo construir un robot Raspberry Pi
- ¿Qué tan brillante es el futuro de la automatización?