Stap 5: De CODE
Het project is niet ingewikkeld, maar het heeft veel variabelen. Het meest verstandige is duidelijk definiëren hen en laat zijn opmerkingen over een uniek bestand:
ArmDefine.h
Dit bestand moet ook de minimum en maximum inicial servos hoeken instellen. De code opgenomen in deze tutorial, heeft twee sets van parameters voor de robotarmen die ik in mijn project getest (uiteraard alleen een groep constanten moet worden gebruikt):
MeArm 4-DOF
- #define minGrip 15
- #define minBase 0
- #define minShou 60
- #define minElbw 60
- #define maxGrip 45
- #define maxBase 170
- #define maxShou 180
- #define maxElbw 150
- #define midGrip 30
- #define midBase 87
- #define midShou 138
- #define midElbw 100
SS 3-DOF
- #define minGrip 75
- #define minBase 5
- #define minShou 5
- #define minElbw 0
- #define maxGrip 125
- #define maxBase 150
- #define maxShou 155
- #define maxElbw 0
- #define midGrip 100
- #define midBase 90
- #define midShou 90
- #define midElbw 0
Elk type arm heeft een andere set parameters en het is belangrijk dat u het recht voor jou vinden. Wat ik stel is dat in eerste instantie de potentiometers (potten) blijven in het middelpunt en de toewijzing van de PWM-uitgangen zijn ingesteld op de standaardwaarden: Max = 255, Min = 0 en medio = 126 ("#defines" hierboven). Hen, start variërend van de potten (één voor één) en volgt u de seriële Monitor (of LCD) wat moet het minimale en maximale waarden waar de arm werkt naar behoren. Die zal worden de resultaatwaarden moet worden gebruikt voor de instellingen (mijn oorspronkelijke waarden op ArmDefine.h wijzigen.
Voor "opnemen" de sets coördinaten (of stappen) die de robot is weggelegd, ik zal gegevensmatrices gebruiken:
- gripPosition int [100];
- basePosition int [100];
- shouPosition int [100];
- elbwPosition int [100];
- positionIndex int = 0;
Merk op dat ik ben niet het bijhouden van de "opgeslagen" positie aan het einde van de "robot"-programma, de index terug naar nul is en de robot op de opname van een nieuwe reeks wachten zal (het programma is verloren). Als alternatief, je kon houden deze gegevensmatrices in de Arduino EEPROM, bijvoorbeeld. Dat te doen, het programma opnieuw zou worden uitgevoerd of zelfs je zou kunnen hebben meer dan één opgeslagen programma.