Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

So bauen Sie Sauron, den Herrn der Roboter

Komponenten und Verbrauchsmaterialien

Arduino Mega 2560
× 1
1Sheeld
× 1
Android-Gerät
× 1

Notwendige Werkzeuge und Maschinen

Laserschneider (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Sind Sie ein Fan der Filmreihe Herr der Ringe? Dann kennst du "Sauron" bestimmt!

In diesem Projekt werden wir einen halbhumanoiden Roboter von menschlicher Größe bauen, der wie Sauron aussieht :)

Der Roboter hat zwei 3 DOF Arme und einen 3 DOF Kopf und eine feste Basis. Der Roboter Sauron kann in drei Modi betrieben werden und Sie können zwischen diesen Modi wechseln, indem Sie zwei Druckknöpfe verwenden, die an zwei digitalen Eingangspins angebracht sind:

1. Standby-Modus Dieser Modus um den Roboter in jedem Fall zu zeigen. Der Roboter führt eine Abfolge von Bewegungen aus, um die Teilnehmer anzuziehen.

2. Gamepad-Modus In diesem Modus kann der Veranstaltungsteilnehmer den Roboter mit dem Gamepad-Schild der 1Sheeld-Anwendung steuern.

3. Nachahmungsmodus In diesem Modus kann der Roboter die Bewegungen der Veranstaltungsteilnehmer imitieren, wie das Kind in Real Steal Movie. Sie tragen also Handschuhe mit Ihrem darauf befestigten Smartphone und das Arduino liest die Werte Ihrer Smartphone-Sensoren wie Ausrichtung und Gyroskop aus und verwendet diese Werte dann, um die Arme des Roboters zu steuern.

Ich habe dieses Projekt gemacht, um an der New York Maker Faire teilzunehmen, um Kinder glücklich zu machen und sie dazu zu inspirieren, moderne Technologien zu verwenden, insbesondere Plattformen wie Arduino und 1Sheeld zu entwickeln, um ihre Filmfiguren wie ATOM im Real Steal-Film oder Sauron aus Der Herr der Ringe zu bauen Filmreihe. Ich habe alle benötigten Dateien (CAD-Zeichnungen, Schaltpläne und Layouts, Arduino-Codes und dxf-Dateien für Laserschneider) beigefügt, um jedem zu helfen, seinen eigenen Sauron zu bauen :)

Lasst uns anfangen, den Herrn der Roboter zu bauen.

Schritt 1:Den Kopf des Roboters bauen

Um Zeit und Mühe zu sparen, habe ich beschlossen, das Rad nicht neu zu erfinden, also habe ich, anstatt einen neuen Roboterkopf zu entwickeln, diesen fantastischen Open-Source-Roboterkopf "Fritz" von xyzbot verwendet. Ich lade ihre Lasercutter-Dateien herunter und habe dann einen Lasercutter in einem nahe gelegenen Makerspace verwendet, um die Kopfteile zu schneiden. In meinem Fall habe ich versucht, die Zeit und die Kosten zu reduzieren, also habe ich den 3D-Druck der Augenteile übersprungen, dann die Lippen und die Augenbrauen .

Ich habe 3mm Sperrholzplatte verwendet, um die Kopfteile zu implementieren, nachdem Sie diese Teile mit dem Laserschneider geschnitten haben, folgen Sie bitte dem beigefügten Video, um den Bausatz zusammenzubauen, aber achten Sie auf diese Punkte:

1. Sie überspringen die Montage der Basis.

2. Sie überspringen alle Schritte im Zusammenhang mit den 3D-gedruckten Teilen der Augen.

3. Du überspringst alle Schritte im Zusammenhang mit den Augenbrauen und den Lippen.

Open_Source_Files.zip FFRDB2LIKJ8MS1G.dxf

Schritt 2:Aufbau des Roboterkörpers

Wie üblich baue ich meine Projekte so auf, dass sie tragbar sind, damit sie in kurzer Zeit leicht zusammengebaut werden können, wenn ich damit reise, um an einer Veranstaltung wie der Maker Faire teilzunehmen, also habe ich den Körper des Roboters aus Artelon-Stäben und 3 mm Sperrholzplatten gebaut.

Ich habe Tongue and Groove Joints verwendet, um die Brust mit den Schultern, dem Nacken und dem Rücken zu fixieren. Dann habe ich 4 mm x 20 mm Schrauben verwendet, um den Holzrahmen mit Artelon-Skelett zu befestigen, und 12 mm x 30 mm-Schrauben, um das Artelon-Skelett mit der Roboterbasis zu befestigen. Ich habe 4 mm x 10 mm Schrauben verwendet, um die Servomotoren mit Holzrahmen zu befestigen. Das Artelon-Skelett besteht aus 5 Teile:

1. Die Basisrute besteht aus 50mm Artelon-Stab.

2. Das Skelett besteht aus 25mm Artelon-Stab.

3.Die Breitenstäbe -> der Roboter hat 3 Teile, um die Brust mit dem Rücken mit Hilfe des Artelon-Skeletts zu fixieren, diese Teile bestehen aus 15mm Artelon-Stab.

Weitere Informationen zur Herstellung all dieser Teile finden Sie in den beigefügten Zeichnungen.

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

Schritt 3:Erstellen der Roboterbasis

  • Ich habe Solidworks verwendet, um diese Basis zu entwerfen, um den Roboter an meinem Schreibtisch zu befestigen. Sie können die drei Schrauben verwenden, um ihn am Schreibtisch zu befestigen, oder Sie können zwei 4-Zoll-C-Klemmen verwenden.
  • Ich habe 6 mm Blech verwendet, um diese Basis herzustellen, und ich habe diese Öffnungen gemacht, um das Gewicht zu reduzieren.
  • Ich habe eine 12 mm x 30 mm Schraube verwendet, um die Basis mit dem Artelon-Skelett zu befestigen.
  • Sie können die angehängte .dxf-Datei verwenden, um Ihre zu implementieren.
FMZODFWIKMXHHIV.dxf

Schritt 4:Bauen der Roboterarme

Die Arme des Roboters waren die größte Herausforderung bei diesem Projekt. Ich wollte, dass sie modular und leicht zusammen- und auseinanderbaubar sind, damit ich mit dem Roboter in die USA reisen kann.

Ich wollte, dass diese Arme universell sind und ich sie leicht modifizieren kann. Wenn ich möchte, dass dieser Roboter ein Pirat ist, kann ich ein Schwert und einen Haken verwenden und wenn ich möchte, dass der Roboter ein Boxer ist, wie Atom im Real Steal-Film, kann ich zwei Fäuste hinzufügen und ich kann zwei Greifer hinzufügen, um ihn zu einem Allzweck zu machen Roboter, also habe ich das Unterarmgelenk für diesen Zweck entworfen.

Ich habe 3 mm Sperrholzplatten verwendet, um den Armrahmen und Aluminium-Pfannenneigung für die Schultergelenke zu implementieren, dann habe ich Balsaplatten verwendet, um die Waffen, das Schwert und den Haken zu schneiden.

Ich habe Solidworks verwendet, um das erforderliche Drehmoment zu berechnen, und das Ergebnis war, dass ich Servomotoren mit 3 kg / cm verwenden musste, aber ich habe größere Motoren verwendet, damit der Roboter etwas hebt. Anstatt viel auf der Drehmaschine zu bearbeiten, um den Unterarm zu implementieren Gelenke Ich habe Autodesk 123D Make verwendet, um sie in ein Rack mit Scheiben zu teilen, und dann habe ich den Laserschneider verwendet, um sie zu schneiden.

Ich habe das Roboterarmdesign auf Solidworks angehängt, damit Sie Ihre Änderungen vornehmen und das Drehmoment berechnen können.

Schritt 5:Sauron Helm und Rüstung Cosplay

Bis jetzt sieht der Roboter aus wie ATOM aus dem echten Steal-Film, lass ATOM helfen, Sauron zu sein :D

Mein Freund Kareem half mir, das Cosplay zu implementieren, das wir diesen fantastischen Anweisungen folgten, um den Helm und die Rüstung des Roboters zu bauen, aber ich modifizierte sie leicht, um sie an die Roboterabmessungen anzupassen.

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

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

Wenn du Fragen zum Cosplay-Teil hast, kannst du ihn über seine FB-Seite stellen

Danke an Nate Space.

Schritt 6:Die Elektronik des Roboters

1. Ich habe Arduino Mega mit 1Sheeld verwendet, um die Arme und Kopf-Servomotoren des Roboters zu steuern.

2. Ich habe ein 5V / 5A-Netzteil verwendet, um die Motoren und den Arduino zu versorgen.

3. Ich habe ein kleines Steckbrett verwendet, um alle Motoren Vcc und GND zusammen mit der Stromversorgung zu verbinden

4. Ich habe 1Sheeld verwendet, um den Roboter mit meinem Smartphone zu steuern. 1Sheeld ist eine Rapid-Prototyping-Plattform für Arduino, mit der Sie die Sensoren und Fähigkeiten Ihres Smartphones nutzen und in Ihren Arduino-Projekten verwenden können. Im Grunde ist es ein Hardware-Shield, das auf Ihrem Arduino-Board sitzt und über Bluetooth mit dieser Android-App kommuniziert, um Daten zwischen ihm und Ihrem Smartphone zu übertragen.

1Sheeld Mobile Application hat eine lange Liste von Schilden. Sie sollten Gamepad-Schild, Orientierungsschild, Musik-Player-Schild, Terminal-Schild und die Umschalttaste aus dieser Liste auswählen.

1. Gamepad-Schild Dies ist eine GUI auf meinem Smartphone, die über einige Tasten wie den PlayStation-Joystick verfügt und über Bluetooth mit Arduino verbunden ist. Ich habe damit die Servomotoren manuell gesteuert. Wenn Sie eine beliebige Taste vom Gamepad-Schild drücken, sendet die Anwendung Daten an 1Sheeld, dann steuert Arduino die Servomotoren der Arme und des Kopfes des Roboters.

2. Orientierungsschild :Ich trage Handschuhe mit meinem darauf befestigten Smartphone, dann bilde ich die Werte von den Smartphone-Sensoren ab, um sie als Winkel an die Servomotoren zu senden.

3. Musikplayer-Schild: Ich benutze den Musik-Player-Schild, um einen Soundtrack mit Sauron-Stimme abzuspielen, wenn er seinen Mund auf und ab bewegt.

4. Schaltflächenschild: Ich verwende dieses Schild, um den gewünschten Modus auszuwählen, anstatt physische Drucktasten hinzuzufügen

5. Terminal-Abschirmung: Ich verwende dieses Shield anstelle des seriellen Arduino IDE-Monitors, da 1Sheeld nicht gleichzeitig mit dem PC und dem Bluetooth-Modul kommunizieren kann.

Schritt 7:Der Arduino-Code

Schritt 1: Platzieren Sie Ihr 1Sheeld auf Ihrem Arduino-Board und schließen Sie das Arduino an Ihren Laptop oder PC an.

Schritt 2: Laden Sie die 1Sheeld-Anwendung auf Ihr Smartphone herunter. Die App ist im Google Play Store unter http://1sheeld.com/app

verfügbar

Schritt 3: Laden Sie die 1Sheeld-Bibliothek herunter Laden Sie die OneSheeld-Bibliothek über diesen Link auf Ihren Computer herunter.

Schritt 4: Entpacken Sie den Ordner, kopieren Sie ihn und fügen Sie ihn in Ihr Arduino-Bibliotheksverzeichnis ein.

Schritt 5: Öffnen Sie meine Arduino-Skizze (Sie finden sie in den angehängten Dateien)

Schritt 6: Laden Sie Ihre Skizze hoch

Hier kommt der wichtigste Teil des gesamten Tutorials, schalten Sie 1Sheeld in den Uploading-Modus (dies ist der Schalter mit der Bezeichnung UART Switch auf dem Board), bevor Sie Ihre Skizze auf das Arduino-Board hochladen, um serielle Konflikte zwischen 1Sheeld und Arduino zu vermeiden, und drücken Sie dann die Schaltfläche Hochladen in der IDE.

Der Upload-Modus wird eingeschaltet, wenn der UART-Schalter vom 1Sheeld-Logo weggedrückt wird. Nachdem Sie den Upload abgeschlossen haben, müssen Sie 1Sheeld wieder in den Betriebsmodus schalten.

Nicht vergessen! Wenn Sie den UART-Schalter nicht zurück in den Betriebsmodus schalten, funktioniert Ihr Projekt nicht richtig, da Sie keine Kommunikation zwischen 1Sheeld und dem Arduino-Board haben. Der Betriebsmodus wird eingeschaltet, wenn der UART-Schalter am nächsten zum 1Sheeld-Logo gedrückt wird.

Schritt 7: 1Sheeld-Anwendung verwenden Öffnen Sie die 1Sheeld-Anwendung auf Ihrem Android-Smartphone. Die Anwendung sucht zuerst über Bluetooth nach Ihrem 1Sheeld, es dauert ein paar Sekunden und das Telefon findet es. Sobald es auf Ihrem Bildschirm als 1Sheeld #xxxx angezeigt wird, müssen Sie den Pairing-Code eingeben (der Standard-Pairing-Code ist 1234) und über Bluetooth eine Verbindung zu 1Sheeld herstellen.

