используйте прерывания. Когда происходит изменение состояние на ножке с кнопкой - изменяете цвет. Например по каждому нажатию. В основном цикле уберите изменение цвета.
Т.е. прерывание запускается только в момент нажатия кнопки и там изменяется переменная, отвечающая за цвет. В основном цикле вы только выставляет цвет светодиода, в зависимости от текущего значения переменной