@@ -23,6 +23,9 @@ Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
2323// 6 legs, 2 servos per leg, 3 EPA (Min, Neutral, Max) per servo
2424uint16_t hexapodEpa[NUM_LEGS][NUM_SERVOS_PER_LEG][NUM_EPA_PER_SERVO];
2525
26+ // the 3rd servo for each leg, for 4 only legs though
27+ uint16_t hexapodSteadyLegs[4 ][NUM_EPA_PER_SERVO];
28+
2629/* *
2730* Setup the End Point Adjustment for all the legs, all the servos
2831*/
@@ -88,6 +91,23 @@ void setupEpa() {
8891 hexapodEpa[5 ][1 ][0 ] = DEFAULT_SERVO_NEUTRAL_EPA + 20 ;
8992 hexapodEpa[5 ][1 ][1 ] = DEFAULT_SERVO_NEUTRAL_EPA + 20 ;
9093 hexapodEpa[5 ][1 ][2 ] = DEFAULT_SERVO_NEUTRAL_EPA - 80 ;
94+
95+ // Custom, set neutral values for steady legs
96+ hexapodSteadyLegs[0 ][MIN_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA;
97+ hexapodSteadyLegs[0 ][NEUTRAL_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA - 100 ;
98+ hexapodSteadyLegs[0 ][MAX_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA;
99+
100+ hexapodSteadyLegs[1 ][MIN_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA;
101+ hexapodSteadyLegs[1 ][NEUTRAL_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA - 110 ;
102+ hexapodSteadyLegs[1 ][MAX_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA;
103+
104+ hexapodSteadyLegs[2 ][MIN_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA;
105+ hexapodSteadyLegs[2 ][NEUTRAL_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA;
106+ hexapodSteadyLegs[2 ][MAX_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA;
107+
108+ hexapodSteadyLegs[3 ][MIN_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA;
109+ hexapodSteadyLegs[3 ][NEUTRAL_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA - 60 ;
110+ hexapodSteadyLegs[3 ][MAX_VALUE] = DEFAULT_SERVO_NEUTRAL_EPA;
91111}
92112
93113/* *
@@ -105,6 +125,12 @@ void servosToNeutral() {
105125 pwm.setPWM (currentServoNum, 0 , hexapodEpa[i][j][1 ]);
106126 }
107127 }
128+
129+ // Also set the steady legs to neutral
130+ pwm.setPWM (12 , 0 , hexapodSteadyLegs[0 ][1 ]);
131+ pwm.setPWM (13 , 0 , hexapodSteadyLegs[1 ][1 ]);
132+ pwm.setPWM (14 , 0 , hexapodSteadyLegs[2 ][1 ]);
133+ pwm.setPWM (15 , 0 , hexapodSteadyLegs[3 ][1 ]);
108134}
109135
110136/* *
0 commit comments