HINWEIS: Stellen Sie bei Problemen sicher, dass Bluetooth für Ihr Android-Telefon aktiviert ist und sich das Android-Telefon in der Nähe Ihres 1Sheeld befindet.

Schritt 8: Wähle Gamepad-Schild, Orientierungs-Schild, Musik-Player-Schild und Umschaltknopf-Schild und Terminal-Schild aus der Schildliste und drücke auf das Mehrfachschild-Symbol oben rechts in der App.

Schritt 9: Sobald Sie den Roboter mit Strom versorgt haben, wird er standardmäßig im Standby-Modus betrieben, wenn Sie ihn manuell mit dem Gamepad steuern möchten, greifen Sie auf das Umschalttastenschild zu und wählen Sie Pin 2 aus, und drücken Sie dann Ein. Wenn Sie zum Standby-Modus zurückkehren möchten, drücken Sie OFF.

Schritt 10: Wenn Sie es manuell mit dem Orientierungssensor steuern möchten, greifen Sie auf das Umschalttastenschild zu und wählen Sie Pin 3 aus, und drücken Sie dann Ein. und stellen Sie sicher, dass der Status von Pin 2 LOW ist.

F5KJZGXIKMXG3DG.ino

Schritt 8:Sauron im Maker Faire New York

Lasst uns jetzt Sauron zwischen seinen Fans in Maker Faire New York sehen :)

Schritt 9:Zukünftige Arbeit

Grüßt dieses anweisbare: Ich werde ein Video für mich aufnehmen, während ich den Roboter zusammenbaue und dann die drei Modi ausprobiere.

Grüße den Kopf des Roboters: In dieser Iteration habe ich beschlossen, die Kosten zu reduzieren, also habe ich nur 3 Motoren im Kopf verwendet Schale)

Grüße die Basis des Roboters: Ich werde die feste Basis durch eine Roboterbasis mit 4 Mecanum-Rädern ersetzen, damit sich der Roboter frei bewegen kann. Ich habe die Konstruktion der Basis auf Solidworks abgeschlossen, aber ich habe keine Zeit, sie mit dem Roboter zu verschmelzen.

Code

  • Sauron Arduino-Code
