I have problems with my sleep schedule, and looking at the class feedback to my proposal, I am not the only one who does. Unfortunately, with my current knowledge, I can’t come up with a design that will help me go to sleep early. However, what I can do is force myself to wake up earlier with an alarm. Normal phone alarms don’t really cut it for me as I can simply turn them off pretty fast and then go back to sleep. Alternatively, I could have used another phone app with an alarm clock feature that requires more time to solve, but having tried some of these I couldn’t find one that really works for me that doesn’t require me to pay money for it. So, I took it upon myself to create an alarm that is not only capable of waking me up, but also capable of preventing me from going back to sleep.

Project Overview

This project is focused on making an enjoyable (relatively, it is usually not enjoyable to wake up early) alarm for people who have trouble waking up early. Namely, myself. The system is able to set an alarm using the switches we have, and when the time limit is reached it rings a buzzer and starts a snake game on an 8x8 LED matrix. The game is controlled using a joystick. The user has to reach a score of 8 in this snake game to turn off the buzzer, otherwise it keeps ringing. Additionally, the system is configured to repeat the alarm every 24 hours. This means that if you set the alarm to 11 AM, it would ring at 11 AM the next day and so on. There is a reset button if the user wishes to set the alarm to a different time.


We had a few goals we wanted to achieve with this project.

  1. We wanted the buzzer to be able to wake us up. After a few tests, we concluded that we were able to achieve this goal.
  2. We wanted the alarm to be accurate. We believe that our alarm was accurate, there were a few seconds of difference but overall it was satisfactory.
  3. We wanted the snake game to take enough time to ensure the user is fully awake. On average, we completed the snake game in around 40-50 seconds which we believed was enough.

Milestone 1

By our first milestone, we had hoped to finish the ADC input and the LED matrix. We wanted to be able to read from a joystick each time there was an interrupt to learn the direction of the snake, and we wanted to be able to display whatever we wanted on the LED matrix first. We were able to achieve these by the first milestone (the ADC part was finalized the day after the deadline, but close enough)

Final Demo

By the final demo, we were able to have a working system. We had finished the snake game, the alarm and the communication between them (very simple communication that only transmits the states of the systems using GPIO pins). We realized we had achieved our goals listed above except the buzzer waking us up - but after more tests we realized that was also working.

What's next for Alarmduino

The most important step for the Alarmduino is making it more user friendly by working on the alarm. Afterwards, instead of working on the breadboard with all the janky wirings, we could switch over to a more compact PCB design. Considering the components we need, we could easily create a small PCB to house all of them (the PCB could be mounted on an Arduino board or it could have the ATMega328P on the PCB itself with the required components). Another thing to do would be to change the display we had. With the limited components we had and the trouble of shipping to Turkey, we were limited with our choices. The 8x8 LED matrix we used is definitely not what we imagined, and with a PCB we would have to solder anyway which means that we could use a display that would look better.

Built With

Share this project: