-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrobo-hand_1.ino
99 lines (78 loc) · 2.73 KB
/
robo-hand_1.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
// Подключаем библиотеку для работы с сервоприводами
#include <Servo.h>
// Создаём объект для управления сервоприводом
Servo myservo_1;
Servo myservo_2;
Servo myservo_3;
Servo myservo_4;
// Подключаем тензорезисторы к пинам
const int flexPin_1 = A0; // мелкий
const int flexPin_2 = A1; // сред
const int flexPin_3 = A2; // указ
const int flexPin_4 = A3; // больш
void setup()
{
Serial.begin(9600); // скорость обмена данными
// Подключаем сервоприводы к пинам
myservo_1.attach(11); // мелкий
myservo_2.attach(10); // сред
myservo_3.attach(9); // указ
myservo_4.attach(6); // больш
}
void loop()
{
int flexPosition_1;
int servoPosition_1;
int flexPosition_2;
int servoPosition_2;
int flexPosition_3;
int servoPosition_3;
int flexPosition_4;
int servoPosition_4;
// Управление рукой робота
// Мелкий палец
flexPosition_1 = analogRead(flexPin_1); // чтение данных с вывода, к которому подключен резистор
if ((flexPosition_1 < 200) && (flexPosition_1 > 90))
servoPosition_1 = 180; // поворот вала сервопривода на 180 градусов
else
servoPosition_1 = 0;
myservo_1.write(servoPosition_1);
Serial.print("sensor1: ");
Serial.print(flexPosition_1);
Serial.print(" servo1: ");
Serial.println(servoPosition_1);
// Средний палец
flexPosition_2 = analogRead(flexPin_2);
if ((flexPosition_2 < 200) && (flexPosition_2 > 90))
servoPosition_2 = 180;
else
servoPosition_2 = 0;
myservo_2.write(servoPosition_2);
Serial.print("sensor2: ");
Serial.print(flexPosition_2);
Serial.print(" servo2: ");
Serial.println(servoPosition_2);
// Указательный палец
flexPosition_3 = analogRead(flexPin_3);
if ((flexPosition_3 < 200) && (flexPosition_3 > 90))
servoPosition_3 = 180;
else
servoPosition_3 = 0;
myservo_3.write(servoPosition_3);
Serial.print("sensor3: ");
Serial.print(flexPosition_3);
Serial.print(" servo3: ");
Serial.println(servoPosition_3);
// Большой палец
flexPosition_4 = analogRead(flexPin_4);
if ((flexPosition_4 < 200) && (flexPosition_4 > 90))
servoPosition_4 = 180;
else
servoPosition_4 = 0;
myservo_4.write(servoPosition_4);
Serial.print("sensor4: ");
Serial.print(flexPosition_4);
Serial.print(" servo4: ");
Serial.println(servoPosition_4);
delay(500); // задержка 0.5 с
}