231a-ag final project

From CSclasswiki
Jump to: navigation, search

Final Project Proposal


The goal of my project is to create an alarm clock that will go off at a predefined time, and in order to shut off this alarm, the person being woken up would need to punch in the correct RGB combination code on a button keypad.

Set Up

The PC will have the time stored (taken from the Internet, or from the computer?), and display this on the PC's screen. I originally had this displaying on an LCD screen, but I realized this would be too complicated. Maybe there's some kind of GUI thing that can display the time nicely? Then, the alarm will be set. I have two ideas for how the alarm can be activated (but one might not work). Either I can attach a buzzer to the Arduino, and have the PC talk to the Arduino when it's time to activate the buzzer. I could also have the PC play a beeping music file when the predefined time has been reached.

Then, once the alarm goes off, the Arduino will activate the keypad. The person punches the RGB code onto the keypad, and the Arduino transfers these attempts to the PC, which will take care of the monitoring of whether they've entered the right combination. Once right combination has been entered, the PC will either relay to the Arduino to stop buzzing the buzzer, or will tell the beeping music file to stop playing. The reaction time will be able to be measured by starting a timer once the alarm goes off, and stopping the timer only when the person has punched the right RGB code.


The assembly language will display the time (taken from the Internet, or from the computer?), much like a regular alarm clock. It will also have an alarm that can be set at a predefined time. The assembly will also monitor the code punched (correct/incorrect?) and response time, and maybe depending on the response time, play a certain kind of song (ie. slow response time would play loud, angry music and fast response time would play more mellow music).


The Arduino will take in the RGB combinations punched in by the user, and relays the person's punch code attempts to the computer.


231a-ag RGBschematics.jpg
This is the circuit that Will O'Brien's "RGB Combination Door Lock" used. It includes the sections to connect to the door lock, which I won't be using, and therefore this section needs to be cut out. Will O'Brien explains every single section of the schematic very well on his website, and I understand some of it, but not all.

231a-ag buttonkeypad.jpg
The keypad is a result of two separate, overlapping circuits. To read the button pushes, "the Arduino brings one keypad input line high and checks the voltage of the four output lines in order. The diodes on the PC board prevent feedback across the rows and columns."

231a-ag LEDschematic.jpg
The LEDs are lit using a different circuit. "Each row of like colored LEDs is brightness controlled by a digital potentiometer. [...] Meanwhile, each column of LEDs is activated by a separate transistor. By quickly changing the resistance and stepping through the columns, each LED will appear to be individually controlled."

All the images were taken from Will O'Brien's "RGB Combination Door Lock".


  1. Button Pad 4x4 - LED Compatible
  2. Button Pad 4x4 - Breakout PCB
  3. Triple Output LED RGB (quantity TBD)
  4. various transistors - CS Department?
  5. various resistors - CS Department?
  6. various diodes - CS Department?
  7. an alarm clock - CS Department?
  8. small breadboard - CS Department?


Lucky for me, this project is definitely going to cost more than $20...

  1. Button Pad 4x4 - LED Compatible: $9.95
  2. Button Pad 4x4 - Breakout PCB: $9.95
  3. Triple Output LED RGB (quantity TBD): $1.95 each
  • Does the CS Department maybe have triple output LEDs?

TOTAL: $9.95 + $9.95 + ($1.95 x ?)= >$20.00 (or at least $21.85)