Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Como Construir Sauron, o Senhor dos Robôs

Componentes e suprimentos

Arduino Mega 2560
× 1
1Sheeld
× 1
Dispositivo Android
× 1

Ferramentas e máquinas necessárias

Cortador a laser (genérico)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Você é fã da série de filmes Lord Of The Rings? Se sim, com certeza você conhece "Sauron"!

Neste projeto, construiremos um robô semi-humanóide de tamanho humano parecido com Sauron :)

O robô tem dois braços de 3 DOF e uma cabeça de 3 DOF e uma base fixa. O robô Sauron pode operar em três modos e você pode alternar entre esses modos usando dois botões conectados a dois pinos de entrada digital:

1 Modo de espera Este modo para mostrar o invólucro do robô em qualquer evento, o robô executa uma sequência de movimentos para atrair os participantes.

2. Modo de controle de jogo Neste modo, o participante do evento pode controlar o robô usando o escudo do Gamepad do aplicativo 1Sheeld.

3. Modo de imitação Neste modo, o robô pode imitar os movimentos do participante do evento como a criança em Real Steal Movie. Portanto, você usará luvas com o seu smartphone fixado nele e o Arduino lerá os valores dos sensores do seu smartphone, como orientação e giroscópio, e usará esses valores para controlar os braços do robô.

Eu fiz este projeto para participar do New York Maker Faire para deixar as crianças felizes e inspirá-las a usar tecnologias modernas, especialmente desenvolvendo plataformas como Arduino e 1Sheeld para construir seus personagens de filme como ATOM no filme Real Steal ou Sauron de O Senhor dos Anéis série de filmes. Incluí todos os arquivos necessários (desenhos CAD, esquemas e layouts de circuitos, códigos Arduino e arquivos dxf para cortador a laser) para ajudar qualquer um a construir seu próprio Sauron :)

Vamos começar a construir o Lord Of The Robots.





Etapa 1:construindo a cabeça do robô


Para economizar tempo e esforço, decidi não reinventar a roda, então, em vez de projetar um novo cabeçote robótico, usei este fantástico cabeçote robótico de código aberto "Fritz" da xyzbot. Eu baixei os arquivos do cortador a laser e usei um cortador a laser em um makerpace próximo para cortar as partes da cabeça. No meu caso, tentei reduzir o tempo e o custo, então pulei a impressão 3D das partes dos olhos e depois ignorei os lábios e as sobrancelhas .

Usei folha de compensado de 3mm para implementar as peças do cabeçote, após cortar essas peças com o cortador a laser siga o vídeo anexo para montar o kit, mas tome cuidado com estes pontos:

1. Você vai pular a montagem da base.

2. Você irá pular todas as etapas relacionadas às partes impressas em 3D dos olhos.

3. Você pulará todas as etapas relacionadas às sobrancelhas e aos lábios.
Open_Source_Files.zip FFRDB2LIKJ8MS1G.dxf





Etapa 2:Construindo o corpo do robô


Como de costume, construo meus projetos para serem portáteis para serem facilmente montados em um curto espaço de tempo se eu for viajar com ele para participar de um evento como o Maker Faire, então construí o corpo do robô usando hastes Artelon e placas de compensado de 3 mm.

Usei Tongue and Groove Joints para fixar o peito com os ombros, pescoço e costas. Então usei parafusos 4mm x 20mm para fixar a moldura de madeira com o esqueleto Artelon e parafuso 12mm x 30mm para fixar o esqueleto Artelon com a base do robô. Usei parafusos 4mm x 10mm para fixar os servo motores com moldura de madeira. O esqueleto Artelon consiste em 5 partes:

1. A haste básica é feito de haste Artelon de 50 mm.

2. O esqueleto é feito de haste Artelon de 25 mm.

3. A largura das hastes -> o robô possui 3 partes para fixar o tórax com as costas com a ajuda do esqueleto Artelon, essas partes são feitas de haste Artelon de 15mm.

Você pode verificar os desenhos em anexo para obter mais informações sobre a fabricação de todas essas peças.
F7DSZV7IKMXH73S.pdf FI5J5H6IKMXH73X.pdf FYPCBU7IKMXH748.pdf FXN90VDIKMXH75Z.pdf F3LCJDQIKMXH763.pdf FZ2QN61IKMXH769.pdf FA2UEZBIKMXH90J.zip





Etapa 3:Criação da base do robô

  • Usei o Solidworks para projetar esta base para fixar o robô na minha mesa, você pode usar os três parafusos para fixá-lo na mesa ou você pode usar dois grampos C de 4 polegadas.
  • Usei uma folha de metal de 6 mm para fabricar esta base e fiz essas aberturas para reduzir seu peso.
  • Usei parafuso de 12 mm x 30 mm para fixar a base com o esqueleto Artelon.
  • Você pode usar o arquivo .dxf anexado para implementar o seu.
