/*
Arduino | hardware-help
water flow meter shows bogus data
harj — 7/18/24 at 2:05 AM
Hello folks, I made a flow meter and it shows flow even when
its not plugged into flow sensor (yf s201).
Please help me isolate the issue.
I am attaching a video of it and my code below
https://pastebin.com/FgRX59P1
YF-S201 sensor
https://www.dataq.com/products/accessories/flow-sensor/2000362.html#specifications
TTL output
Frequency (Hz) = 7.5 * Flow rate (L/min)
*/
#include <Arduino.h>
#include <Wire.h>
#include <U8g2lib.h>
#include <EEPROM.h>
#define RESET_BUTTON 5
int sensorPin = 2;
volatile long pulse;
volatile long flowRatePulse;
float volume;
float availableVolume;
float totalCapacity = 42;
float flowRate;
unsigned long lastTime;
//U8G2_SSD1309_128X64_NONAME0_1_HW_I2C oled(U8G2_R0, U8X8_PIN_NONE);
U8G2_SSD1306_128X64_NONAME_1_HW_I2C oled(U8G2_R0, U8X8_PIN_NONE);
// 'resetting_tank', 128x64px
const unsigned char epd_bitmap_resetting_tank [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x00, 0x7e, 0x00, 0x3e, 0xe0, 0x00, 0x1c, 0x80, 0x01, 0x0c, 0x0c, 0x1c, 0x7c, 0x00, 0xff,
0xff, 0x00, 0x78, 0x00, 0x0e, 0xe0, 0x00, 0x18, 0x80, 0x00, 0x08, 0x0c, 0x1c, 0x3c, 0x00, 0xff,
0xff, 0x00, 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x18, 0x80, 0x00, 0x18, 0x1c, 0x18, 0x1e, 0x00, 0xff,
0xff, 0x00, 0x70, 0x00, 0x06, 0xc0, 0x00, 0x08, 0x80, 0x00, 0x18, 0x1c, 0x18, 0x1e, 0x00, 0xff,
0xff, 0x60, 0x70, 0xf0, 0x07, 0xfe, 0xe0, 0x5f, 0x80, 0x04, 0x19, 0x1c, 0x10, 0x0e, 0x1c, 0xff,
0xff, 0x60, 0x70, 0x70, 0x07, 0xfc, 0xe0, 0x7d, 0xf0, 0x07, 0x1f, 0x1c, 0x10, 0x0e, 0xfe, 0xff,
0xff, 0x60, 0x70, 0x00, 0x0e, 0xf0, 0x00, 0x7c, 0xf0, 0x07, 0x1f, 0x1c, 0x00, 0x0e, 0xfe, 0xff,
0xff, 0x00, 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x7c, 0xf0, 0x07, 0x1f, 0x1c, 0x00, 0x0e, 0x06, 0xff,
0xff, 0x00, 0x78, 0x00, 0x1e, 0xc0, 0x00, 0x7c, 0xf0, 0x07, 0x1f, 0x1c, 0x00, 0x0e, 0x0e, 0xff,
0xff, 0x00, 0x78, 0xf0, 0x7f, 0xc0, 0xe0, 0x7f, 0xf0, 0x07, 0x1f, 0x1c, 0x02, 0x0e, 0x0e, 0xff,
0xff, 0x20, 0x78, 0xf0, 0xe7, 0xc1, 0xe0, 0x7f, 0xf0, 0x07, 0x1f, 0x1c, 0x02, 0x0e, 0x04, 0xff,
0xff, 0x20, 0x70, 0x00, 0x04, 0xc0, 0x00, 0x78, 0xf0, 0x07, 0x1f, 0x1c, 0x06, 0x0e, 0x00, 0xff,
0xff, 0x60, 0x70, 0x00, 0x04, 0xc0, 0x00, 0x78, 0xf0, 0x07, 0x1f, 0x1c, 0x06, 0x1e, 0x00, 0xff,
0xff, 0x60, 0x60, 0x00, 0x06, 0xe0, 0x00, 0x78, 0xe0, 0x07, 0x1f, 0x1c, 0x0e, 0x3e, 0x00, 0xff,
0xff, 0x60, 0x20, 0x00, 0x0e, 0xf0, 0x00, 0x78, 0xe0, 0x07, 0x0f, 0x0c, 0x0e, 0x7c, 0x80, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x1e, 0x78, 0x70, 0x08, 0x82, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x1c, 0x78, 0x70, 0x0c, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0c, 0x70, 0x60, 0x0c, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0c, 0x70, 0x60, 0x0c, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x8f, 0x70, 0x40, 0x0c, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x87, 0x60, 0x40, 0x0c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x87, 0x61, 0x00, 0x0c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x07, 0x60, 0x00, 0x0c, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x07, 0x60, 0x08, 0x0c, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x03, 0x40, 0x08, 0x0c, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xc3, 0x41, 0x18, 0x0c, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xc3, 0x41, 0x18, 0x0c, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc3, 0x01, 0x38, 0x08, 0x06, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'tank_empty', 128x64px
const unsigned char epd_bitmap_tank_empty [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x0f, 0x00, 0xf0, 0x0f, 0xc0, 0x7f, 0x80, 0x0f, 0x70, 0x00, 0x07, 0xf0, 0xff, 0xff,
0xff, 0xff, 0x0f, 0x00, 0xf0, 0x0f, 0x80, 0x7f, 0x00, 0x1f, 0x70, 0x00, 0x07, 0xf8, 0xff, 0xff,
0xff, 0xff, 0x0f, 0x00, 0xf0, 0x07, 0x80, 0x7f, 0x00, 0x1f, 0xf8, 0x80, 0x07, 0xf8, 0xff, 0xff,
0xff, 0xff, 0x0f, 0x00, 0xf0, 0x07, 0x80, 0x7f, 0x00, 0x1e, 0xf8, 0x80, 0x07, 0xf8, 0xff, 0xff,
0xff, 0xff, 0x0f, 0x00, 0xf0, 0x07, 0x00, 0x7f, 0x00, 0x1e, 0xf8, 0x80, 0x03, 0xfc, 0xff, 0xff,
0xff, 0xff, 0x0f, 0x00, 0xe0, 0x03, 0x00, 0x7f, 0x00, 0x1c, 0xf8, 0x80, 0x03, 0xfc, 0xff, 0xff,
0xff, 0xff, 0x8f, 0x00, 0xe0, 0x03, 0x01, 0x7f, 0x00, 0x1c, 0xf8, 0x80, 0x01, 0xfc, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0xff, 0x03, 0x01, 0x7e, 0x00, 0x18, 0xf8, 0x80, 0x00, 0xfe, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0xff, 0x81, 0x03, 0x7e, 0x00, 0x18, 0xf8, 0x00, 0x00, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0xff, 0x81, 0x03, 0x7e, 0x00, 0x10, 0xf8, 0x00, 0x00, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0xff, 0x81, 0x03, 0x7c, 0x00, 0x00, 0xf8, 0x00, 0x80, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0xff, 0xc0, 0x03, 0x7c, 0x00, 0x00, 0xf8, 0x00, 0x80, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0xff, 0x80, 0x03, 0x7c, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x7c, 0x60, 0x00, 0xf8, 0x00, 0x00, 0xfe, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x78, 0x60, 0x00, 0xf8, 0x00, 0x00, 0xfe, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x7f, 0x00, 0x00, 0x78, 0xe0, 0x00, 0xf8, 0x80, 0x01, 0xfc, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x7f, 0x00, 0x00, 0x78, 0xe0, 0x00, 0xf8, 0x80, 0x03, 0xfc, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x7f, 0x00, 0x00, 0x78, 0xe0, 0x01, 0xf8, 0x80, 0x03, 0xf8, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x7f, 0xc0, 0x03, 0x78, 0xe0, 0x01, 0xf8, 0x80, 0x07, 0xf8, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x7f, 0xe0, 0x07, 0x78, 0xe0, 0x03, 0xf8, 0x80, 0x07, 0xf8, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x3f, 0xe0, 0x07, 0x70, 0xe0, 0x03, 0xf8, 0x80, 0x07, 0xf8, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x3e, 0xc0, 0x07, 0x70, 0xc0, 0x07, 0x70, 0x00, 0x07, 0xf0, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x3e, 0xc0, 0x07, 0x70, 0xc0, 0x07, 0x70, 0x00, 0x07, 0xf0, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x20, 0x70, 0x10, 0xc0, 0x01, 0x80, 0xe1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x20, 0x70, 0x30, 0x80, 0x00, 0x80, 0xe1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x60, 0x30, 0x30, 0x00, 0x00, 0x80, 0xe1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x7f, 0x20, 0x30, 0x04, 0x00, 0x80, 0xe1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x7f, 0x00, 0x30, 0x0c, 0x87, 0x87, 0xf0, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x70, 0x00, 0x30, 0x0c, 0x87, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x70, 0x00, 0x30, 0x04, 0x87, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x70, 0x84, 0x30, 0x00, 0x87, 0x0f, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x7f, 0x84, 0x30, 0x80, 0x87, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x66, 0xc4, 0x30, 0xc0, 0x87, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x60, 0xcc, 0x30, 0xfc, 0x87, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x20, 0xec, 0x30, 0xfc, 0x87, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0f, 0x20, 0x7c, 0x10, 0xfc, 0x03, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 1040)
const int epd_bitmap_allArray_LEN = 2;
const unsigned char* epd_bitmap_allArray[2] = {
epd_bitmap_resetting_tank,
epd_bitmap_tank_empty
};
//calculate volume
void calculateVolume() {
volume = 2.347 * pulse / 1000;
availableVolume = totalCapacity - volume;
EEPROM.write(0, availableVolume);
Serial.println(availableVolume);
}
//calculate flow rate
void calculateFlowRate() {
flowRate = 2.347 * flowRatePulse / 1000 * 30;
if (millis() - lastTime > 2000) {
flowRatePulse = 0;
lastTime = millis();
}
//Serial.print(flowRate);
//Serial.println(" L/m");
}
void setup() {
Serial.begin(9600);
availableVolume = EEPROM.read(0);
pinMode(RESET_BUTTON, INPUT_PULLUP);
pinMode(sensorPin, INPUT);
attachInterrupt(digitalPinToInterrupt(sensorPin), increase, RISING);
oled.begin();
oled.setFont(u8g2_font_7x14_mf);
}
void loop() {
buttonPress();
calculateVolume();
calculateFlowRate();
//Serial.println(volume);
oled.firstPage();
do {
oled.clearBuffer();
//rectangle around the screen
oled.drawFrame(0, 0, 128, 64);
//progress bar
oled.drawFrame(12, 48, 104, 12);
oled.drawBox(14, 50, (availableVolume * 2.38095238), 8); // 100/42 = 2.38095238 ##100 is the length of progress bar
if (availableVolume > 0) {
//Print volume
oled.drawStr(15, 20, "AVAIL: ");
oled.setCursor(60, 20);
oled.print(availableVolume, 1);
oled.println(" L");
//print flow rate
oled.drawStr(15, 40, "FLOW: ");
oled.setCursor(60, 40);
oled.print(flowRate, 1);
oled.println(" L/M");
oled.sendBuffer();
} else {
oled.clearBuffer();
oled.drawXBMP(0, 0, 128, 64, epd_bitmap_tank_empty);
oled.sendBuffer();
}
} while ( oled.nextPage() );
}
void increase() {
pulse++;
flowRatePulse++;
}
//RESET button
int lastState = HIGH;
void buttonPress() {
int buttonState = digitalRead(RESET_BUTTON);
if (lastState != buttonState) {
lastState = buttonState;
if (buttonState == LOW) {
Serial.println("Button is pressed");
resetMessage();
pulse = 0;
}
if (buttonState == HIGH) {
Serial.println("Button is not pressed");
}
}
}
void resetMessage() {
//Display "RESET" message
oled.firstPage();
do {
oled.clearBuffer();
oled.drawXBMP(0, 0, 128, 64, epd_bitmap_resetting_tank);
oled.sendBuffer();
} while ( oled.nextPage() );
delay(2000);
}