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

MeArm 로봇용 조이스틱 컨트롤러 - 녹음 좌표

구성품 및 소모품

Arduino UNO
× 1
아날로그 조이스틱(일반)
× 2
저항 10k 옴
× 2
저항 680옴
× 1
5mm LED:빨간색
× 1
마이크로 서보 SG90
× 4

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

좌표 기록 기능이 있는 로봇 팔(MeArm®)용 Arduino Uno 조이스틱 컨트롤러. 버튼 클릭 시 기록된 좌표를 한 번 또는 반복적으로 반복할 수 있습니다. 추가 보드 없이 Arduino Uno 베이스 보드를 사용합니다. USB 연결(2A) 또는 6V/2A 전원 공급 장치가 필요합니다. 4개의 서보 SG90을 사용하여 테스트했습니다.

조이스틱1의 버튼을 눌러 좌표 기록을 시작합니다. 조이스틱1의 버튼을 눌러 좌표 기록을 종료합니다.

기록된 좌표의 재생을 시작하려면 조이스틱2의 버튼을 누르십시오. 기록된 좌표의 재생을 중지하려면 조이스틱2의 버튼을 누르십시오. 조이스틱2의 버튼을 누르고 있으면 기록된 좌표의 재생이 주기적으로 자동 시작됩니다.

메모:추가 저항과 LED 다이오드가 필요하지 않은 이 소프트웨어의 더 간단한 버전도 만들었습니다. MeArm Robot - 좌표 기록(최소화 버전)

MeArm 조이스틱 보드가 있는 경우 다음 버전이 있습니다. MeArm 1.6.1 로봇 조이스틱 보드 기록 움직임(IR)

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

코드