FMZODFWIKMXHHIV.dxf





Etapa 4:construindo os braços do robô


Os braços do robô foram o maior desafio neste projeto. Eu queria que eles fossem modulares e facilmente montados e desmontados o máximo possível para que eu pudesse viajar com o robô para os Estados Unidos.

Eu queria que esses braços fossem de uso geral e posso modificá-los facilmente. Se eu quisesse que esse robô fosse um pirata, posso usar uma espada e um gancho e se eu quisesse que o robô fosse um boxeador como o Atom no filme Real Steal, posso adicionar dois punhos e duas garras para torná-lo um uso geral robô, então projetei a articulação do antebraço para esse fim.

Usei folhas de compensado de 3mm para implementar a estrutura do braço e inclinação de alumínio para as articulações dos ombros, então usei folhas de Balsa para cortar as armas, a espada e o gancho.

Usei o Solidworks para calcular o torque necessário e o resultado foi que preciso usar servo motores de 3kg / cm, mas usei motores maiores para fazer o robô levantar alguma coisa. Em vez de fazer muita usinagem no torno para implementar o antebraço juntas Usei o Autodesk 123D Make para dividi-las em uma prateleira de fatias, depois usei o cortador a laser para cortá-las.

Anexei o projeto do braço robótico no Solidworks para que você possa fazer suas modificações e calcular o torque.





Etapa 5:capacete Sauron e cosplay de armadura


Até agora, o robô se parece com o ATOM do filme Roubar real, vamos ajudar o ATOM a ser Sauron:D

Meu amigo Kareem me ajudou a implementar o cosplay, seguimos esses fantásticos instrutíveis para construir o capacete e a armadura do robô, mas eu os modifiquei um pouco para se ajustarem às dimensões do robô.

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

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

Se você tiver alguma dúvida sobre a parte do cosplay, pode perguntar a ele por meio de sua página no FB

Graças a Nate Space.





Etapa 6:a eletrônica do robô


1. Usei o Arduino Mega com 1Sheeld para controlar os braços do robô e os servomotores principais.

2. Usei uma fonte de alimentação 5V / 5A para alimentar os motores e o Arduino.

3. Usei um pequeno breadboard para conectar todos os motores Vcc e GND junto com a fonte de alimentação

4. Usei 1Sheeld para controlar o robô usando meu smartphone.1Sheeld é uma plataforma de prototipagem rápida para Arduino que permite acessar os sensores e recursos de seu smartphone e permite usá-los em seus projetos Arduino. Basicamente, é um escudo de hardware que fica em cima de sua placa Arduino e se comunica por Bluetooth com este aplicativo Android, para transferir dados entre ele e seu smartphone.

O aplicativo móvel 1Sheeld tem uma longa lista de escudos, você deve selecionar escudo do gamepad, escudo de orientação, escudo do reprodutor de música, escudo do terminal e botão de alternância nessa lista.

1. Escudo do Gamepad que é uma GUI no meu smartphone que tem alguns botões como joystick de PlayStation e conectado ao Arduino via Bluetooth e usei para controlar os servo motores manualmente. Quando você pressiona qualquer botão do escudo do Gamepad, o aplicativo enviará dados para 1Sheeld e o Arduino controlará os servo motores dos braços e da cabeça do robô.

2. Escudo de Orientação :Eu uso uma luva com meu smartphone fixado nele, em seguida, mapeio os valores dos sensores do smartphone para enviá-los como ângulos para os servo motores.

3. Escudo do reprodutor de música: Eu uso a proteção do reprodutor de música para tocar uma trilha sonora que tem a voz de Sauron quando ele move sua boca para cima e para baixo.

4. Botão de alternar escudo: Eu uso este escudo para escolher o modo desejado em vez de adicionar botões físicos

5. Blindagem do Terminal: Eu uso este escudo em vez de usar o monitor serial IDE Arduino porque 1Sheeld não pode se comunicar com o PC e o módulo Bluetooth ao mesmo tempo.





Etapa 7:o código do Arduino


Etapa 1: Coloque seu 1Sheeld em sua placa Arduino e, em seguida, conecte o Arduino ao seu laptop ou PC.

Etapa 2: Baixe o aplicativo 1Sheeld em seu smartphone. O aplicativo está disponível na Google Play Store em http://1sheeld.com/app

Etapa 3: Baixe a biblioteca 1Sheeld Baixe a biblioteca OneSheeld para o seu computador por meio deste link.

Etapa 4: Extraia a pasta, copie-a e cole-a no diretório de bibliotecas do Arduino.

Etapa 5: Abra meu Arduino Sketch (você o encontrará nos arquivos anexados)

Etapa 6: Faça upload do seu esboço

