Bouwen van een 5-as robotarm met Arduino en DynamixShield (18 / 19 stap)

Stap 18: Programma de arm.

U vindt de schets die de robotarm in de github repository onder DynamixShield/schetsen/RobotArm regelt. Ik zal kort uitleg over de belangrijkste onderdelen van de schets.

1. eerst moet u de klasse DynamixSerial opnemen. Deze klasse is wat u zal gebruiken om te communiceren met de Dynamixel servo's.

#include

2. vervolgens hebben we enkele variabelen toe te wijzen van de pinnen voor de joystick en druk sensoren en voor het bijhouden van de servo-bewegingen.

#define SERVO_COUNT 5

#define AXIS_COUNT 4

Deze constanten niet gewijzigd. Ze gebruikt om namen te geven

op de pinnen gebruikt:

Const int x1Pin = A0;

Const int y1Pin = a1 worden verkregen;

Const int x2Pin = A2;

Const int y2Pin = A3;

Const int pressurePin = A11;

Index van de AxisPos matrix die bepaalt in grijper openen/sluiten

Const int gripperCloseIdx = 1;

Const int gripperOpenIdx = 3;

Const int gripperIdx = 4;

int servoPos [SERVO_COUNT];

int servoDir [SERVO_COUNT];

int servoAdd [SERVO_COUNT];

int axisID [AXIS_COUNT];

int axisPos [AXIS_COUNT];

int gripPressure = 0;

3. vervolgens declareren we de DynamixelSerial klasse. Deze klasse wordt ervan uitgegaan dat het gebruik van Serial1 voor mededelingen aan de Dynamixel servo's. Echter, als u in een hardware seriële poort en hier doorgeven kunt u het overschrijven. Dit is dus de software kan worden gebruikt op aangepaste projecten die geen van de DynamixShield gebruikmaken.

DynamixelSerial Dynamixel;

4. de volgende meest belangrijke deel is de setup. We starten onze debug seriële verbinding en vervolgens beginnen met de DynamixelSerial klasse. Wordt standaard een 1 Mbaud communicatie tarief en de pin die het gebruikt om controle van de half-duplex van het Dynamixel-protocol is ingesteld op basis van het bord dat u gebruikt. Dus op een pin 22 is Due, maar op de nul is pin 2. U hebt echter ook de optie voor het opgeven van deze parameters in de aanroep van de methode van het begin te negeren wat wordt gebruikt voor aangepaste projecten.

#ifdef ENABLE_DEBUG

Serial.begin(57600);

terwijl (!. Serieel);

Serial.println ('setup starten');

#endif

Dynamixel.begin (); of Dynamixel.begin (1000000, 22);

5. setup heeft dan wat code alle de servo's instellen op hun standaardpositie om het te krijgen klaar voor beweging. Het herstelt ook alle variabelen op hun standaardstatus.

6. de belangrijkste verwerking lus is vrij eenvoudig. Het roept enkel processJoysticks() en vervolgens vertragingen voor 20 milliseconden.

void loop () {}

processJoysticks();

vertraging (20);

}

7. de methode van de joystick proces heeft een lus dat gaat door elke joystick as en leest de analoge waarde van de joystick.

ongeldig processJoysticks() {}

ServoPosReport koord = "", servoAddReport = "", axisReport = "";

Lees de analoge waarde:

for (int i = 0; i

axisPos [i] = analogRead(axisID[i]);

8. het vervolgens schalen de waarde van de joystick die ligt tussen 255 en 755 in een waarde tussen -5 en 5. Als de waarde groter dan de 1020 is dan betekent wij zijn te drukken op down op de joystick om te sluiten van de kaken van de grijper, zodat zullen wij het proces grijper methode daarmee omgaan.

Als het groter dan 1020 is wordt vervolgens de knop ingedrukt.

Als (axisPos [i] < 1020) {}

servoAdd [i] = kaart (axisPos [i], 255, 755, -5, 5);

}

else {}

servoAdd [i] = 0;

}

9. dan we de waarde van de beweging naar de positie van de servo's voegen.

Als ((servoPos [i] + servoAdd[i]) > = 0 & & (servoPos [i] + servoAdd [i] < 1024)) {}

servoPos [i] += (servoDir [i] * servoAdd[i]);

}

