Собственно непонятно, последняя строчка, buttonWasUp = buttonIsUp, то он примет значение false, и тогда он ни когда не пройдет условие на следующем цикле. Собственно проблема токо в понимании.
Первой строчкой в цикле идёт boolean buttonIsUp = digitalRead(BUTTON_PIN); И тут переменная buttonIsUp может стать TRUE А последней строчкой идёт buttonWasUp = buttonIsUp соответственно она тоже будет TRUE в этом случае