Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Joystick-controller voor MeArm Robot - Opnamecoördinaten

Componenten en benodigdheden

Arduino UNO
× 1
Analoge joystick (algemeen)
× 2
Weerstand 10k ohm
× 2
Weerstand 680 ohm
× 1
5 mm LED:rood
× 1
Micro-servo SG90
× 4

Apps en online services

Arduino IDE

Over dit project

Arduino Uno joystickcontroller voor robotarm (MeArm®) met registratie van coördinaten. Maakt het mogelijk om geregistreerde coördinaten één keer na een klik op de knop of herhaaldelijk te herhalen. Gebruikt Arduino Uno-basisbord zonder extra borden. Vereist USB-aansluiting (2A) of 6V/2A voeding. Getest met vier servo's SG90.

Druk op de knop op joystick1 om het opnemen van coördinaten te starten. Druk op de knop op joystick1 om het opnemen van coördinaten te beëindigen.

Druk op de knop op joystick2 om het afspelen van geregistreerde coördinaten te starten. Druk op de knop op joystick2 om het afspelen van geregistreerde coördinaten te stoppen. Houd de knop op joystick2 ingedrukt om het afspelen van opgenomen coördinaten automatisch in een cyclus te starten.

Memo:We hebben ook een eenvoudigere versie van deze software gemaakt die geen extra weerstanden en LED-diodes vereist:MeArm Robot - Opname van coördinaten (geminimaliseerde versie)

Als je een MeArm-joystickbord hebt, is hier een versie voor jou:MeArm 1.6.1 Robot-joystickbord Bewegingen (IR) opnemen

Code

  • Arduino Joystick-controller voor MeArm ® robot met registratie van coördinaten. (versie 1.3.1)
