boolean current = digitalRead(switchPin);
digitalRead() returns an int, not a boolean. This debounce code sucks.
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH && motorOn == false)
It's really hard to tell, from these names, whether currentButton refers to a switch number, a pin number, or a switch state. Better variable names would be in order.
pinMode(switchPin, INPUT);
Now, this is a good name. It's clear that it refers to a pin number, and that the pin has a switch attached to it. What isn't clear is how that switch is wired. Using the internal pullup resistor greatly simplifies the wiring. No external resistor(s) required; connect one leg to ground and the other leg to the pin.
How is your switch wired?
int count_0 = millis();
After your sketch has been running for 32 seconds, what is going to happen? Look at the millis() documentation again. The function returns an unsigned long for a reason.
if (motorOn == true) {
Since motorOn is a boolean, it can contain only two values - true and false. So, this comparison is true == true, which is true, or false == true, which is false. As you can see the result is always the value in motorOn, so the == true part is redundant.
if(motorOn)
{
is all you need.
If you want to know if the motor is off,
if(!motorOn)
{
while(count <= count_0 + 1000) {
Addition involving time can fail.
while(count - count_0 <= 1000)
{
does the same thing, and is guaranteed to work. But, count is a lousy name, since you aren't counting anything.
Why are you not using the Servo library? It makes dealing with the servo so much easier.
Finally, you haven't said what the code IS doing, and how that differs from what you want it to do. Without knowing that, it's hard to offer more than general advice.