I can see a possible problem in your debounce code
if((buttonState == HIGH) && (ledState < 0))
I believe ledState will be either 0 or 1 so the ledState test will always fail.
Perhaps try
i
f((buttonState == HIGH) && (!ledState))
I can see a possible problem in your debounce code
if((buttonState == HIGH) && (ledState < 0))
I believe ledState will be either 0 or 1 so the ledState test will always fail.
Perhaps try
i
f((buttonState == HIGH) && (!ledState))