3737#define SERVO_SPEED_MIN 20
3838#define SERVO_SPEED_MAX 80
3939
40- //#define DEBUG
40+ // #define DEBUG
4141
4242#define SERVO_COUNT 8 // Number of servos to be controlled by ServoEasing
4343
4444#define LEG_IK_MIN 75 // Min solvable height of leg between hip and ankle
45- #define LEG_IK_MAX 170 // Max solvable height of leg between hip and ankle
45+ #define LEG_IK_MAX 180 // Max solvable height of leg between hip and ankle
4646
4747#define NOVAL 1000
4848
49- //#define MPU6050_ENABLED // Enable MPU6050
49+ // #define MPU6050_ENABLED // Enable MPU6050
5050//#define MPU6050_DEBUG // Debug in serial plotter
51- //#define ANIMATE_ENABLED // Enable random animations
52-
51+ #define ANIMATE_ENABLED // Enable random animations
5352
5453// Arrays to store servo min / max positions to avoid mechanical issues due
5554// NOTE: attach() disregards this, set PosRest to be within range of the servo's physical boundaries
@@ -63,24 +62,30 @@ int PosSleep[SERVO_COUNT] = {40, 60, 95, 140, 120, 85, PosMax[7], 90};
6362//0, 3 = HIP
6463int PosStart [SERVO_COUNT ] = {60 , 0 , 165 , 120 , 180 , 10 , 90 , 90 };
6564
66-
65+ int PosBackpack [ SERVO_COUNT ] = { 45 , 90 , 165 , 135 , 90 , 10 , 90 , 90 }; // straighten legs and point feet to fit in backpack upright
6766
6867//int PosRest[SERVO_COUNT] = {S1_REST, S2_REST, S3_REST, S4_REST, S5_REST, S6_REST, S7_REST, S8_REST, S9_REST};
6968int PosRest [SERVO_COUNT ] = {60 , 0 , 165 , 120 , 180 , 10 , 90 , 90 };
7069
7170int PosConfig [SERVO_COUNT ] = {90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 };
7271
7372// Poses
74- int PosStand [SERVO_COUNT ] = {40 , 60 , 95 , 140 , 120 , 85 , NOVAL , NOVAL };
73+ int PosStand [SERVO_COUNT ] = {45 , 75 , 95 , 135 , 105 , 85 , NOVAL , NOVAL };
7574int PosLookLeft [SERVO_COUNT ] = {NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , 180 };
7675int PosLookRight [SERVO_COUNT ] = {NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , 0 };
77- int PosLookRandom [SERVO_COUNT ] = {NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , -1 , NOVAL }; // Made random by calling the function moveRandom() if the value is -1
76+ int PosLookRandom [SERVO_COUNT ] = {NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , -1 , -1 }; // Made random by calling the function moveRandom() if the value is -1
7877int PosLookUp [SERVO_COUNT ] = {NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , 60 , 90 };
7978int PosLookDown [SERVO_COUNT ] = {NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , NOVAL , 120 , 90 };
8079
8180// Array of poses except PosRest and PosSleep (which are used for initialization and reset of position)
8281int * Poses [] = {PosStand , PosLookLeft , PosLookRight , PosLookUp , PosLookDown , PosLookRandom };
8382
83+ int backpackPin = 12 ;
84+ bool backpack = false;
85+
86+ int restrainPin = PIN_A1 ;
87+ bool restrainingBolt = false;
88+
8489void blinkLED ()
8590{
8691 digitalWrite (LED_BUILTIN , HIGH );
0 commit comments