Sauron Arduino CodeArduino
#define CUSTOM_SETTINGS#define INCLUDE_GAMEPAD_SHIELD#define INCLUDE_MUSIC_PLAYER_SHIELD#define INCLUDE_TERMINAL_SHIELD#define INCLUDE_ORIENTATION_SENSOR_SHIELD/* 1Sheeld-Bibliothek einschließen. */#include #include Servo rightArm_Motor1;Servo rightArm_Motor2;Servo rightArm_Motor3;Servo leftArm_Motor1;Servo leftArm_Motor2;Servo leftArm_Motor3;Servo neckHorizontal;Servo neckVertical;Servo Mouth;const int modePin1 =2 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----;//--- ----------------------------------- Einrichtung ungültig -------------- --------------------------------------void setup(){ // Kommunikation starten OneSheeld.begin (); // Einige Pins als Ausgang setzen pinMode (modePin1, INPUT); pinMode (modePin2, INPUT); // Setze Led als Ausgang und HIGH "Saurons Eye" pinMode (ledPin1, OUTPUT); PinMode (ledPin2, AUSGANG); digitalWrite (ledPin1, HOCH); digitalWrite (ledPin2, HOCH); // Digitale Pins verwendbar für Interrupts bei Verwendung von Mega, Mega2560, MegaADK (2, 3, 18, 19, 20, 21) attachInterrupt(digitalPinToInterrupt(modePin1), gampadMode_ChangeISR, CHANGE); attachInterrupt (digitalPinToInterrupt (modePin2), imitationMode_ChangeISR, CHANGE); /* Verbinden Sie die Signalpins (Orange) von den Motoren direkt mit den Arduino Mega PWM-Pins, dann versorgen Sie die Motoren von der Stromversorgung NICHT vom Arduino und verbinden Sie dann beide Erdungen von Arduino und Stromversorgung miteinander */ 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); mund.attach(12); // Ausgangsposition 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);} //---------------------------------- Void Schleife ---- ----------------------------------------------------------- Leere Schleife ( ) { modeState1 =digitalRead (modePin1); modeState2 =digitalRead (modePin2); // Immer den gewünschten Modus prüfen if (modeState1 ==HIGH) { Terminal.println("GamePad Mode was selected"); gamePadMode(); } //Pin 12 =High --> Gamepad-Modus else if (modeState2 ==HIGH) { Terminal.println ("Imitation Mode wurde ausgewählt"); Nachahmungsmodus(); } //Pin 13 =High --> Imitation Mode else { Terminal.println("Standby Mode wurde ausgewählt"); Standby Modus(); }} //void loop //----------------------------------------- void Standby-Modus ---------------------------------------------------------- Standby-Modus ungültig ( ) {// Standby-Modus Terminal.println ("Standby-Modus aktiviert"); // Ausgangsposition Terminal.println("1. 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); // Lautstärke einstellen // MusicPlayer.setVolume (10); MusikPlayer.play(); für (int i =0; i <=19; i ++) {Mund.write (100); OneSheeld.delay(150); mund.schreiben(75); OneSheeld.delay(150); } // für MusicPlayer.pause(); mund.write(100); OneSheeld.delay(3000); //------------------------------------------------ ---- // Überprüfen Sie immer den gewünschten Modus if (gamepadMode_Enabled ==true) { Terminal.println("System was Interrupted and It Will Activated GamePad Mode Now"); gamePadMode(); } //Pin 12 =High --> Gamepad-Modus else if (imitationMode_Enabled ==true) { Terminal.println("System wurde unterbrochen und es wird jetzt den Imitationsmodus aktivieren"); Nachahmungsmodus(); } //Pin 13 =High --> Imitation Mode else { // Den Rest der Sequenz abschließen // Kopf 90 bewegen --> 0 --> 180 --> 90 Terminal.println ("2. 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); // Lautstärke einstellen // MusicPlayer.setVolume (10); MusikPlayer.play(); für (int i =0; i <=19; i ++) {Mund.write (100); OneSheeld.delay(150); mund.schreiben(75); OneSheeld.delay(150); } // für MusicPlayer.pause(); mund.write(100); OneSheeld.delay(3000); }//else --> vervollständige den Rest der Sequenz //---------------------------------- ----------------- // Überprüfen Sie immer den gewünschten Modus if (gamepadMode_Enabled ==true) { Terminal.println("System was Interrupted And It Will Activated GamePad Mode Now"); gamePadMode(); } //Pin 12 =High --> Gamepad-Modus else if (imitationMode_Enabled ==true) { Terminal.println("System wurde unterbrochen und es wird jetzt den Imitationsmodus aktivieren"); Nachahmungsmodus(); } // Pin 13 =High --> Imitation Mode else {// Vervollständigen Sie den Rest der Sequenz // Bewegen Sie die Hände und den Kopf auf 45 Grad Terminal.println ("3. 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); neckHorizontal.write(65); neckVertical.write(30); // Lautstärke einstellen // MusicPlayer.setVolume (10); MusikPlayer.play(); für (int i =0; i <=19; i ++) {Mund.write (100); OneSheeld.delay(150); mund.schreiben(75); OneSheeld.delay(150); } // für MusicPlayer.pause(); mund.schreiben (100); OneSheeld.delay(3000); }//else --> vervollständige den Rest der Sequenz //---------------------------------- -------------- // Überprüfen Sie immer den gewünschten Modus if (gamepadMode_Enabled ==true) { Terminal.println("System was Interrupted and It Will Activated GamePad Mode Now"); gamePadMode(); } //Pin 12 =High --> Gamepad-Modus else if (imitationMode_Enabled ==true) { Terminal.println ("Das System wurde unterbrochen und es wird jetzt der Nachahmungsmodus aktiviert"); Nachahmungsmodus(); } // Pin 13 =High --> Imitation Mode else {// Vervollständigen Sie den Rest der Sequenz // Bewegen Sie die rechte Hand und gehen Sie auf 135 Grad Terminal.println ("4. 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(140); 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 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

Schaltpläne


Herstellungsprozess

  1. Wie Sprühroboter die Konsistenz verbessern
  2. Wie Lackierroboter Nacharbeiten reduzieren
  3. So senken Sie die Kosten für Nacharbeiten in der Fertigung
  4. Was ist die Realität von Robot Vision?
  5. Was zum Teufel ist ein selbstprogrammierender Roboter?
  6. Industrieroboter
  7. Die Roboter auf Trab halten
  8. So bauen Sie das perfekte ERP-Implementierungsteam auf
  9. SCARA-Roboter | So bauen Sie Ihren eigenen Arduino-basierten Roboter
  10. Wie rosig sieht die Zukunft der Automatisierung aus?