Поскольку чёткого словесного описания того, что программа должна делать нет, то всю логику проверить нет возможности. Но первая очевидная ошибка - это то, что Вы для всех событий используете единственную переменную last_time. Так в жизни не бывает. У Вас в программе одновременно отсчитываются несколько временных интервалов и для каждого должен быть свой счётчик.
Рекомендую погуглить статьи на тему "конечные автоматы на ардуино". Это наиболее универсальный подход к решению задач, подобных вашей.
Ну и как-то немного странно - нет кнопки. Два проводка воткнутые в ардуину, которые можно замыкать между собой - вполне себе кнопка!
p.s. Если честно, есть ещё один путь. Использовать одну из библиотек с "таймерами". Там вся эта работа с миллис убрана от пользователя. Но лучше всё-таки один раз самому разобраться, а уж потом, когда будет понимание, можно использовать что угодно.