Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Comment construire Sauron le seigneur des robots

Composants et fournitures

Arduino Mega 2560
× 1
1Sheeld
× 1
Appareil Android
× 1

Outils et machines nécessaires

Coupe laser (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

Êtes-vous un fan de la série de films Le Seigneur des Anneaux ? Si c'est le cas, vous connaissez certainement "Sauron" !

Dans ce projet, nous allons construire un robot semi-humanoïde à taille humaine qui ressemble à Sauron :)

Le robot a deux bras à 3 degrés de liberté et une tête à 3 degrés de liberté et une base fixe. Sauron le robot peut fonctionner selon trois modes et vous pouvez basculer entre ces modes à l'aide de deux boutons poussoirs reliés à deux broches d'entrée numérique :

1. Mode veille Ce mode pour montrer le boîtier du robot dans tous les cas, le robot effectue une séquence de mouvements pour attirer les participants.

2. Mode manette de jeu Dans ce mode, le participant à l'événement peut contrôler le robot à l'aide du bouclier Gamepad de l'application 1Sheeld.

3. Mode Imitation Dans ce mode, le robot peut imiter les mouvements des participants à l'événement comme l'enfant dans Real Steal Movie. Vous porterez donc des gants avec votre smartphone fixé dessus et l'Arduino lira les valeurs des capteurs de votre smartphone comme l'orientation et le gyroscope, puis utilisera ces valeurs pour contrôler les bras du robot.

J'ai réalisé ce projet pour participer à la New York Maker Faire pour rendre les enfants heureux et les inspirer à utiliser les technologies modernes, en particulier en développant des plates-formes telles que Arduino et 1Sheeld pour créer leurs personnages de films comme ATOM dans Real Steal movie ou Sauron du Seigneur des Anneaux. série de films. J'ai inclus tous les fichiers nécessaires (dessins CAO, schémas et mises en page de circuits, codes Arduino et fichiers dxf pour découpeur laser) pour aider quiconque à construire son propre Sauron :)

Commençons à construire le Seigneur des Robots.

Étape 1 : Construire la tête du robot

Pour gagner du temps et des efforts, j'ai décidé de ne pas réinventer la roue, donc au lieu de concevoir une nouvelle tête robotique, j'ai utilisé cette fantastique tête robotique open source "Fritz" de xyzbot. J'ai téléchargé leurs fichiers de découpe laser puis j'ai utilisé un découpeur laser dans un makerspace à proximité pour couper les parties de la tête. .

J'ai utilisé une feuille de contreplaqué de 3 mm pour mettre en œuvre les pièces de tête, après avoir coupé ces pièces à l'aide du cutter laser, veuillez suivre la vidéo ci-jointe pour assembler le kit mais prenez soin de ces points :

1. Vous ignorerez l'assemblage de la base.

2. Vous sauterez toutes les étapes liées aux parties des yeux imprimées en 3D.

3. Vous sauterez toutes les étapes liées aux sourcils et aux lèvres.

Open_Source_Files.zip FFRDB2LIKJ8MS1G.dxf

Étape 2 : Construire le corps du robot

Comme d'habitude, je construis mes projets pour qu'ils soient portables pour être facilement assemblés en peu de temps si je voyage avec pour assister à un événement comme Maker Faire, j'ai donc construit le corps du robot à l'aide de tiges Artelon et de feuilles de contreplaqué de 3 mm.

J'ai utilisé Tongue and Groove Joints pour fixer la poitrine avec les épaules, le cou et le dos. Ensuite, j'ai utilisé des vis de 4 mm x 20 mm pour fixer le cadre en bois avec le squelette Artelon et une vis de 12 mm x 30 mm pour fixer le squelette Artelon avec la base du robot. J'ai utilisé des vis 4 mm x 10 mm pour fixer les servomoteurs avec le cadre en bois. Le squelette Artelon se compose de 5 parties :

1. La canne de base est composé d'une tige Artelon de 50 mm.

2. Le Squelette est composé d'une tige Artelon de 25 mm.

3. Les barres de largeur -> le robot a 3 parties pour fixer la poitrine avec le dos à l'aide du squelette Artelon, ces parties sont constituées de tige Artelon de 15mm.

Vous pouvez consulter les dessins ci-joints pour plus d'informations sur la fabrication de toutes ces pièces.

F7DSZV7IKMXH73S.pdf FI5J5H6IKMXH73X.pdf FYPCBU7IKMXH748.pdf FXN90VDIKMXH75Z.pdf F3LCJDQIKMXH763.pdf FZ2QN61IKMXH769.pdf FA2UEZBIKMXH90J.zip

Étape 3 :Création de la base du Robot

  • J'ai utilisé Solidworks pour concevoir cette base pour fixer le robot à mon bureau, vous pouvez utiliser les trois vis pour le fixer au bureau ou vous pouvez utiliser deux pinces en C de 4 pouces.
  • J'ai utilisé de la tôle de 6 mm pour fabriquer cette base, et j'ai fait ces ouvertures pour réduire son poids.
  • J'ai utilisé une vis de 12mm x 30mm pour fixer la base avec le squelette d'Artelon.
  • Vous pouvez utiliser le fichier .dxf joint pour implémenter le vôtre.
FMZODFWIKMXHHIV.dxf

Étape 4 : Construire les bras du robot

Les bras du robot étaient le plus grand défi de ce projet. Je voulais qu'ils soient modulaires et faciles à assembler et à démonter pour me permettre de voyager avec le robot aux États-Unis.

Je voulais que ces bras soient polyvalents et je puisse les modifier facilement. Si je veux que ce robot soit un pirate, je peux utiliser une épée et un crochet et si je veux que le robot soit un boxeur comme Atom dans le film Real Steal, je peux ajouter deux poings et je peux ajouter deux pinces pour en faire un usage général robot, J'ai donc conçu l'articulation de l'avant-bras à cet effet.

J'ai utilisé des feuilles de contreplaqué de 3 mm pour mettre en œuvre le cadre du bras et l'inclinaison du plateau en aluminium pour les articulations des épaules, puis j'ai utilisé des feuilles de balsa pour couper les armes, l'épée et le crochet.

J'ai utilisé Solidworks pour calculer le couple requis et le résultat était que je devais utiliser des servomoteurs de 3 kg/cm mais j'ai utilisé des moteurs plus gros pour que le robot soulève quelque chose. Au lieu de faire beaucoup d'usinage sur le tour pour mettre en œuvre l'avant-bras joints J'ai utilisé Autodesk 123D Make pour les diviser en un rack de tranches, puis j'ai utilisé le cutter laser pour les couper.

J'ai attaché la conception du bras robotique sur Solidworks afin que vous puissiez apporter vos modifications et calculer le couple.

Étape 5 :cosplay du casque et de l'armure de Sauron

Jusqu'à présent, le robot ressemble à ATOM du vrai film Steal, aidons ATOM à être Sauron :D

Mon ami Kareem m'a aidé à mettre en œuvre le cosplay que nous avons suivi ces fantastiques instructables pour construire le casque et l'armure du robot, mais je les ai légèrement modifiés pour les adapter aux dimensions du robot.

http://www.instructables.com/id/Sauron-Cosplay/

http://www.instructables.com/id/Sauron-Cosplay-Hel...

Si vous avez des questions sur la partie cosplay vous pouvez lui poser via sa page FB

Merci à Nate Space.

Étape 6 :L'électronique du robot

1. J'ai utilisé Arduino Mega avec 1Sheeld pour contrôler les bras et les servomoteurs de la tête du robot.

2. J'ai utilisé une alimentation 5V/5A pour alimenter les moteurs et l'Arduino.

3. J'ai utilisé une petite planche à pain pour connecter tous les moteurs Vcc et GND avec l'alimentation

4. J'ai utilisé 1Sheeld pour contrôler le robot à l'aide de mon téléphone intelligent.1Sheeld est une plate-forme de prototypage rapide pour Arduino qui vous permet d'exploiter les capteurs et les capacités de votre smartphone et vous permet de les utiliser dans vos projets Arduino. Fondamentalement, il s'agit d'un bouclier matériel qui se trouve au-dessus de votre carte Arduino et communique via Bluetooth avec cette application Android, pour transférer des données entre celle-ci et votre smartphone.

