#1 2022-08-09 16:22:42

Proton01
Учасник
Зареєстрований: 2022-08-09
Повідомлень: 1

Ищу разработчика для написания скетча за вознаграждение

Задача:
удерживать значение кислотности жидкости на уровне между 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)

Неактивний

#2 2022-08-09 18:28:40

г0сть
Учасник
Зареєстрований: 2022-06-09
Повідомлень: 33

Re: Ищу разработчика для написания скетча за вознаграждение

В самом простом варианте как-то так

#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;
  }
}

Неактивний

#3 2022-08-09 23:04:48

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 232

Re: Ищу разработчика для написания скетча за вознаграждение

Нет, в самом простом - так (но не в самом оптимальном):

#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);
  }
}

Неактивний

#4 2022-08-10 08:32:23

г0сть
Учасник
Зареєстрований: 2022-06-09
Повідомлень: 33

Re: Ищу разработчика для написания скетча за вознаграждение

Honey пише:

Нет, в самом простом - так

А, ну да, про раз в 3 минуты то я прощелкал  roll

Неактивний

#5 2022-09-24 18:21:34

Novotoroniks
Учасник
Зареєстрований: 2022-09-24
Повідомлень: 1

Re: Ищу разработчика для написания скетча за вознаграждение

Импульса на отк не будет два таймера запшены одновремено могу. Доработать если есче
актуально

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму