-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathArduino.ino
144 lines (111 loc) · 4.32 KB
/
Arduino.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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
char data;
int N1 = 0, N3 = 0; // переменные для чтения-записи ком порта
int N2 = 0, N4 = 0;
int N5 = 0;
int test = 36;
int i = 0;
byte Name1 = 30, Name2 = 1, Name3 = 1,
Name4 = 4; // данные для идентификации устройства
// Name1=10 -насос 40 -шейкер 70 -детектор 90 -аспиратор
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(7, OUTPUT);
digitalWrite(7, LOW);
}
void loop() {
if (Serial.available() > 0) // чтоние порта
{
N1 = Serial.read();
delay(20); // команда от 10 до 19
N2 = Serial.read();
delay(20); // параметр 1
N3 = Serial.read();
delay(20); // параметр2
N4 = Serial.read();
delay(20); // параметр 3
N5 = Serial.read(); // delay(20); // параметр 3
if (N1 == 1 && N2 == 2 && N3 == 3 &&
N4 == 4) { // запрос идентификации устройства
// записываем в com порт параметры для идентификации устройства
Serial.write(Name1);
delay(20);
Serial.write(Name2);
delay(20);
Serial.write(Name3);
delay(20);
Serial.write(Name4); // delay(10);
}
if (N1 != 1) { // задание для выполнения
Serial.write(Serial.available());
ParametrAnaliser(); // разбираемся что означает команда N1-N4
}
} // END чтоние порта
}
void ParametrAnaliser(
void) { // функция анализа пришедшией с ком порта команды
//-----------------------------------ДЕТЕКТОР КЛЕТ ПЛОТНОСТИ
if (N1 == 71 && N4 == 5 &&
N5 == 123) { // команда запрос температуры (70, 0, 0, 5, 123)
Serial.write(5);
delay(10); // ответ на запрос температуры вернет 5, 5, A, B где
// А.B - целая и дробная части float числа температуры
Serial.write(5);
delay(10);
Serial.write(test);
delay(10);
Serial.write(71);
delay(10);
test++;
if (test > 100)
test = 0;
}
if (N1 == 75 &&
N5 == 123) { // команда запрос клеточной плотности (75, 0, 0, 0, 123)
Serial.write(3);
delay(10); // ответ на запрос клет лотности вернет 3, 0, A, B
// где А.B - целая и дробная части float числа
Serial.write(0);
delay(10);
Serial.write(test);
delay(10);
Serial.write(75);
delay(10);
test += 10;
if (test > 100)
test = 0;
}
//-----------------------------------НАСОС----------------
if (N1 == 11 &&
N5 == 123) { // старт перистальт насоса 11, 111 , 1, 37, 123
test = N4;
digitalWrite(7, HIGH);
}
if (N1 == 10 &&
N5 == 123) { // CТОП перистальт насоса 10, 0 , 0, 0, 123
test = N4;
digitalWrite(7, LOW);
}
//-----------------------------------АСПИРАТОР_______________________
if (N1 == 91 &&
N5 == 123) { // старт аспиратора насоса 91, 111 , 1, 37, 123
test = N4;
digitalWrite(7, HIGH);
}
if (N1 == 90 &&
N5 == 123) { // CТОП аспиратора насоса 90, 0 , 0, 0, 123
test = N4;
digitalWrite(7, LOW);
}
//-----------------------------------
//-----------------------------------ШЕЙКЕР_______________________
if (N1 == 41 && N5 == 123) { // старт шейкера насоса 41, 0 , 0, 2, 123
test = N4;
digitalWrite(7, HIGH);
}
if (N1 == 40 && N5 == 123) { // CТОП шейкера насоса 40, 0 , 0, 0, 123
test = N4;
digitalWrite(7, LOW);
}
//-----------------------------------
}