Aí vem a parte mais importante de todo o tutorial, mude 1Sheeld para o modo Uploading (este é o switch rotulado UART Switch na placa) antes de fazer upload de seu esboço para a placa Arduino para evitar conflitos seriais entre 1Sheeld e Arduino e pressione o botão Upload no IDE.

O modo de upload é ativado quando a chave UART é afastada do logotipo 1Sheeld. Depois de concluir o upload, você precisa alternar 1Sheeld de volta para o modo operacional.

Não se esqueça! Se você não mudar o switch UART de volta para o modo operacional, seu projeto não funcionará corretamente, pois você não terá comunicação entre 1Sheeld e a placa Arduino. O modo de operação é ativado quando a chave UART é pressionada o mais próximo possível do logotipo 1Sheeld.

Etapa 7: Use o aplicativo 1Sheeld Abra o aplicativo 1Sheeld em seu smartphone Android. O aplicativo fará a varredura primeiro por Bluetooth para o seu 1Sheeld, levará alguns segundos e o telefone o encontrará. Assim que aparecer na tela como 1Sheeld #xxxx, você deverá inserir o código de emparelhamento (o código de emparelhamento padrão é 1234) e conectar-se a 1Sheeld via Bluetooth.

NOTA: Se você estiver tendo problemas, certifique-se de que o Bluetooth está ligado em seu telefone Android e que o telefone Android está perto de seu 1Sheeld.

Etapa 8: Selecione Gamepad Shield, Orientation Shield, Music Player Shield e botão Alternar Shield e Terminal shield da lista de escudos e pressione o ícone de múltiplos escudos no canto superior direito do aplicativo.

Etapa 9: Depois de ligar o robô, ele funcionará no modo de espera por padrão se você quiser controlá-lo manualmente usando o Gamepad, acesse a proteção do botão de alternância e escolha o pino 2 e pressione Ligar. Se você quiser voltar ao modo de espera, pressione OFF.

Etapa 10: Se você quiser controlá-lo manualmente usando o Sensor de Orientação, acesse a proteção do botão de alternância e escolha o pino 3 e pressione Ligado. e certifique-se de que o status do pino 2 seja BAIXO.
F5KJZGXIKMXG3DG.ino





Etapa 8:Sauron na Maker Faire New York


Agora vamos assistir Sauron entre seus fãs no Maker Faire New York :)





Etapa 9:Trabalho futuro


Atenciosamente, este instrutível: Vou gravar um vídeo para mim enquanto monto o robô e, em seguida, experimento os três modos .

Em consideração à cabeça do robô: Nesta iteração eu decidi reduzir o custo então usei apenas 3 motores na cabeça, na próxima iteração eu irei adicionar o resto dos motores e vou imprimir em 3D as partes dos olhos como (pálpebra, sobrancelha, eyering, clevis pin, eyeball Concha)

Com relação à base do robô: Vou substituir a base fixa por uma base de robô de 4 rodas mecanum para dar ao robô a capacidade de se mover livremente. Terminei de projetar a base no Solidworks, mas não tenho tempo de fundi-la com o robô.