L'application mobile 1Sheeld a une longue liste de boucliers, vous devez sélectionner Bouclier de manette de jeu, Bouclier d'orientation, Bouclier de lecteur de musique, Bouclier de terminal et un bouton bascule dans cette liste.

1. Bouclier de manette de jeu qui est une interface graphique sur mon smartphone qui a des boutons comme le joystick PlayStation et connecté à Arduino via Bluetooth et je l'ai utilisé pour contrôler les servomoteurs manuellement. Lorsque vous appuyez sur n'importe quel bouton du Gamepad shield, l'application enverra des données à 1Sheeld, puis Arduino contrôlera les servomoteurs des bras et de la tête du robot.

2. Bouclier d'orientation :Je porte des gants avec mon smartphone fixé dessus puis je mappe les valeurs des capteurs du smartphone pour les envoyer sous forme d'angles aux servomoteurs.

3. Bouclier du lecteur de musique : J'utilise le bouclier du lecteur de musique pour jouer une bande-son qui a la voix de Sauron lorsqu'il bouge sa bouche de haut en bas.

4. Bouton bascule Bouclier : J'utilise ce shield pour choisir le mode souhaité au lieu d'ajouter des boutons poussoirs physiques

5. Bouclier de terminal : J'utilise ce shield au lieu d'utiliser le moniteur série Arduino IDE car 1Sheeld ne peut pas communiquer avec le PC et le module Bluetooth en même temps.

Étape 7 : le code Arduino

Étape 1 : Placez votre 1Sheeld sur votre carte Arduino puis branchez l'Arduino sur votre ordinateur portable ou PC.

Étape 2 : Téléchargez l'application 1Sheeld sur votre téléphone intelligent. L'application est disponible sur le Google Play Store à l'adresse http://1sheeld.com/app

Étape 3 : Télécharger la bibliothèque 1Sheeld Téléchargez la bibliothèque OneSheeld sur votre ordinateur via ce lien.

Étape 4 : Extrayez le dossier, copiez-le et collez-le dans le répertoire de vos bibliothèques Arduino.

Étape 5 : Ouvrez mon Arduino Sketch (vous le trouverez dans les fichiers joints)

Étape 6 : Téléchargez votre croquis

Voici la partie la plus importante de l'ensemble du didacticiel, passez 1Sheeld en mode de téléchargement (il s'agit du commutateur étiqueté UART Switch sur la carte) avant de télécharger votre croquis sur la carte Arduino pour éviter les conflits en série entre 1Sheeld et Arduino, puis appuyez sur le bouton Télécharger dans l'IDE.

Le mode de téléchargement est activé lorsque le commutateur UART est éloigné du logo 1Sheeld. Une fois que vous avez terminé votre téléchargement, vous devez remettre 1Sheeld en mode de fonctionnement.

N'oubliez pas ! Si vous ne remettez pas le commutateur UART en mode de fonctionnement, votre projet ne fonctionnera pas correctement car vous n'aurez aucune communication entre 1Sheeld et la carte Arduino. Le mode de fonctionnement est activé lorsque le commutateur UART est poussé le plus près du logo 1Sheeld.

Étape 7 : Utilisez l'application 1Sheeld Ouvrez l'application 1Sheeld sur votre téléphone intelligent Android. L'application recherchera d'abord votre 1Sheeld via Bluetooth, cela prendra quelques secondes et le téléphone le trouvera. Une fois qu'il apparaît sur votre écran en tant que 1Sheeld #xxxx, vous devrez entrer le code d'appairage (le code d'appairage par défaut est 1234) et vous connecter à 1Sheeld via Bluetooth.

REMARQUE : Si vous rencontrez des problèmes, assurez-vous que le Bluetooth est activé pour votre téléphone Android et que le téléphone Android est proche de votre 1Sheeld.

Étape 8 : Sélectionnez Gamepad Shield, Orientation Shield, Music Player Shield et Toggle button Shield et Terminal shield dans la liste des shields et appuyez sur l'icône de shields multiples en haut à droite de l'application.

Étape 9 : Une fois que vous avez mis le robot sous tension, il fonctionnera par défaut en mode veille si vous souhaitez le contrôler manuellement à l'aide de la manette de jeu, accédez au bouclier du bouton à bascule et choisissez la broche 2, puis appuyez sur On. Si vous souhaitez revenir au mode veille, appuyez sur OFF.

Étape 10 : Si vous souhaitez le contrôler manuellement à l'aide du capteur d'orientation, accédez au bouclier du bouton à bascule et choisissez la broche 3, puis appuyez sur On. et assurez-vous que l'état de la broche 2 est FAIBLE.

F5KJZGXIKMXG3DG.ino

Étape 8 :Sauron à Maker Faire New York

Maintenant, regardons Sauron entre ses fans dans Maker Faire New York :)

