This alone is fatal:
buttonPush = 1;
if (buttonPush == 1){ ...
When the button is pressed you set buttonPush and then immediately test to see if it is set.
As it always is set, the LED never gets turned off as the "else" condition is never met.
Even when that is fixed you have other issues.
I suggest that "expanding" the code along the lines I have shown in (3) below will help you immensely with visualising what your code does.
There are a large number of editors which handle this task in various ways, but just plain tabbing and white space with a basic editor helps muchly.
It seems almost certain that your code will NOT do what you intend when it does work "properly", but there are several issues below that need addressing (one fatal, others less so) - see "ISSUES" below.
At present it will not do any of these.
This alone is fatal:
buttonPush = 1;
if (buttonPush == 1){ ...
When the button is first pressed you set buttonPush and then immediately test to see if it is set. As it always is the LED never gets turned off as the "else" condition is never met.
Even when that is fixed you have other issues.
I suggest that "expanding" the code along the lines I have shown in (3) below will help you immensely with visualising what your code does.
There are a large number of editors which handle this task in various ways, but just plain tabbing and white space with a basic editor helps muchly.
Initially I thought that yourThis has been edited to match my main conclusion which was already covered above {} nesting(the problem was wrong,not nesting but on further examination found it was OKa test that can never fail - as covered above) but the formatting comments are relevant.
Your
Your code is written in a standard (or usual) manner. Some are able to handle such without problem, but I (and many others) find such layout immensely hard to read and, importantly, easy to bury errors in.
The The following is overdone - I used existing tabs and expanded it in Word :-) - but to me the following makes it immensely more readable. Layout and herestyle are a matter of personal preference, very usefullyand there are many opinions re what is "best", shows that the basicbut something which allows ease of visualisation of program decision structure is OK - SO the fundamental error must lie outside loop(). A mismatched data type then became an obvious thingliable to look for, although I did go looking for millis() related unsigned long assignments first as this is a common errorbe useful.