Class to drive a Hexapod Robot using two PCA9685 PWM Driver boards.
Dependencies: Gait Hexapod_Leg PCA9685 Tripod
Hexapod.cpp
- Committer:
- el13cj
- Date:
- 2016-05-11
- Revision:
- 3:82ac75ea08a7
- Parent:
- 2:e83b4acfcb36
File content as of revision 3:82ac75ea08a7:
#include "Hexapod.h" #define I2C_ADDR_1 0x82 #define I2C_ADDR_2 0x84 Hexapod::Hexapod(I2C i2c) : board_1(I2C_ADDR_1, i2c, 50), board_2(I2C_ADDR_2, i2c, 50), //*GROUP 1* leg_1(board_1, leg_cent[1], leg_step[1], leg_out[0], true), leg_5(board_2, leg_cent[5], leg_step[5], leg_out[1], false), leg_3(board_1, leg_cent[3], leg_step[3], leg_out[2], true), group_1(board_1, leg_1, leg_5, leg_3, 1, 0), //** //*GROUP 2* leg_4(board_2, leg_cent[4], leg_step[4], leg_out[0], false), leg_2(board_1, leg_cent[2], leg_step[2], leg_out[1], true), leg_6(board_2, leg_cent[6], leg_step[6], leg_out[2], false), group_2(board_2, leg_4, leg_2, leg_6, 2, 3), //** gait(group_1, group_2) { } void Hexapod::init(void) { board_1.init(); board_2.init(); /* group_1.set_gait_start(0); group_2.set_gait_start(5); */ stand(); } void Hexapod::stand(void) { leg_1.set_joint_angles(0, 0, -90); leg_2.set_joint_angles(0, 0, -90); leg_3.set_joint_angles(0, 0, -90); board_1.update(); leg_4.set_joint_angles(0, 0, -90); leg_5.set_joint_angles(0, 0, -90); leg_6.set_joint_angles(0, 0, -90); board_2.update(); } void Hexapod::walk(int Dir) { gait.stop(); direction = Dir; gait.start(1); } void Hexapod::halt(void) { gait.stop(); }