Аппаратное прерывание для датчика расхода

Добрый день, сделал поливайку домашней теплицы , но столкнулся с такой проблемой, что не могу разделить по двум кнопкам разный расход ( чтобы при нажатии первый кнопки наливался один объём, а при нажатии второй кнопки - другой объём, отличный от первого)

использую один датчик расхода воды и один наос с реле

вот скетч

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

Добро пожаловать на форум.
У вас будет в разы больше шансов получить помощь, если вы вставите код по правилам форума, оформив его соответствующим тегом.
Скажу больше - так, как код вставлен сейчас - его и смотреть никто не будет.
Выделите весь код и нажмите кнопку <\> вверху окошка редактирования

по моему для начала надо привести математику к целочисленной

Всегда наливается 0,4?
Потому что условие в строке 47 стоит раньше, чем условие в строке 71, реле отключается раньше, и попадая в условие на 71 строке, насос уже выключен.
Нужно еще добавить проверку на какую кнопку нажали.