starting button

The problem is that you calculate the value for "reading" only once before you enter "buttonfunc();". Buttonfunc then loops forever, waiting for reading to go HIGH -- which it never will -- and -- yikes! -- calling itself recursively! This is a crash waiting to happen (quickly!). Here's a better suggestion for buttonfunc():

He's waiting for the pin to go HIGH, while your code waits for the pin to go LOW. So your function will exit immediately as the pin already is LOW. The loop must wait for the pin to go HIGH.

void buttonfunc()
{
  while (digitalRead(buttonPin) != HIGH); // do nothing!
  Serial.println("Starting systems...");
}