10. dan als we verkeer op deze as hadden zetten we de nieuwe positie van de servo.

Als (servoAdd [i]! = 0) {}

Dynamixel.moveSpeed (i + 1, servoPos [i], 150); delay(10);

}

11. ten slotte noemt het processGripper. Dat begint methoden door het lezen van het analoge signaal voor de druksensor.

VOID processGripper (String & servoPosReport, String & servoAddReport) {}

gripPressure = analogRead(pressurePin);

12. omlaag drukken op de juiste joystick sluit de girpper, op de linker joystick omlaag te duwen, terwijl wordt geopend. De methode controleert dit door het zien als de positie van de as van de dicht of open grijper positie gelijk aan 1023 is. Dit is de waarde van de joystick leest wanneer u worden te drukken op down daarop. Als het niet actief is, dan zetten we de servo toevoegen om plus of minus 10. Anders, het voegt nul.

Als (axisPos [gripperCloseIdx] == 1023) {}

Als (gripPressure < 850) {}

servoAdd [gripperIdx] = -10;

}

}

anders als (axisPos [gripperOpenIdx] == 1023) {}

servoAdd [gripperIdx] = 10;

}

else {}

servoAdd [gripperIdx] = 0;

}

13. dan we de positie van de servo zetten zolang het blijft binnen 0 en 512. De gripper verplaatsen niet meer.

Als ((servoPos [gripperIdx] + servoAdd[gripperIdx]) > = 0
& & (servoPos [gripperIdx] + servoAdd [gripperIdx] < = 512)) {}

servoPos [gripperIdx] += (servoDir [gripperIdx] * servoAdd[gripperIdx]);

}

14. ten slotte, als we toegevoegd aan de positie vervolgens moeten we naar de nieuwe positie van de servo van de grijper instellen.

Als (servoAdd [gripperIdx]! = 0) {}

Dynamixel.moveSpeed (gripperIdx + 1, servoPos [gripperIdx], 150);

}

En thats it. Er zijn een aantal andere dingen in de schets die ik deed hier niet bespreken, maar dat is vooral voor foutopsporing. U kunt inschakelen door de //#define ENABLE_DEBUG 1 lijn bij de bovenkant te debuggen. Dit zal printen wat als u de schets uitvoert gebeurt er. Gebruik van de Arduino IDE u de schets om in te programmeren uw microcontroller en vervolgens laat uitvoeren voor onze nieuwe robotarm!

Gerelateerde Artikelen

Bouwen van een eenvoudige binaire teller met behulp van de Arduino

Bouwen van een eenvoudige binaire teller met behulp van de Arduino

De volgende instructable zal gaan door de stappen voor het bouwen van een eenvoudige binaire teller met behulp van de volgende materialen.1 x Arduino Uno1 x drukknop5 x LED's (maar het aantal bits u wilt uw teller)1 x 10 k ohm weerstand1 x 220 ohm we
Het maken van een DIY borstelloze Gimbal met Arduino

Het maken van een DIY borstelloze Gimbal met Arduino

Dit is een verhaal van mijn derde project met goedkope gyro en Arduino.Na de eerdere twee projecten, Gemakkelijk omgekeerd slinger en 3D kalligrafie, ik gedacht heb van het maken van Camera Gimbal met Arduino. Dan had ik drie beleidsregels voor het p
Bouwen van een ISS aanwijzer Tracker met behulp van Adafruit HUZZAH ESP8266

Bouwen van een ISS aanwijzer Tracker met behulp van Adafruit HUZZAH ESP8266