<울>
  • 좌표 기록 기능이 있는 MeArm ® 로봇용 Arduiono 조이스틱 컨트롤러. (버전 1.3.1)
  • 좌표 기록 기능이 있는 MeArm ® 로봇용 Arduiono 조이스틱 컨트롤러. (버전 1.3.1)Arduino
    USB 포트를 통해 Arduiono UNO 베이스 보드를 프로그래밍하려면 Arduino IDE를 사용하십시오.
    /* meArm 아날로그 조이스틱 버전 1.3.1 - UtilStudio.com 2018년 12월 2개의 아날로그 조이스틱과 4개의 서보를 사용합니다. 버전 1.3에서는 좌표 기록이 개선되었습니다. 일부 버그가 제거되었습니다. 첫 번째 조이스틱은 그리퍼를 앞, 뒤로, 왼쪽 및 오른쪽으로 이동하고 버튼의 녹음 시작/중지 위치를 지정합니다. 두 번째 조이스틱은 그리퍼를 위, 아래로 움직이고 닫고 열며, 버튼은 녹음된 위치의 재생을 시작/중지합니다. 버튼을 2초 동안 누르면 자동 재생됩니다. 핀:Arduino Stick1 Stick2 베이스 숄더 팔꿈치 그리퍼 레코드/ GND GND GND 갈색 갈색 갈색 갈색 자동 재생 5V VCC VCC 빨간색 빨간색 빨간색 빨간색 LED A0 HOR A1 VER PD2 BUTT A2 HOR A3 VER PD3 BUTT 11 노란색 10 노란색 9 노란색 6 노란색 PD4 X */#include bool repeatePlaying =false; /* 기록된 주기를 반복적으로 실행합니다. */int delayBetweenCycles =2000; /* 주기 사이의 지연 */int basePin =11; /* 기본 서보 */int shoulderPin =10; /* 숄더 서보 */int 엘보핀 =9; /* 팔꿈치 서보 */int gripperPin =6; /* 그리퍼 서보 */int xdirPin =0; /* 기본 - 조이스틱1*/int ydirPin =1; /* 어깨 - 조이스틱1 */int zdirPin =3; /* 팔꿈치 - 조이스틱2 */int gdirPin =2; /* 그리퍼 - 조이스틱2 *///int pinRecord =A4; /* 버튼 기록 - 이전 버전과의 호환성 *///int pinPlay =A5; /* 버튼 재생 - 이전 버전과의 호환성 */int pinRecord =PD2; /* 버튼 기록 - 권장(A4는 더 이상 사용되지 않으며 추가 조이스틱에 사용됩니다) */int pinPlay =PD3; /* 버튼 재생 - 권장(A5는 더 이상 사용되지 않으며 추가 조이스틱에 사용됨) */int pinLedRecord =PD4; /* LED - 녹음(밝음) 또는 자동 재생 모드(하나 깜박임)를 나타냅니다. */bool useInternalPullUpResistors =false;const int buffSize =512; /* 녹음 버퍼의 크기 */int startBase =90;int startShoulder =90;int startElbow =90;int startGripper =0;int posBase =90;int posShoulder =90;int posElbow =90;int posGripper =0;int lastBase =90;int lastShoulder =90;int lastElbow =90;int lastGripper =90;int minBase =0;int maxBase =150;int minShoulder =0;int maxShoulder =150;int minElbow =0;int maxElbow =150;int minG =0;int maxGripper =150;const int countServo =4;int buff[buffSize];int buffAdd[countServo];int recPos =0;int playPos =0;int buttonRecord =HIGH;int buttonPlay =HIGH;int buttonRecordLast =LOW;int buttonPlayLast =LOW;bool 레코드 =false;bool play =false;bool debug =false;String 명령 ="수동";int printPos =0;int buttonPlayDelay =20;int buttonPlayCount =0;bool ledLight =false;서보 서보베이스;서보 서보숄더;서보 서보엘보우;서보 서보그리퍼; 무효 설정() { Serial.begin(9600); if (useInternalPullUpResistors) { pinMode(pinRecord, INPUT_PULLUP); 핀모드(핀플레이, INPUT_PULLUP); } else { 핀모드(핀레코드, 입력); 핀모드(핀플레이, 입력); } 핀모드(xdir핀, 입력); 핀모드(ydir핀, 입력); 핀모드(zdir핀, 입력); 핀모드(gdir핀, 입력); 핀모드(pinLedRecord, OUTPUT); ServoBase.attach(basePin); ServoShoulder.attach(숄더핀); ServoElbow.attach(elbowPin); ServoGripper.attach(gripperPin); 시작 위치(); digitalWrite(pinLedRecord, HIGH); 지연(1000); digitalWrite(pinLedRecord, LOW);} 무효 루프() { buttonRecord =digitalRead(pinRecord); 버튼플레이 =디지털읽기(핀플레이); // Serial.print(buttonRecord); // Serial.print("\t"); // Serial.println(buttonPlay); // 테스트 목적 if (buttonPlay ==LOW) { buttonPlayCount++; if (buttonPlayCount>=buttonPlayDelay) { repeatePlaying =true; } } 그렇지 않으면 buttonPlayCount =0; if (buttonPlay !=buttonPlayLast) { if (레코드) { 레코드 =false; } if (buttonPlay ==LOW) { play =!play; 반복 재생 =거짓; if (재생) { StartPosition(); } } } if (buttonRecord !=buttonRecordLast) { if (buttonRecord ==LOW) { 기록 =!record; if (기록) { 재생 =거짓; 반복 재생 =거짓; recPos =0; } else { if(디버그) PrintBuffer(); } } } 버튼플레이라스트 =버튼플레이; buttonRecordLast =버튼기록; float dx =지도(analogRead(xdirPin), 0, 1023, -5.0, 5.0); float dy =지도(analogRead(ydirPin), 0, 1023, 5.0, -5.0); float dz =지도(analogRead(zdirPin), 0, 1023, 5.0, -5.0); float dg =지도(analogRead(gdirPin), 0, 1023, 5.0, -5.0); if (abs(dx) <1.5) dx =0; if (abs(dy) <1.5) dy =0; if (abs(dz) <1.5) dz =0; if (abs(dg) <1.5) dg =0; posBase +=dx; pos어깨 +=dy; 자세팔꿈치 +=dz; posGripper +=dg; if (재생) { if (playPos>=recPos) { playPos =0; if (repeatPlaying) { 지연(delayBetweenCycles); 시작 위치(); } else { 플레이 =거짓; } } 부울 endOfData =거짓; while (!endOfData) { if (playPos>=buffSize - 1) break; if (playPos>=recPos) break; 정수 데이터 =버프[playPos]; 정수 각도 =데이터 &0xFFF; 정수 서보 번호 =데이터 &0x3000; endOfData =데이터 &0x4000; 스위치(servoNumber) { 경우 0x0000:posBase =각도; 부서지다; 경우 0x1000:posShoulder =각도; 부서지다; 경우 0x2000:posElbow =각도; 부서지다; 경우 0x3000:posGripper =각도; dg =posGripper - lastGripper; 부서지다; } 플레이포스++; } } if (posBase> maxBase) posBase =maxBase; if (posShoulder> maxShoulder) posShoulder =maxShoulder; if (posElbow> maxElbow) posElbow =maxElbow; if (posGripper> maxGripper) posGripper =maxGripper; if (posBase  0) { posGripper =maxGripper; waitGripper =참; } 서보그리퍼.write(posGripper); if (재생 &&waitGripper) { 지연(1000); } if ((lastBase !=posBase) | (lastShoulder !=posShoulder) | (lastElbow !=posElbow) | (lastGripper !=posGripper)) { if (record) { if (recPos   

    회로도

    좌표 기록 기능이 있는 MeArm ® 로봇용 조이스틱 컨트롤러 - 구성도 두 개의 서보만 연결된 테스트 보드. 4개의 서보 모터를 연결하는 개략도를 참조하십시오.

    제조공정

    1. Arduino 게임 컨트롤러
    2. MeArm 로봇 암 - 로봇 - V1.0
    3. 조이스틱 제어 RC 자동차
    4. 라인 팔로워 로봇
    5. 간단한 UNO 계산기
    6. 음성 제어 로봇
    7. 시력의 지속성
    8. Arduino 조이스틱
    9. Arduino DMX-512 테스터 컨트롤러
    10. 멋진 실내 내비게이션용 로봇