Arduino Joystick-controller voor MeArm ® -robot met registratie van coördinaten. (versie 1.3.1)Arduino
Gebruik Arduino IDE voor het programmeren van Arduino UNO-basisbord via USB-poort.
/* meArm analoge joysticks versie 1.3.1 - UtilStudio.com Dec 2018 Gebruikt twee analoge joysticks en vier servo's. In versie 1.3 was het vastleggen van coördinaten verbeterd. Sommige bugs zijn verwijderd. De eerste joystick beweegt de grijper naar voren, naar achteren, naar links en naar rechts, knop start/stop opnameposities. Tweede joystick beweegt de grijper omhoog, omlaag en sluit en opent, knop start/stop met afspelen van opgenomen posities. Druk 2 seconden op de knop om automatisch af te spelen. Pinnen:Arduino Stick1 Stick2 Basis Schouder Elleboog Grijper Record/ GND GND GND Bruin Bruin Bruin Bruin Automatisch afspelen 5V VCC VCC Rood Rood Rood Rood LED A0 HOR A1 VER PD2 BUTT A2 HOR A3 VER PD3 BUTT 11 Geel 10 Geel 9 Geel 6 Geel PD4 X */#include bool repeatePlaying =false; /* Voert herhaaldelijk opgenomen cyclus uit */int delayBetweenCycles =2000; /* Vertraging tussen cycli */int basePin =11; /* Basisservo */int schouderPin =10; /* Schouderservo */int elleboogPin =9; /* Elleboogservo */int gripperPin =6; /* Grijperservo */int xdirPin =0; /* Basis - joystick1*/int ydirPin =1; /* Schouder - joystick1 */int zdirPin =3; /* Elleboog - joystick2 */int gdirPin =2; /* Grijper - joystick2 *///int pinRecord =A4; /* Knoprecord - achterwaartse compatibiliteit *///int pinPlay =A5; /* Knop afspelen - achterwaartse compatibiliteit */int pinRecord =PD2; /* Knoprecord - aanbevolen (A4 is verouderd, wordt gebruikt voor extra joystick) */int pinPlay =PD3; /* Knop afspelen - aanbevolen (A5 is verouderd, wordt gebruikt voor extra joystick) */int pinLedRecord =PD4; /* LED - geeft opname- (licht) of automatische afspeelmodus aan (knipper één) */bool useInternalPullUpResistors =false;const int buffSize =512; /* Grootte van opnamebuffer */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 =HOOG;int buttonPlay =HOOG;int buttonRecordLast =LAAG;int buttonPlayLast =LAAG;bool record =false;bool play =false;bool debug =false;String command ="Handmatig";int printPos =0;int buttonPlayDelay =20;int buttonPlayCount =0;bool ledLight =false;Servo servoBase;Servo servoShoulder;Servo servoElbow;Servo servoGripper;void setup() {Serial.begin(9600); if (useInternalPullUpResistors) { pinMode (pinRecord, INPUT_PULLUP); pinMode (pinPlay, INPUT_PULLUP); } else { pinMode (pinRecord, INPUT); pinMode (pinPlay, INPUT); } pinMode(xdirPin, INPUT); pinMode(ydirPin, INPUT); pinMode(zdirPin, INPUT); pinMode(gdirPin, INPUT); pinMode (pinLedRecord, UITGANG); servoBase.attach(basePin); servoShoulder.attach (schouderpin); servoElbow.attach (elleboogPin); servoGripper.attach (grijperPin); Begin positie(); digitalWrite (pinLedRecord, HOOG); vertraging (1000); digitalWrite (pinLedRecord, LOW);}void loop () { buttonRecord =digitalRead (pinRecord); buttonPlay =digitalRead (pinPlay); // Serial.print (buttonRecord); // Serial.print ("\t"); // Serial.println (buttonPlay); // voor testdoeleinden if (buttonPlay ==LAAG) { buttonPlayCount++; if (buttonPlayCount>=buttonPlayDelay) { repeatePlaying =true; } } else buttonPlayCount =0; if (buttonPlay !=buttonPlayLast) { if (record) { record =false; } if (buttonPlay ==LAAG) { play =!play; repeatePlaying =false; if (afspelen) { StartPositie(); } } } if (buttonRecord !=buttonRecordLast) { if (buttonRecord ==LAAG) { record =!record; if (record) { play =false; repeatePlaying =false; recPos =0; } 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); als (abs(dx) <1.5) dx =0; als (abs(dy) <1.5) dy =0; als (abs(dz) <1.5) dz =0; als (abs(dg) <1.5) dg =0; posBase +=dx; posSchouder +=dy; posElleboog +=dz; posGripper +=dg; if (play) { if (playPos>=recPos) { playPos =0; if (repeatePlaying) {delay(delayBetweenCycles); Begin positie(); } else { play =false; } } bool endOfData =false; while (!endOfData) { if (playPos>=buffSize - 1) break; if (playPos>=recPos) breken; int data =buff [playPos]; int hoek =data &0xFFF; int servoNumber =data &0x3000; endOfData =gegevens &0x4000; schakelaar (servoNumber) {geval 0x0000:posBase =hoek; pauze; geval 0x1000:posSchouder =hoek; pauze; geval 0x2000:posElleboog =hoek; pauze; geval 0x3000:posGripper =hoek; dg =posGripper - lastGripper; pauze; } 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 =waar; } servoGripper.write(posGripper); if (speel &&waitGripper) { delay(1000); } if ((lastBase !=posBase) | (lastShoulder !=posShoulder) | (lastElbow !=posElbow) | (lastGripper!=posGripper)) { if (record) { if (recPos   

Schema's

Joystick-controller voor MeArm ® robot met registratie van coördinaten - schematisch diagram Testbord met slechts twee aangesloten servo's. Zie schema om 4 servomotoren aan te sluiten.

Productieproces

  1. Arduino-gamecontroller
  2. MeArm Robotarm - Uw robot - V1.0
  3. Met joystick bestuurde RC-auto
  4. Lijnvolger Robot
  5. Eenvoudige UNO-rekenmachine
  6. Spraakgestuurde robot
  7. Persistentie van visie
  8. Arduino-joystick
  9. Arduino DMX-512-testcontroller
  10. Temperatuurbewaking op smartphone
  11. Robot voor supercoole indoornavigatie