Paso 5: El código
El proyecto no es complicado, pero tiene muchas variables. Más prudente es definirlos claramente y dejar sus comentarios en un archivo único:
ArmDefine.h
Este archivo también debe establecer los ángulos de servos de mínimo, máximo y inicial. El código incluido en este tutorial, tiene dos juegos de parámetros para los brazos robóticos que he probado en mi proyecto (claro que solamente un grupo de constantes debe ser utilizado):
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 verduscos 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 verduscos 90
- #define midShou 90
- #define midElbw 0
Cada tipo de brazo tiene un conjunto diferente de parámetros y es importante que encontrar el derecho para el suyo. Lo que sugiero es que inicialmente los potenciómetros (potes) permanece en su punto medio y el mapeo del PWM salidas se establecen en los valores por defecto: Max = 255, Min = 0 y media = 126 ("#defines" arriba). Ellos, empezar variando las macetas (uno por uno) y seguir en el Serial Monitor (o LCD) cuál debe ser el valor mínimo y máximo donde el brazo funciona correctamente. Serán los valores finales que se utilizará para la configuración (cambiar mis valores originales en ArmDefine.h.
Para "grabar" los sistemas de coordenadas (o pasos) que debe desempeñar el robot, se utilizan matrices de datos:
- int gripPosition [100];
- int basePosition [100];
- int shouPosition [100];
- int elbwPosition [100];
- int positionIndex = 0;
Tenga en cuenta que yo no estoy manteniendo la posición "almacenada" y al final del programa "robot", el índice está a cero y el robot se espera para la grabación de una nueva secuencia (el programa se pierde). Alternativamente, usted podría mantener estas matrices de datos en la EEPROM del Arduino, por ejemplo. Hacer esto, el programa se ejecutaría otra vez o incluso podría tener más de un programa almacenado.