Добрый день, сделал поливайку домашней теплицы , но столкнулся с такой проблемой, что не могу разделить по двум кнопкам разный расход ( чтобы при нажатии первый кнопки наливался один объём, а при нажатии второй кнопки - другой объём, отличный от первого)
использую один датчик расхода воды и один наос с реле
вот скетч
#define button_pin 3 // пин кнопки
#define relay_pin 6 // пин реле
#define button_pinnn 7 // пин кнопки
boolean butt_flag = 0; // флажок нажатия кнопки
boolean butt; // переменная, харнящая состояние кнопки
boolean flag = 0; // флажок режима
boolean butt_flagg = 0; // флажок нажатия кнопки
boolean buttt; // переменная, харнящая состояние кнопки
boolean flagg = 0;
unsigned long last_press; // таймер для фильтра дребезга
volatile double waterFlow;
void setup() {
Serial.begin(9600); //baudrate
pinMode(button_pin, INPUT_PULLUP);
pinMode(button_pinnn, INPUT_PULLUP);
pinMode(relay_pin, OUTPUT);
attachInterrupt(0, pulse, FALLING); //DIGITAL Pin 2: Interrupt 0
waterFlow = 0.000;
}
void pulse() //measure the quantity of square wave
{
waterFlow += 1.0 / 3510.0;
}
void loop() {
butt = !digitalRead(button_pin); // считать текущее положение кнопки
if (butt == 1 && butt_flag == 0 && millis() - last_press > 1000) { // если кнопка НАЖАТА, до этого была была ОТПУЩЕНА
butt_flag = 1; // запоминаем, что нажимали кнопку
flag = !flag; // инвертируем флажок
last_press = millis(); // запоминаем время
digitalWrite(relay_pin, flag); // подаём сигнал на пин реле / светодиода
}
if (butt == 0 && butt_flag == 1) { // если кнопка ОТПУЩЕНА, и до этого была НАЖАТА
butt_flag = 0; // запоминаем, что отпустили кнопку
}
if(waterFlow < 0.4){
Serial.print("waterFlow:");
Serial.print(waterFlow);
Serial.println(" L");
delay(1000);
}
else {
digitalWrite(relay_pin, 0);
waterFlow = 0.000;
}
butt = !digitalRead(button_pinnn); // считать текущее положение кнопки
if (butt == 1 && butt_flag == 0 && millis() - last_press > 1000) { // если кнопка НАЖАТА, до этого была была ОТПУЩЕНА
butt_flag = 1; // запоминаем, что нажимали кнопку
flag = !flag; // инвертируем флажок
last_press = millis(); // запоминаем время
digitalWrite(relay_pin, flag); // подаём сигнал на пин реле / светодиода
}
if (butt == 0 && butt_flag == 1) { // если кнопка ОТПУЩЕНА, и до этого была НАЖАТА
butt_flag = 0; // запоминаем, что отпустили кнопку
}
if(waterFlow < 0.5){
Serial.print("waterFlow:");
Serial.print(waterFlow);
Serial.println(" L");
delay(1000);
}
else {
digitalWrite(relay_pin, 0);
waterFlow = 0.000;
}
}