-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathLeg.cpp
84 lines (70 loc) · 1.91 KB
/
Leg.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "Leg.h"
#include <Arduino.h>
#include <Multiservo.h>
Leg::Leg(short int pin_hip, short int pin_knee, short int pin_ankle, short int angle_hip, short int angle_knee, short int angle_ankle, char leg_side)
{
leg_Angle = {angle_hip, angle_knee, angle_ankle};
if(leg_side == 'l' || leg_side == 'r') {
side = leg_side;
}
HIP.attach(pin_hip);
KNEE.attach(pin_knee);
ANKLE.attach(pin_ankle);
setupLeg();
}
Leg::Leg() {
}
Angle Leg::getStaticAngle() {
return leg_Angle;
}
void Leg::stand() {
moving({1, 1, 1});
}
void Leg::setupStaticAngle(short int angle_hip, short int angle_knee, short int angle_ankle)
{
leg_Angle = {angle_hip, angle_knee, angle_ankle};
}
bool Leg::setupSide(char leg_side)
{
if(leg_side == 'l' || leg_side == 'r') {
side = leg_side;
return true;
}
else {
return false;
}
}
void Leg::setupLeg()
{
HIP.write(leg_Angle.hip);
KNEE.write(leg_Angle.knee);
ANKLE.write(leg_Angle.ankle);
leg_CurentAngle = {leg_Angle.hip, leg_Angle.knee, leg_Angle.ankle};
}
Angle Leg::getCurentAngle()
{
return leg_CurentAngle;
}
bool Leg::moving(Angle angle)
{
if(side == 'l') {
HIP.write(leg_Angle.hip + angle.hip);
leg_CurentAngle.hip = leg_Angle.hip + angle.hip;
KNEE.write(leg_Angle.knee + angle.knee);
leg_CurentAngle.knee = leg_Angle.knee + angle.knee;
ANKLE.write(leg_Angle.ankle + angle.ankle);
leg_CurentAngle.ankle = leg_Angle.ankle + angle.ankle;
}
else if (side == 'r') {
HIP.write(leg_Angle.hip - angle.hip);
leg_CurentAngle.hip = leg_Angle.hip - angle.hip;
KNEE.write(leg_Angle.knee - angle.knee);
leg_CurentAngle.knee = leg_Angle.knee - angle.knee;
ANKLE.write(leg_Angle.ankle - angle.ankle);
leg_CurentAngle.ankle = leg_Angle.ankle - angle.ankle;
}
else {
return false;
}
return true;
}