Étape 9 :Travail futur

Considérant cette instructable : Je vais enregistrer une vidéo pour moi en assemblant le robot puis en essayant les trois modes.

Concerne la tête du robot : Dans cette itération, j'ai décidé de réduire le coût, j'ai donc utilisé seulement 3 moteurs dans la tête. Dans la prochaine itération, j'ajouterai le reste des moteurs et j'imprimerai en 3D les parties des yeux comme (paupière, support oculaire, anneau oculaire, axe de chape, globe oculaire coque)

Concernant la base du robot : Je remplacerai la base fixe par une base de robot à 4 roues mécaniques pour donner au robot la possibilité de se déplacer librement. J'ai fini de concevoir la base sur Solidworks mais je n'ai pas le temps de la fusionner avec le robot.

Code

  • Code Arduino Sauron
Code Arduino SauronArduino
#define CUSTOM_SETTINGS#define INCLUDE_GAMEPAD_SHIELD#define INCLUDE_MUSIC_PLAYER_SHIELD#define INCLUDE_TERMINAL_SHIELD#define INCLUDE_ORIENTATION_SENSOR_SHIELD/* Inclut la bibliothèque 1Sheeld. */#include #include Servo rightArm_Motor1;Servo rightArm_Motor2;Servo rightArm_Motor3;Servo leftArm_Motor1;Servo leftArm_Motor2;Servo leftArm_Motor3;Servo neckHorizontal;Servocons neckVertical;Servo mode mouthPint1 in 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;/----- ----------------------------------- void setup ------------- ---------------------------------------------------- void setup(){ // Démarrer la communication OneSheeld.begin (); // Définir certaines broches comme sortie pinMode(modePin1, INPUT); pinMode(modePin2, INPUT); // Définir Led comme sortie et HIGH "Saurons Eye" pinMode(ledPin1,OUTPUT); pinMode(ledPin2,OUTPUT); digitalWrite (ledPin1, HAUT); digitalWrite (ledPin2, HAUT); // Broches numériques utilisables pour les interruptions lors de l'utilisation de Mega, Mega2560, MegaADK (2, 3, 18, 19, 20, 21) attachInterrupt(digitalPinToInterrupt(modePin1), gampadMode_ChangeISR, CHANGE); attachInterrupt(digitalPinToInterrupt(modePin2), imitationMode_ChangeISR, CHANGE); /* Connectez les broches de signal (Orange) des moteurs aux broches Arduino mega PWM directement, puis alimentez les moteurs à partir de l'alimentation PAS de l'Arduino, puis connectez les deux masses d'Arduino et l'alimentation l'une à l'autre */ rightArm_Motor1.attach(4); rightArm_Motor2.attach(5) ; rightArm_Motor3.attach(6) ; leftArm_Motor1.attach(7) ; leftArm_Motor2.attach(8) ; leftArm_Motor3.attach(9) ; couHorizontal.attach(10) ; neckVertical.attach(11); bouche.attache(12); // position d'origine rightArm_Motor1.write(95); rightArm_Motor2.write(150); rightArm_Motor3.write(20); leftArm_Motor1.write(90); leftArm_Motor2.write(45); leftArm_Motor3.write(180); couHorizontal.write(105); couVertical.write(30); bouche.write(100);}//--------------------------------- boucle vide ---- ----------------------------------------------------------------------------boucle vide ( ){ modeState1 =digitalRead(modePin1) ; modeState2 =digitalRead(modePin2) ; // Vérifiez toujours le mode souhaité if (modeState1 ==HIGH) { Terminal.println("Le mode GamePad a été sélectionné"); gamePadMode(); } //Broche 12 =Élevé --> Mode manette else if (modeState2 ==ÉLEVÉ) { Terminal.println("Le mode imitation a été sélectionné"); imitationMode(); } //Broche 13 =High --> Mode d'imitation else { Terminal.println("Le mode veille a été sélectionné"); mode veille(); }}//boucle vide//----------------------------------------- vide Mode veille ----------------------------------------------- void standbyMode( ) { // Mode veille Terminal.println("Mode veille activé"); // position d'origine Terminal.println("1ère 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); couHorizontal.write(105); couVertical.write(30); // Régler le volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) { bouche.write(100); OneSheeld.delay(150); bouche.écriture(75); OneSheeld.delay(150); }//pour MusicPlayer.pause(); bouche.écrire (100); OneSheeld.delay(3000); //------------------------------------------------ ---- // Vérifiez toujours le mode souhaité if (gamepadMode_Enabled ==true) { Terminal.println ("Le système a été interrompu et il activera le mode GamePad maintenant"); gamePadMode(); } // Pin 12 =High --> Gamepad mode else if (imitationMode_Enabled ==true) { Terminal.println ("Le système a été interrompu et il activera le mode imitation maintenant"); imitationMode(); } //Broche 13 =High --> Mode Imitation else { // Terminer le reste de la séquence // Déplacer la tête 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); couHorizontal.write(105); OneSheeld.delay(1500); couHorizontal.write(65); OneSheeld.delay(1500); couHorizontal.write(140); OneSheeld.delay(1500); couHorizontal.write(105); couVertical.write(30); // Régler le volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) { bouche.write(100); OneSheeld.delay(150); bouche.écriture(75); OneSheeld.delay(150); }//pour MusicPlayer.pause(); bouche.écrire (100); OneSheeld.delay(3000); }//else --> terminer le reste de la séquence //----------------------------------- ----------------- // Vérifiez toujours le mode souhaité if (gamepadMode_Enabled ==true) { Terminal.println ("Le système a été interrompu et il activera le mode GamePad maintenant"); gamePadMode(); } // Pin 12 =High --> Gamepad mode else if (imitationMode_Enabled ==true) { Terminal.println ("Le système a été interrompu et il activera le mode imitation maintenant"); imitationMode(); } // Pin 13 =High --> Mode Imitation else { // Complétez le reste de la séquence // Déplacez les mains et la tête à 45 degrés Terminal.println("3rd position"); rightArm_Motor1.write(15); rightArm_Motor2.write(180); rightArm_Motor3.write(0) ; leftArm_Motor1.write(180); leftArm_Motor2.write(30); leftArm_Motor3.write(145); couHorizontal.write(65); couVertical.write(30); // Régler le volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) { bouche.write(100); OneSheeld.delay(150); bouche.écriture(75); OneSheeld.delay(150); }//pour MusicPlayer.pause(); bouche.écrire (100); OneSheeld.delay(3000); }//else --> terminer le reste de la séquence //----------------------------------- -------------- // Vérifiez toujours le mode souhaité if (gamepadMode_Enabled ==true) { Terminal.println("Le système a été interrompu et il activera le mode GamePad maintenant"); gamePadMode(); } // Pin 12 =High --> Gamepad mode else if (imitationMode_Enabled ==true) { Terminal.println ("Le système a été interrompu et il activera le mode imitation maintenant"); imitationMode(); } // Pin 13 =High --> Mode Imitation else { // Terminez le reste de la séquence // Déplacez la main droite et dirigez-vous vers 135 degrés Terminal.println("4th 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); couHorizontal.write(140); couVertical.write(30); // Régler le volume// MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) { bouche.write(100); OneSheeld.delay(150); bouche.écriture(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

Schémas


Processus de fabrication

  1. Comment les robots de pulvérisation améliorent la cohérence
  2. Comment les robots de peinture réduisent les retouches
  3. Comment réduire le coût de reprise dans la fabrication
  4. Quelle est la réalité de la vision robotique ?
  5. Qu'est-ce qu'un robot à programmation automatique ?
  6. Robot industriel
  7. Garder les robots occupés
  8. Comment constituer l'équipe de mise en œuvre ERP parfaite
  9. Quel est l'avenir de l'automatisation ?