Overzicht – deel 1 Hgte/Az aanwijzerUitbreiding op mijn Stepper Motor controller met behulp van Adafruit Huzzah ESP8266 WiFi module door toevoeging van een kleine Servo, ik heb een mechanisch apparaat dat kunt verplaatsen in Azimuth (met behulp van e
Bouwen van een modulaire Robot Chassis met Actobotics

Bouwen van een modulaire Robot Chassis met Actobotics

Ik hield van mijn vroege kinderjaren robots. De eerste film robots ik herinner me ooit echt wens eerst, waar de drie bots "Stille Running", (nog steeds een van mijn favoriete films!) Die goofy beetje wandelen dozen bereikte een hoogtepunt van mi
Bouwen van uw FM-transmissie Station met Arduino

Bouwen van uw FM-transmissie Station met Arduino

Hi elk lichaam.Voordat een 3 maanden geleden, een van mijn vriend me om te bouwen van een eenvoudige FM-zender vraagt, zou hij een audiobestand verzenden vanaf computer en spelen op elke radiozender, door het aanpassen van de frequentie van de ontvan
Bouwen van een kleine elektronische toetsenbord met LEGO en faya-nugget

Bouwen van een kleine elektronische toetsenbord met LEGO en faya-nugget

In mijn laatste Instructable, ik aangetoond hoe met Lego, een Arduino board en faya-nugget modules te bouwen van een fan: http://goo.gl/brQ9tR,Deze keer ga ik u tonen hoe faya-nuggets kunt met het maken van een kleine elektronische toetsenbord,Stap 1
Controle van een grote Lineaire servomotor met Arduino

Controle van een grote Lineaire servomotor met Arduino

Deze Arduino Lineaire Actuator Tutorial laat zien hoe om te doen basic handmatige bediening van een grote Lineaire servomotor met behulp van een Arduino en twee knoppen. In de eerste set van code, de eerste knop breidt de bedieningssleutel en het twe
Het uitvoeren van een borstelloze motor ESC met Arduino

Het uitvoeren van een borstelloze motor ESC met Arduino

Dit instructable zal u tonen hoe te configureren en het uitvoeren van een borstelloze motor ESC met een arduino en het uitvoeren van een borstelloze motor op verschillende snelheden. Het zal gaan door de materialen, installatie van hardware en de sof
Hoe het bouwen van een fiets auto hoorn met 16 standaard oplaadbare AA batterijen

Hoe het bouwen van een fiets auto hoorn met 16 standaard oplaadbare AA batterijen

INTRODUCTIEHallo fiets auto hoorn fans!Na uitgebreide testen en het gebruik van de methode van proberen en error kwam ik uiteindelijk met deze vrij betrouwbare opstelling. Ik bedoel niet te zeggen het is de beste en ultieme oplossing maar deze blijkt
Hoe het bouwen van een neopixel vlinder Nachtlampje met Instamorph

Hoe het bouwen van een neopixel vlinder Nachtlampje met Instamorph

Dit was gemaakt op de #BUILDNIGHT van Instructables en Instamorph in Hackerspace Charlotte op 14 April!Ik wilde iets met LEDs erin maken zodat ik besloten een bar van NEOPIXELS binnen!Het hart hiervan is een Arduino Pro mini (geplukt voor grootte), e
Bouwen van een Bluespec LED controller met behulp van Connectal Build

Bouwen van een Bluespec LED controller met behulp van Connectal Build

Deze tutorial wordt uitgelegd hoe u de dienst van het publiek Connectal te bouwen om te bouwen en simuleren van een toepassing met hardware en software componenten die zijn geschreven in BSV en C++ met behulp van het Connectal-kader.Wij gaan ervan ui
Controle van een kleine Lineaire servomotor met Arduino

Controle van een kleine Lineaire servomotor met Arduino

Deze Arduino Lineaire Actuator Tutorial toont hoe de controle van een Firgelli kleine Lineaire servomotor met behulp van een Arduino compatibel board en verschillende input sensoren, waaronder een Slider en rotatie knop voor directe besturing, Joysti
Bouwen van een zeer eenvoudige receptie met alleen een Dremel (en een schroevendraaier)

Bouwen van een zeer eenvoudige receptie met alleen een Dremel (en een schroevendraaier)

u kunt bouwen aan een bureau met beperkte ervaring en alleen een Dremel, en een schroevendraaier.  Een ijzerhandel moeten zitten kundig voor uw hout hakken.Ik wilde mijn bureau vervangen door een veel grotere houten.  Ik heb bijna geen gebouw vaardig
Bouwen van een Web ingeschakeld deurslot met Rest API en Raspberry PI

Bouwen van een Web ingeschakeld deurslot met Rest API en Raspberry PI

In dit instructable, bouwen we een web-enabled elektronische deurslot vanaf nul RESTFUL API, knooppunt JS en Raspberry PI gebruikt om de web-service die wordt verbruikt door de mobiele app of een REST-client.De architectuur is verdeeld in twee 3 dele