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

Joystick-Controller für MeArm-Roboter - Koordinaten aufzeichnen

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Analoger Joystick (generisch)
× 2
Widerstand 10k Ohm
× 2
Widerstand 680 Ohm
× 1
5 mm LED:Rot
× 1
Mikroservo SG90
× 4

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Arduino Uno Joystick-Controller für Roboterarm (MeArm®) mit Koordinatenaufzeichnung. Erlaubt, aufgezeichnete Koordinaten einmal auf Knopfdruck oder wiederholt zu wiederholen. Verwendet Arduino Uno-Basisplatine ohne zusätzliche Platinen. Benötigt USB-Anschluss (2A) oder 6V / 2A Netzteil. Getestet mit vier Servos SG90.

Drücken Sie die Taste am Joystick1, um die Koordinatenaufzeichnung zu starten. Drücken Sie die Taste am Joystick1, um die Koordinatenaufzeichnung zu beenden.

Drücken Sie die Taste am Joystick2, um die Wiedergabe der aufgezeichneten Koordinaten zu starten. Drücken Sie die Taste am Joystick2, um die Wiedergabe der aufgezeichneten Koordinaten zu stoppen. Halten Sie die Taste auf dem Joystick2 gedrückt, um die Wiedergabe der aufgezeichneten Koordinaten automatisch im Zyklus zu starten.

Memo:Wir haben auch eine einfachere Version dieser Software erstellt, die keine zusätzlichen Widerstände und LED-Dioden benötigt:MeArm Robot - Recording of Coordinates (Minimalized Version)

Wenn Sie ein MeArm-Joystick-Board haben, ist hier eine Version für Sie:MeArm 1.6.1 Roboter-Joystick-Board Aufzeichnen von Bewegungen (IR)

Code

  • Arduiono Joystick-Controller für MeArm ® -Roboter mit Koordinatenaufzeichnung. (Version 1.3.1)
Arduiono Joystick-Controller für MeArm ® -Roboter mit Koordinatenaufzeichnung. (Version 1.3.1)Arduino
Verwenden Sie die Arduino IDE zum Programmieren der Arduiono UNO-Basisplatine über den USB-Anschluss.
/* analoge meArm-Joysticks Version 1.3.1 - UtilStudio.com Dez. 2018 Verwendet zwei analoge Joysticks und vier Servos. In Version 1.3 wurde die Aufzeichnung von Koordinaten verbessert. Einige Fehler wurden entfernt. Erster Joystick bewegt Greifer vorwärts, rückwärts, links und rechts, Taste Start/Stopp Aufnahmepositionen. Zweiter Joystick bewegt Greifer nach oben, unten und schließt und öffnet, Taste startet/stoppt die Wiedergabe aufgezeichneter Positionen. Drücken Sie die Taste 2 Sekunden lang, um die automatische Wiedergabe zu starten. Pins:Arduino Stick1 Stick2 Base Shoulder Elbow Gripper Record/ GND GND GND Braun Braun Braun Braun Autoplay 5V VCC VCC Rot Rot Rot Rote LED A0 HOR A1 VER PD2 BUTT A2 HOR A3 VER PD3 BUTT 11 Gelb 10 Gelb 9 Gelb 6 Gelb PD4 X */#include bool repeatePlaying =false; /* Der aufgezeichnete Zyklus wird wiederholt ausgeführt */int delayBetweenCycles =2000; /* Verzögerung zwischen Zyklen */int basePin =11; /* Basisservo */int ShoulderPin =10; /* Schulterservo */int EllenbogenPin =9; /* Ellbogenservo */int gripperPin =6; /* Greiferservo */int xdirPin =0; /* Basis - Joystick1*/int ydirPin =1; /* Schulter - Joystick1 */int zdirPin =3; /* Ellenbogen - Joystick2 */int gdirPin =2; /* Greifer - Joystick2 *///int pinRecord =A4; /* Schaltflächenaufzeichnung - Abwärtskompatibilität *///int pinPlay =A5; /* Tastenwiedergabe - Abwärtskompatibilität */int pinRecord =PD2; /* Tastenaufzeichnung - empfohlen (A4 ist veraltet, wird für zusätzlichen Joystick verwendet) */int pinPlay =PD3; /* Tastenwiedergabe - empfohlen (A5 ist veraltet, wird für zusätzlichen Joystick verwendet) */int pinLedRecord =PD4; /* LED - zeigt den Aufnahmemodus (leuchtet) oder den automatischen Wiedergabemodus (eins blinken) an */bool useInternalPullUpResistors =false;const int buffSize =512; /* Größe des Aufzeichnungspuffers */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 minGripper =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 record =false;bool play =false;bool debug =false;String command ="Manual";int printPos =0;int buttonPlayDelay =20;int buttonPlayCount =0;bool ledLight =false;Servo servoBase;Servo-ServoSchulter;Servo-ServoEllbogen;Servo-ServoGripper;void setup () { Serial.begin (9600); if (useInternalPullUpResistors) { pinMode (pinRecord, INPUT_PULLUP); pinMode (pinPlay, INPUT_PULLUP); aufrechtzuerhalten. Else { PinMode (pinRecord, INPUT); pinMode (pinPlay, EINGANG); } pinMode (xdirPin, INPUT); pinMode(ydirPin, INPUT); pinMode (zdirPin, EINGANG); pinMode (gdirPin, EINGANG); pinMode (pinLedRecord, AUSGANG); servoBase.attach (basePin); servoShoulder.attach (schulterPin); servoElbow.attach (elbowPin); servoGripper.attach (GreiferPin); Startposition(); digitalWrite (pinLedRecord, HIGH); Verzögerung (1000); digitalWrite (pinLedRecord, LOW);}void loop () { buttonRecord =digitalRead (pinRecord); buttonPlay =digitalRead (pinPlay); // Serial.print (buttonRecord); // Serial.print("\t"); // Serial.println (buttonPlay); // zu Testzwecken if (buttonPlay ==LOW) { buttonPlayCount++; if (buttonPlayCount>=buttonPlayDelay) { repeatePlaying =true; } } sonst buttonPlayCount =0; if (buttonPlay !=buttonPlayLast) { if (record) { record =false; } if (buttonPlay ==LOW) {play =!play; RepeatePlaying =false; if (play) { StartPosition(); } } } if (buttonRecord !=buttonRecordLast) { if (buttonRecord ==LOW) { record =!record; if (record) {play =false; RepeatePlaying =false; recPos =0; aufrechtzuerhalten. Else { if (debug) PrintBuffer(); } } } buttonPlayLast =buttonPlay; buttonRecordLast =buttonRecord; float dx =map(analogRead(xdirPin), 0, 1023, -5.0, 5.0); float dy =map(analogRead(ydirPin), 0, 1023, 5.0, -5.0); float dz =map(analogRead(zdirPin), 0, 1023, 5.0, -5.0); float dg =map(analogRead(gdirPin), 0, 1023, 5.0, -5.0); wenn (abs(dx) <1,5) dx =0; wenn (abs(dy) <1,5) dy =0; wenn (abs(dz) <1,5) dz =0; wenn (abs(dg) <1,5) dg =0; posBase +=dx; posSchulter +=dy; PosEllbogen +=dz; PosGripper +=dg; if (play) { if (playPos>=recPos) { playPos =0; if (repeatePlaying) { delay (delayBetweenCycles); Startposition(); } sonst { spielen =falsch; } } bool endOfData =false; while (!endOfData) { if (playPos>=buffSize - 1) break; if (playPos>=recPos) break; int data =buff[playPos]; int-Winkel =Daten &0xFFF; int servoNumber =Daten &0x3000; endOfData =Daten &0x4000; switch (servoNumber) { case 0x0000:posBase =angle; brechen; Fall 0x1000:posShoulder =Winkel; brechen; Fall 0x2000:posElbow =Winkel; brechen; Fall 0x3000:posGripper =Winkel; dg =posGripper - letzterGripper; brechen; } playPos++; } } 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 =wahr; } servoGripper.write (posGripper); if (play &&waitGripper) { delay(1000); } if ((lastBase !=posBase) | (lastShoulder !=posShoulder) | (lastElbow !=posElbow) | (lastGripper !=posGripper)) { if (record) { if (recPos  

Schaltpläne

Joystick-Steuerung für MeArm ® -Roboter mit Koordinatenaufzeichnung - Schaltplan Testplatine mit nur zwei angeschlossenen Servos. Siehe schematisches Diagramm zum Anschluss von 4 Servomotoren.

Herstellungsprozess

  1. Arduino-Gamecontroller
  2. MeArm-Roboterarm – Ihr Roboter – V1.0
  3. Joystick-gesteuertes RC-Auto
  4. Linienfolger-Roboter
  5. Einfacher UNO-Rechner
  6. Sprachgesteuerter Roboter
  7. Beharrlichkeit der Vision
  8. Arduino-Joystick
  9. Arduino DMX-512 Tester Controller
  10. Roboter für supercoole Indoor-Navigation