산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

로봇의 제왕 Sauron을 만드는 방법

구성품 및 소모품

Arduino Mega 2560
× 1
1쉴드
× 1
Android 기기
× 1

필요한 도구 및 기계

레이저 커터(일반)

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

반지의 제왕 영화 시리즈의 팬입니까? 그렇다면 "사우론"을 아실 것입니다!

이 프로젝트에서 우리는 Sauron과 같은 인간 크기의 반 휴머노이드 로봇을 만들 것입니다 :)

로봇에는 2개의 3DOF 암과 3DOF 헤드 및 고정 베이스가 있습니다. 로봇은 3가지 모드로 작동할 수 있으며 2개의 디지털 입력 핀에 부착된 2개의 푸시 버튼을 사용하여 이러한 모드 사이를 전환할 수 있습니다.

1. 대기 모드 어떤 경우에도 로봇을 케이싱하는 이 모드는 로봇이 참석자를 끌어들이기 위해 일련의 움직임을 수행합니다.

2. 게임 패드 모드 이 모드에서 이벤트 참석자는 1Sheeld 애플리케이션의 게임패드 실드를 사용하여 로봇을 제어할 수 있습니다.

3. 모방 모드 이 모드에서 로봇은 Real Steal Movie에 나오는 아이처럼 이벤트 참석자의 움직임을 모방할 수 있습니다. 따라서 스마트폰을 고정한 상태로 장갑을 끼고 Arduino가 방향 및 자이로스코프와 같은 스마트폰 센서 값을 읽은 다음 이 값을 사용하여 로봇 팔을 제어합니다.

저는 New York Maker Faire에 참가하여 어린이들을 행복하게 만들고 특히 Arduino 및 1Sheeld와 같은 플랫폼을 개발하는 최신 기술을 사용하여 Real Steal 영화의 ATOM이나 반지의 제왕의 Sauron과 같은 영화 캐릭터를 구축하도록 영감을 주기 위해 이 프로젝트를 만들었습니다. 영화 시리즈. 필요한 모든 파일(CAD 도면, 회로도 및 레이아웃, Arduino 코드 및 레이저 커터용 dxf 파일)을 포함하여 누구나 자신만의 Sauron을 구축하는 데 도움이 됩니다. :)

로봇의 제왕 구축을 시작하겠습니다.

1단계:로봇 머리 만들기

시간과 노력을 절약하기 위해 바퀴를 재발명하지 않기로 결정했습니다. 그래서 새로운 로봇 헤드를 설계하는 대신 xyzbot의 환상적인 오픈 소스 로봇 헤드 "Fritz"를 사용했습니다. 레이저커터 파일을 다운받아서 가까운 메이커스페이스에 있는 레이저커터로 머리 부분을 잘라냈어요. 제 경우에는 시간과 비용을 줄이기 위해 눈 부분 3D 프린팅은 건너뛰고 입술과 눈썹은 건너뛰었습니다. .

헤드 부품을 구현하기 위해 3mm 합판 시트를 사용했습니다. 레이저 커터를 사용하여 이러한 부품을 절단한 후 첨부된 비디오를 따라 키트를 조립하되 다음 사항을 주의하세요.

1. 베이스 조립은 생략합니다.

2. 3D 프린팅된 눈 부분과 관련된 모든 단계를 건너뜁니다.

3. 눈썹과 입술과 관련된 모든 단계를 건너뜁니다.

Open_Source_Files.zip FFRDB2LIKJ8MS1G.dxf

2단계:로봇 몸체 만들기

평소와 같이 Maker Faire와 같은 행사에 참석하기 위해 휴대하고 짧은 시간에 쉽게 조립할 수 있도록 프로젝트를 제작하므로 Artelon 막대와 3mm 합판 시트를 사용하여 로봇의 몸체를 만들었습니다.

혀와 그루브 조인트를 사용하여 어깨, 목, 등으로 가슴을 고정했습니다. 그런 다음 4mm x 20mm 나사를 사용하여 Artelon 골격이 있는 나무 프레임을 고정하고 12mm x 30mm 나사를 사용하여 Artelon 골격을 로봇 베이스에 고정했습니다. 4mm x 10mm 나사를 사용하여 나무 프레임으로 서보 모터를 고정했습니다. Artelon 골격은 다음과 같이 구성됩니다. 5개 부분:

1. 기본 막대 50mm Artelon 로드로 제작되었습니다.

2. 해골 25mm Artelon 로드로 제작되었습니다.

3. 너비 막대 -> 로봇은 Artelon 골격의 도움을 받아 등으로 가슴을 고정하는 3개의 부품이 있으며 이 부품은 15mm Artelon 막대로 만들어집니다.

이 모든 부품의 제조에 대한 자세한 내용은 첨부된 도면을 확인하십시오.

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

3단계:로봇 기반 만들기

<울>
  • 나는 Solidworks를 사용하여 로봇을 책상에 고정하기 위해 이 베이스를 설계했습니다. 3개의 나사를 사용하여 책상에 고정하거나 2개의 4인치 C 클램프를 사용할 수 있습니다.
  • 이 베이스를 만들기 위해 6mm 판금을 사용했고 무게를 줄이기 위해 이 구멍을 만들었습니다.
  • 12mm x 30mm 나사를 사용하여 Artelon 골격으로 베이스를 고정했습니다.
  • 첨부된 .dxf 파일을 사용하여 구현할 수 있습니다.
  • FMZODFWIKMXHHIV.dxf

    4단계:로봇 팔 만들기

    로봇의 팔은 이 프로젝트에서 가장 큰 도전 과제였습니다. 로봇과 함께 미국으로 여행할 수 있도록 가능한 한 쉽게 조립 및 분해할 수 있는 모듈식 로봇을 원했습니다.

    나는 이 팔이 범용이고 쉽게 수정할 수 있기를 원했습니다. 이 로봇이 해적이 되기를 원하면 검과 갈고리를 사용할 수 있고 로봇이 Real Steal 영화의 Atom과 같은 복서가 되기를 원하면 두 개의 주먹을 추가할 수 있고 두 개의 그리퍼를 추가하여 범용으로 만들 수 있습니다 그래서 저는 이를 위해 팔뚝 관절을 설계했습니다.

    팔 프레임을 구현하기 위해 3mm 합판 시트를 사용하고 어깨 관절에 알루미늄 팬 틸트를 구현한 다음 발사 시트를 사용하여 무기의 검과 갈고리를 절단했습니다.

    Solidworks를 사용하여 필요한 토크를 계산했고 결과적으로 3kg/cm 서보 모터를 사용해야 했지만 더 큰 모터를 사용하여 로봇이 무언가를 들어 올리도록 했습니다. 팔뚝을 구현하기 위해 선반에서 많은 기계가공을 하는 대신 Autodesk 123D Make를 사용하여 조각 랙으로 분할한 다음 레이저 절단기를 사용하여 절단했습니다.

    수정하고 토크를 계산할 수 있도록 Solidworks에 로봇 팔 디자인을 첨부했습니다.

    5단계:사우론 헬멧과 갑옷 코스프레

    지금까지 로봇은 실제 스틸 영화의 ATOM처럼 생겼습니다. ATOM이 Sauron이 될 수 있도록 도와주세요 :D

    내 친구 Kareem은 로봇의 헬멧과 갑옷을 만들기 위해 이 환상적인 지침을 따라 코스프레를 구현하는 데 도움을 주었지만 로봇 크기에 맞게 약간 수정했습니다.

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

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

    코스프레 부분에 대해 질문이 있는 경우 그의 FB 페이지를 통해 질문할 수 있습니다.

    Nate Space에 감사드립니다.

    6단계:로봇의 전자 장치

    1. 로봇 팔과 헤드 서보 모터를 제어하기 위해 1Sheeld와 함께 Arduino Mega를 사용했습니다.

    2. 5V/5A 전원을 사용하여 모터와 Arduino에 전원을 공급했습니다.

    3. 작은 브레드보드를 ​​사용하여 모든 모터 Vcc 및 GND를 전원 공급 장치와 함께 연결했습니다.

    4. 저는 스마트폰을 사용하여 로봇을 제어하기 위해 1Sheeld를 사용했습니다. 기본적으로 아두이노 보드 위에 위치하며 블루투스를 통해 이 Android 앱과 통신하여 이 앱과 스마트폰 간에 데이터를 전송하는 하드웨어 실드입니다.

    1Sheeld 모바일 애플리케이션에는 긴 실드 목록이 있으므로 이 목록에서 게임패드 실드, 방향 실드, 뮤직 플레이어 실드, 터미널 실드 및 토글 버튼을 선택해야 합니다.

    1. 게임패드 쉴드 이것은 PlayStation 조이스틱과 같은 일부 버튼이 있고 Bluetooth를 통해 Arduino에 연결된 스마트폰의 GUI이며 수동으로 서보 모터를 제어하는 ​​데 사용했습니다. Gamepad Shield에서 아무 버튼이나 누르면 애플리케이션이 1Sheeld로 데이터를 보내고 Arduino가 로봇 팔과 머리의 서보 모터를 제어합니다.

    2. 오리엔테이션 실드 :장갑을 끼고 스마트폰을 고정하고 스마트폰 센서의 값을 매핑하여 서보 모터에 각도로 보냅니다.

    3. 음악 플레이어 보호막: 저는 뮤직 플레이어 실드를 사용하여 사우론이 입을 위아래로 움직일 때 목소리가 나오는 사운드 트랙을 재생합니다.

    4. 토글 버튼 쉴드: 물리적 푸시 버튼을 추가하는 대신 이 방패를 사용하여 원하는 모드를 선택합니다.

    5. 터미널 실드: 원쉴드는 PC와 블루투스 모듈이 동시에 통신할 수 없기 때문에 아두이노 IDE 시리얼 모니터 대신 이 쉴드를 사용합니다.

    7단계:Arduino 코드

    1단계: 1Sheeld를 Arduino 보드에 놓고 Arduino를 노트북이나 PC에 연결하세요.

    2단계: 스마트폰에 1Sheeld 애플리케이션을 다운로드하세요. 이 앱은 Google Play 스토어(http://1sheeld.com/app

    )에서 사용할 수 있습니다.

    3단계: 1Sheeld 라이브러리 다운로드 이 링크를 통해 OneSheeld 라이브러리를 컴퓨터에 다운로드하십시오.

    4단계: 폴더의 압축을 풀고 복사하여 Arduino 라이브러리 디렉터리에 붙여넣습니다.

    5단계: 내 Arduino Sketch를 엽니다(첨부 파일에서 찾을 수 있음)

    6단계: 스케치 업로드

    여기 전체 튜토리얼의 가장 중요한 부분이 있습니다. 1Sheeld와 Arduino 사이의 직렬 충돌을 피하기 위해 스케치를 Arduino 보드에 업로드하기 전에 1Sheeld를 업로드 모드(보드의 UART 스위치라고 표시된 스위치)로 전환한 다음 키를 누릅니다. IDE의 업로드 버튼

    업로드 모드는 UART 스위치를 1Sheeld 로고에서 밀리면 켜집니다. 업로드를 완료하면 1Sheeld를 작동 모드로 다시 전환해야 합니다.

    잊지 마세요! UART 스위치를 작동 모드로 다시 전환하지 않으면 1Sheeld와 Arduino 보드 간에 통신이 이루어지지 않으므로 프로젝트가 제대로 작동하지 않습니다. UART 스위치를 1Sheeld 로고에 가장 가깝게 누르면 작동 모드가 켜집니다.

    7단계: 원쉴드 애플리케이션 사용 안드로이드 스마트폰에서 원쉴드 애플리케이션을 엽니다. 응용 프로그램은 먼저 Bluetooth를 통해 1Sheeld를 검색합니다. 몇 초가 소요되며 휴대전화가 이를 찾습니다. 화면에 1Sheeld #xxxx로 표시되면 페어링 코드(기본 페어링 코드는 1234)를 입력하고 Bluetooth를 통해 1Sheeld에 연결해야 합니다.

    참고: 문제가 있는 경우 Android 휴대전화에 블루투스가 켜져 있고 Android 휴대전화가 1Sheld에 가까이 있는지 확인하세요.

    8단계: 쉴드 목록에서 Gamepad Shield, Orientation Shield, Music Player Shield 및 Toggle 버튼 Shield 및 Terminal Shield를 선택하고 앱 오른쪽 상단의 다중 쉴드 아이콘을 누릅니다.

    9단계: 로봇에 전원을 공급하면 게임패드를 사용하여 수동으로 제어하려는 경우 기본적으로 대기 모드에서 작동하며 토글 버튼 실드에 액세스하고 핀 2를 선택한 다음 켜기를 누릅니다. 대기 모드로 돌아가려면 OFF를 누르십시오.

    10단계: 방향 센서를 사용하여 수동으로 제어하려면 토글 버튼 실드에 액세스하고 핀 3을 선택한 다음 켜기를 누릅니다. 핀 2 상태가 LOW인지 확인하십시오.

    F5KJZGXIKMXG3DG.ino

    8단계:Maker Faire New York의 Sauron

    이제 Maker Faire New York에서 팬들 사이에서 사우론의 모습을 감상해 보세요 :)

    9단계:향후 작업

    이 지침에 대해: 로봇을 조립한 다음 세 가지 모드를 시도하는 동영상을 녹화하겠습니다.

    로봇의 머리 관련: 이 반복에서는 비용을 줄이기로 결정하여 머리에 3개의 모터만 사용했습니다. 다음 반복에서는 나머지 모터를 추가하고 (눈꺼풀, 안대, 아이링, 클레비스 핀, 안구)와 같은 눈 부분을 3D 인쇄합니다. 쉘)

    로봇 기반 관련: 고정 베이스를 4메카넘 휠 로봇 베이스로 교체해 로봇이 자유롭게 움직일 수 있도록 하겠습니다.솔리드웍스에서 베이스 설계를 마쳤지만 로봇과 합칠 시간이 없습니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 사우론 Arduino 코드
  • 사우론 Arduino 코드Arduino
    #define CUSTOM_SETTINGS#define INCLUDE_GAMEPAD_SHIELD#define INCLUDE_MUSIC_PLAYER_SHIELD#define INCLUDE_TERMINAL_SHIELD#define INCLUDE_ORIENTATION_SENSOR_SHIELD/* 1Sheeld 라이브러리를 포함합니다. */#include #include 서보 rightArm_Motor1;서보 rightArm_Motor2;서보 rightArm_Motor3;서보 leftArm_Motor1;서보 leftArm_Motor2;서보 leftArm_Motor3;서보 목수평;서보 목수 수직 =수직;서보 int int modePin2 =3, volatile int modeState1 =LOW, volatile int modeState2 =LOW, volatile 부울 gamepadMode_Enabled =false, volatile 부울 imitationMode_Enabled =false, const int ledPin1 =A0;const int ledPin2 =A1;//------- ----------------------------------- 무효 설정 ---------- --------------------------------------void setup(){ // 통신 시작 OneSheeld.begin (); // 일부 핀을 출력으로 설정 pinMode(modePin1, INPUT); 핀모드(모드핀2, 입력); // Led를 출력으로 설정하고 HIGH "Saurons Eye" pinMode(ledPin1,OUTPUT); 핀모드(LED핀2,출력); 디지털 쓰기(ledPin1, HIGH); 디지털 쓰기(ledPin2,HIGH); // Mega, Mega2560, MegaADK 사용 시 인터럽트에 사용할 수 있는 디지털 핀 (2, 3, 18, 19, 20, 21) attachInterrupt(digitalPinToInterrupt(modePin1), gampadMode_ChangeISR, CHANGE); attachInterrupt(digitalPinToInterrupt(modePin2), imitationMode_ChangeISR, CHANGE); /* 모터의 신호 핀(주황색)을 Arduino 메가 PWM 핀에 직접 연결한 다음 Arduino가 아닌 전원 공급 장치에서 모터에 전원을 공급한 다음 Arduino의 두 접지와 전원 공급 장치를 서로 연결합니다. */ 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); 입.부착(12); // 홈 위치 rightArm_Motor1.write(95); rightArm_Motor2.write(150); rightArm_Motor3.write(20); leftArm_Motor1.write(90); leftArm_Motor2.write(45); leftArm_Motor3.write(180); 목수평.쓰기(105); NeckVertical.write(30); mouth.write(100);}//---------------------------------- 무효 루프 ---- ----------------------------------------------- 무효 루프( ){ 모드 상태1 =디지털 읽기(모드핀1); modeState2 =디지털 읽기(modePin2); // 항상 원하는 모드를 확인합니다. if (modeState1 ==HIGH) { Terminal.println("GamePad Mode was selected"); 게임패드모드(); } //핀 12 =높음 --> 게임패드 모드 else if (modeState2 ==HIGH) { Terminal.println("모방 모드가 선택되었습니다."); 모방 모드(); } //핀 13 =높음 --> 모조 모드 else { Terminal.println("대기 모드가 선택되었습니다."); 대기 모드(); }}//무효 루프//----------------------------------------- 무효 대기 모드 ------------------------------------------ 무효 대기 모드( ) { // 대기 모드 Terminal.println("대기 모드 활성화"); // 홈 위치 Terminal.println("첫 번째 위치"); rightArm_Motor1.write(95); rightArm_Motor2.write(150); rightArm_Motor3.write(20); leftArm_Motor1.write(90); leftArm_Motor2.write(45); leftArm_Motor3.write(180); 목수평.쓰기(105); NeckVertical.write(30); // 볼륨 설정 // MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) {mouth.write(100); OneSheeld.delay(150); 입.쓰기(75); OneSheeld.delay(150); }//MusicPlayer.pause(); 입.쓰기(100); OneSheeld.delay(3000); //------------------------------------------------ ---- // 항상 원하는 모드를 확인합니다. if (gamepadMode_Enabled ==true) { Terminal.println("시스템이 중단되었으며 지금 게임패드 모드를 활성화할 것입니다"); 게임패드모드(); } //핀 12 =높음 --> 게임패드 모드 else if (imitationMode_Enabled ==true) { Terminal.println("시스템이 중단되었으며 지금 모방 모드를 활성화할 것입니다"); 모방 모드(); } //핀 13 =높음 --> 모방 모드 else { // 나머지 시퀀스 완료 // 머리 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); 목수평.쓰기(105); OneSheeld.delay(1500); NeckHorizontal.write(65); OneSheeld.delay(1500); 목수평.쓰기(140); OneSheeld.delay(1500); 목수평.쓰기(105); NeckVertical.write(30); // 볼륨 설정 // MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) {mouth.write(100); OneSheeld.delay(150); 입.쓰기(75); OneSheeld.delay(150); }//MusicPlayer.pause(); 입.쓰기(100); OneSheeld.delay(3000); }//else --> 나머지 시퀀스 완료 //-------------------------------------- ----------------- // 항상 원하는 모드를 확인합니다. if (gamepadMode_Enabled ==true) { Terminal.println("시스템이 중단되었으며 지금 게임패드 모드를 활성화할 것입니다"); 게임패드모드(); } //핀 12 =높음 --> 게임패드 모드 else if (imitationMode_Enabled ==true) { Terminal.println("시스템이 중단되었으며 지금 모방 모드를 활성화할 것입니다"); 모방 모드(); } //핀 13 =높음 --> 모방 모드 else { // 나머지 시퀀스 완료 // 손과 머리를 45도 이동 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); NeckHorizontal.write(65); NeckVertical.write(30); // 볼륨 설정 // MusicPlayer.setVolume(10); MusicPlayer.play(); for (int i =0; i <=19; i++) {mouth.write(100); OneSheeld.delay(150); 입.쓰기(75); OneSheeld.delay(150); }//MusicPlayer.pause(); 입.쓰기(100); OneSheeld.delay(3000); }//else --> 나머지 시퀀스 완료 //-------------------------------------- -------------- // 항상 원하는 모드를 확인합니다. if (gamepadMode_Enabled ==true) { Terminal.println("시스템이 중단되었으며 지금 게임패드 모드를 활성화할 것입니다"); 게임패드모드(); } //핀 12 =높음 --> 게임패드 모드 else if (imitationMode_Enabled ==true) { Terminal.println("시스템이 중단되었으며 지금 모방 모드를 활성화할 것입니다"); 모방 모드(); } //핀 13 =높음 --> 모방 모드 else { // 나머지 시퀀스 완료 // 오른손과 머리를 135도 이동 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); 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

    회로도


    제조공정

    1. 분무 로봇이 일관성을 개선하는 방법
    2. 페인트 로봇이 재작업을 줄이는 방법
    3. 제조 시 재작업 비용을 줄이는 방법
    4. 로봇 비전의 현실은 무엇입니까?
    5. 자체 프로그래밍 로봇이란 무엇입니까?
    6. 산업용 로봇
    7. 로봇을 바쁘게 하기
    8. 완벽한 ERP 구현 팀을 구성하는 방법
    9. 스카라 로봇 | 나만의 Arduino 기반 로봇을 구축하는 방법
    10. 자동화의 미래는 얼마나 밝습니까?