Ви не увійшли.
Задача:
удерживать значение кислотности жидкости на уровне между 8 и 8,5 PH.
Материалы:
датчик PH https://store.smart-maic.com/ua/p964252567-datchik-urovnya-sistemah.html?gclid=CjwKCAjwi8iXBhBeEiwAKbUofakId6m-xfkWyeQJwpaxrk1K0CnYN5I3Ab-2sXpRpxa-wSczcmUSmRoCCPkQAvD_BwE
и два перистальтических насоса-дозатора RS385-635, 12В, один понижающий уровень-1 и второй повыщающий-2.
Условия:
датчик проводит опрос каждые 3 минуты.
1) Если значение = 8, или 8,1..8,5 (тоесть от 8 до 8,5), то ничего не происходит.
2) если значение меньше 8, то насос 2 включается на 4 секунды.
3) если значение больше 8,5, то насос 1 включается на 4 секунды.
чтоб ускорить коммуникацию пишите на телеграм: @vippmood
Остання редакція Proton01 (2022-08-09 16:30:15)
Неактивний
В самом простом варианте как-то так
#define pump1 4
#define pump2 5
#define sensor A0
int ph_min = 300; //?????????????????????
int ph_max = 320; //?????????????????????
int ph;
unsigned long t = 0;
bool f_pump1 = 0;
bool f_pump2 = 0;
bool flag = 0;
void setup() {
pinMode(pump1, OUTPUT);
pinMode(pump2, OUTPUT);
digitalWrite(pump1, LOW);
digitalWrite(pump2, LOW);
}
void loop() {
ph = analogRead(A0);
if (!flag) {
if (ph < ph_min) {
flag = 1;
f_pump2 = 1;
t = millis();
digitalWrite(pump2, HIGH);
}
if (ph > ph_max) {
flag = 1;
f_pump1 = 1;
t = millis();
digitalWrite(pump1, HIGH);
}
if (ph >= ph_min && ph <= ph_max) {
f_pump1 = 0;
f_pump2 = 0;
digitalWrite(pump1, LOW);
digitalWrite(pump2, LOW);
}
}
if (f_pump1 && millis() - t >= 4000) {
digitalWrite(pump1, LOW);
f_pump1 = 0;
flag = 0;
}
if (f_pump2 && millis() - t >= 4000) {
digitalWrite(pump2, LOW);
f_pump2 = 0;
flag = 0;
}
}
Неактивний
Нет, в самом простом - так (но не в самом оптимальном):
#define pump1 4
#define pump2 5
#define sensor A0
int ph_min = 300; //?????????????????????
int ph_max = 320; //?????????????????????
int ph;
unsigned long t = 0;
void setup() {
pinMode(pump1, OUTPUT);
pinMode(pump2, OUTPUT);
//digitalWrite(pump1, LOW);
//digitalWrite(pump2, LOW);
}
void loop() {
if (millis() - t >= 3*60000UL) {
t = millis();
ph = analogRead(A0);
if (ph < ph_min)
digitalWrite(pump2, HIGH);
if (ph > ph_max)
digitalWrite(pump1, HIGH);
}
if (millis() - t >= 4000) {
digitalWrite(pump1, LOW);
digitalWrite(pump2, LOW);
}
}
Неактивний
Импульса на отк не будет два таймера запшены одновремено могу. Доработать если есче
актуально
Неактивний