Just out of curiosity, can this be achieved without using a microcontroller?