Código

  • Código Sauron Arduino
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 / * Inclui a biblioteca 1Sheeld. * / # include  #include  Servo rightArm_Motor1; Servo rightArm_Motor2; Servo rightArm_Motor3; Servo leftArm_Motor1; Servo leftArm_Motor2; Servo leftArm_Motor3; Servo bocalHorientHormotor1; Constante pescoço modo; 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; // ------- ----------------------------------- configuração vazia ------------- -------------------------------------- void setup () {// Iniciar comunicação OneSheeld.begin (); // Define alguns pinos como saída pinMode (modePin1, INPUT); pinMode (modePin2, INPUT); // Define Led como saída e HIGH "Saurons Eye" pinMode (ledPin1, OUTPUT); pinMode (ledPin2, OUTPUT); digitalWrite (ledPin1, HIGH); digitalWrite (ledPin2, HIGH); // Pinos digitais utilizáveis ​​para interrupções ao usar Mega, Mega2560, MegaADK (2, 3, 18, 19, 20, 21) attachInterrupt (digitalPinToInterrupt (modePin1), gampadMode_ChangeISR, CHANGE); attachInterrupt (digitalPinToInterrupt (modePin2), imitationMode_ChangeISR, CHANGE); / * Conecte os pinos de sinal (laranja) dos motores aos pinos do Arduino mega PWM diretamente, em seguida, ligue os motores da fonte de alimentação NÃO do Arduino e conecte ambos os aterramentos do Arduino e a fonte de alimentação um ao outro * / 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.atender (12); // posição 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);} // ---------------------------------- void loop ---- ----------------------------------------------- void loop ( ) {modeState1 =digitalRead (modePin1); modeState2 =digitalRead (modePin2); // Sempre verifique o modo desejado if (modeState1 ==HIGH) {Terminal.println ("Modo GamePad foi selecionado"); gamePadMode (); } // Pin 12 =High -> modo Gamepad else if (modeState2 ==HIGH) {Terminal.println ("Modo de imitação foi selecionado"); imitationMode (); } // Pino 13 =Alto -> Modo de imitação else {Terminal.println ("Modo de espera foi selecionado"); modo de espera(); }} // loop void // ----------------------------------------- void Modo de espera --------------------------------------------- void standbyMode ( ) {// Modo de espera Terminal.println ("Modo de espera ativado"); // posição inicial Terminal.println ("1ª posição"); 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); // Definir o volume // MusicPlayer.setVolume (10); MusicPlayer.play (); para (int i =0; i <=19; i ++) {mouth.write (100); OneSheeld.delay (150); boca.escrever (75); OneSheeld.delay (150); } // para MusicPlayer.pause (); boca.escrever (100); OneSheeld.delay (3000); // ------------------------------------------------ ---- // Sempre verifique o modo desejado if (gamepadMode_Enabled ==true) {Terminal.println ("O sistema foi interrompido e ativará o modo GamePad agora"); gamePadMode (); } // Pino 12 =Alto -> modo Gamepad else if (imitationMode_Enabled ==true) {Terminal.println ("O sistema foi interrompido e ativará o modo de imitação agora"); imitationMode (); } // Pino 13 =Alto -> Modo de imitação else {// Complete o resto da sequência // Mova o cabeçote 90 -> 0 -> 180 -> 90 Terminal.println ("2ª posição"); 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); // Definir o volume // MusicPlayer.setVolume (10); MusicPlayer.play (); para (int i =0; i <=19; i ++) {mouth.write (100); OneSheeld.delay (150); boca.escrever (75); OneSheeld.delay (150); } // para MusicPlayer.pause (); boca.escrever (100); OneSheeld.delay (3000); } // else -> complete o resto da sequência // ----------------------------------- ----------------- // Sempre verifique o modo desejado if (gamepadMode_Enabled ==true) {Terminal.println ("O sistema foi interrompido e ativará o modo GamePad agora"); gamePadMode (); } // Pino 12 =Alto -> modo Gamepad else if (imitationMode_Enabled ==true) {Terminal.println ("O sistema foi interrompido e ativará o modo de imitação agora"); imitationMode (); } // Pino 13 =Alto -> Modo de imitação else {// Complete o resto da sequência // Mova as mãos e a cabeça para 45 graus Terminal.println ("3ª posição"); 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); // Definir o volume // MusicPlayer.setVolume (10); MusicPlayer.play (); para (int i =0; i <=19; i ++) {mouth.write (100); OneSheeld.delay (150); boca.escrever (75); OneSheeld.delay (150); } // para MusicPlayer.pause (); boca.escrever (100); OneSheeld.delay (3000); } // else -> complete o resto da sequência // ----------------------------------- -------------- // Sempre verifique o modo desejado if (gamepadMode_Enabled ==true) {Terminal.println ("O sistema foi interrompido e ativará o modo GamePad agora"); gamePadMode (); } // Pino 12 =Alto -> modo Gamepad else if (imitationMode_Enabled ==true) {Terminal.println ("O sistema foi interrompido e ativará o modo de imitação agora"); imitationMode (); } // Pino 13 =Alto -> Modo de imitação else {// Complete o resto da sequência // Mova a mão direita e dirija-se a 135 graus Terminal.println ("4ª posição"); 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); // Definir o volume // MusicPlayer.setVolume (10); MusicPlayer.play (); para (int i =0; i <=19; i ++) {mouth.write (100); OneSheeld.delay (150); boca.escrever (75); OneSheeld.delay (150); } // para MusicPlayer.pause (); boca.escrever (100); OneSheeld.delay (3000); } // else -> complete o resto da sequência // ----------------------------------- ---------------- // Sempre verifique o modo desejado if (gamepadMode_Enabled ==true) {Terminal.println ("O sistema foi interrompido e ativará o modo GamePad agora"); gamePadMode (); } // Pino 12 =Alto -> modo Gamepad else if (imitationMode_Enabled ==true) {Terminal.println ("O sistema foi interrompido e ativará o modo de imitação agora"); 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


Processo de manufatura

  1. Como robôs de pulverização melhoram a consistência
  2. Como os robôs de pintura reduzem o retrabalho
  3. Como reduzir o custo de retrabalho na fabricação
  4. Qual é a realidade da visão do robô?
  5. O que diabos é um robô com autoprogramação?
  6. Robô Industrial
  7. Mantendo os robôs ocupados
  8. Como construir a equipe de implementação de ERP perfeita
  9. Robô SCARA | Como construir seu próprio robô baseado em Arduino
  10. Quão brilhante é o futuro da automação?