Arduino Uno, 0.96" I2C OLED Display running too slow to capture button Presses

My code is largely incomplete as its still in its infancy stage. I started out making the basic functions and have yet to put them together for the most part. I am also still waiting for parts for testing and am still trying out button libraries and I2C libraries. That is when I hit this "dead end" I am working on.

I will attach it. Maybe you can provide me some insight.

Basically the code monitors battery voltage through a voltage divider and will check the amps of the coil (this part is not written yet) and calculate the ohms of the coil. The user will select a preferred wattage which i am hoping to store in eeprom. For input there will be three buttons. an up button, a down button, and a fire button. The Fire button will "fire" if held, store wattage, wake the display, and poll the amps on single clicks, three clicks will lock the wattage from being adjusted accidentally, and 5 clicks will sleep the device. the up and down buttons are for selecting the wattage and will increase the rate that numbers increment the longer its held.

upon firing the code will calculate the correct voltage to pwm to make the output the desired watts. A number of safety checks will be implement as well. For instance it will not fire if the coil is shorted or open, it will shutdown if the battery becomes critically low, and it will not allow it to fire for longer than 10 seconds as that usually happens in the users pockets.

Asgard_v1.00.ino (20.1 KB)