HIPPIE/src/Hippie.h

79 lines
2.0 KiB
C
Raw Normal View History

2017-11-20 11:39:45 +00:00
#ifndef Hippie_h
#define Hippie_h
#include <Oscillator.h>
//-- Constants
#define FORWARD 1
#define BACKWARD -1
#define LEFT 1
#define RIGHT -1
#define SMALL 5
#define MEDIUM 15
#define BIG 30
class Hippie
{
public:
2017-12-03 21:13:17 +00:00
//-- Hippie initialisation
2017-12-11 22:35:47 +00:00
void init(int YL, int YR, int RL, int RR);
void init_with_trim(int YL, int YR, int RL, int RR, int OYL, int OYR, int ORL, int ORR);
2017-11-20 11:39:45 +00:00
//-- Attach & detach functions
void attachServos();
void detachServos();
2017-12-03 21:13:17 +00:00
//-- General Purpose Motion Functions
2017-11-20 11:39:45 +00:00
void _moveServos(int time, int servo_target[]);
void oscillateServos(int A[4], int O[4], int T, double phase_diff[4], float cycle);
//-- HOME = Hippie at rest position
void home();
bool getRestState();
void setRestState(bool state);
2017-12-03 21:04:39 +00:00
2017-12-03 21:13:17 +00:00
//-- Motion Functions
2017-12-02 12:21:05 +00:00
void jump(float steps=1, int T = 600);
2017-11-20 11:39:45 +00:00
void walk(float steps=4, int T=1000, int dir = FORWARD);
2017-12-02 12:21:05 +00:00
void turn(float steps=4, int T=1000, int dir = LEFT);
2017-11-20 11:39:45 +00:00
void bend (int steps=1, int T=1400, int dir=LEFT);
void shakeLeg (int steps=1, int T = 2000, int dir=RIGHT);
2017-12-02 12:21:05 +00:00
void updown(float steps=1, int T=1000, int h = 40);
void swing(float steps=1, int T=1000, int h=40);
void tiptoeSwing(float steps=1, int T=900, int h=40);
void jitter(float steps=1, int T=500, int h=50);
void ascendingTurn(float steps=1, int T=900, int h=50);
2017-11-20 11:39:45 +00:00
2017-12-02 12:21:05 +00:00
void moonwalker(float steps=1, int T=900, int h=50, int dir=LEFT);
2017-11-20 11:39:45 +00:00
void crusaito(float steps=1, int T=900, int h=20, int dir=FORWARD);
2017-12-02 12:21:05 +00:00
void flapping(float steps=1, int T=1000, int h=50, int dir=FORWARD);
2017-12-03 21:04:39 +00:00
void test_pos();
2017-11-20 11:39:45 +00:00
void new_walk(float steps =4, int T=750, int dir = FORWARD);
void new_turn(float steps =2, int T=1000, int dir = LEFT);
2017-12-03 21:04:39 +00:00
2017-11-20 11:39:45 +00:00
private:
2017-12-03 21:04:39 +00:00
2017-11-20 11:39:45 +00:00
Oscillator servo[4];
int servo_pins[4];
int servo_trim[4];
int servo_position[4];
unsigned long final_time;
unsigned long partial_time;
float increment[4];
bool isHippieResting;
void _execute(int A[4], int O[4], int T, double phase_diff[4], float steps);
};
#endif