-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAndar.ino
117 lines (93 loc) · 1.93 KB
/
Andar.ino
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/**@file Andar.ino */
#include <Servo.h>
//Objetos da perna esquerda
Servo servo2;
Servo servo4;
Servo servo6;
Servo servo8;
//Objetos da perna direita
Servo servo1;
Servo servo3;
Servo servo5;
Servo servo7;
//Posições iniciais dos motores da esquerda
int pos2 = 100;
int posesq = 60;
int pos8 = 50;
//Posições iniciais dos motores da direita
int pos1 = 5;
int posdir = 110;
int pos7 = 180;
/**
* Configuração inicial do arduino e dos motores
* */
void setup() {
//Inicialização dos motores da esquerda
servo2.attach(52);
servo4.attach(48);
servo6.attach(44);
servo8.attach(40);
//Inicialização dos motores da direita
servo1.attach(34);
servo3.attach(30);
servo5.attach(24);
servo7.attach(22);
servo3.write(100);
servo5.write(100);
servo4.write(50);
servo6.write(50);
}
/**
* @brief Move as pernas para a frente em uma sequência de passos.
*
* Anda pra frente com ambas as pernas
*
*/
void andarFrente(){
for (int i = 0; i <= 7; i++) {
//Perna esquerda
servo2.write(pos2 + i);
servo8.write(pos8 + i);
//Perna direita
servo1.write(pos1 + i);
servo7.write(pos7 + i);
delay(100);
}
delay(1000);
while (posesq <= 70 && posdir <= 120) {
servo4.write(posesq);
servo6.write(posesq);
servo3.write(posdir);
servo5.write(posdir);
delay(100);
posesq += 1;
posdir += 1;
}
delay(1000);
for (int i = 0; i <= 7; i++) {
//Perna esquerda
servo2.write(pos2 + 7 - i);
servo8.write(pos8 + 7 - i);
//Perna direita
servo1.write(pos1 + 7 - i);
servo7.write(pos7 + 7 - i);
delay(100);
}
delay(1000);
while (posesq >= 50 && posdir >= 100) {
servo4.write(posesq);
servo6.write(posesq);
servo3.write(posdir);
servo5.write(posdir);
delay(100);
posesq -= 1; // Decrementa pos1
posdir -= 1; // Incrementa pos2
}
delay(1000);
}
/**
* Loop principal do arduino
* */
void loop() {
andarFrente();
}