Arduino Mario Clock
It's a musical desktop alarm clock with a theme of well-known MARIO game. Actually I like to wake up with the Mario theme instead of my cellphone. Also the LEDs (color tubes) blinking make it more beautiful.
Features:
- Display of Time, Date, Temperature
- Mario image and music on startup theme and alarm time
- Adjustable time, date, alarm
Used parts:
- 1x Arduino ProMini 5v
- 1x Nokia 5110 LCD
- 1x DS1307 module (real-time clock)
- 1x Speaker/Buzzer
- 1x DS18b20 Temp sensor
- 1x Electronic board
- 4x LED (different colors)
- 4x Push button
- 4x Resistor 220 (for LEDs)
- 5x Resistor 1K (4x for buttons, 1x for Temp sensor)
- 1x Hot glue stick (tube) which cut into 4 pieces 2x 6cm and 2x 8cm
- 8x metal rings and cylinders (I used Ferrite beads salvaged from my old printers)
- 1x Plastic box
- 5x mini battery, or 4x AA battery
- Tools: Hot-glue gun, soldering iron, pliers, some wires, ...
Make a Desktop Clock Box
If you want to use it as a real desktop clock, so find a pretty box. I've used the soldering iron to melt the box and making holes for pushh buttons and the lcd.
Make the Circuit
Attach the push buttons and resistors on the board. Fit the board in the box via hot-glue. Connect the LEDs under the glue tubes. Use the solderig iron to make a propper hole inside the tubes. Fit the parts like as temp sensor, rtc, batteries and others inside the box via hot-glue.
Arduino Code
I've made a few images (Mario splash screen, Mario jump, Temperature icon, Alarm icon) with MSPaint which can be converted to binary data via LCDAssistant. All the coed is attached.
I think the code is enough plain and simple but, the following code hints can be helpful.
Classes:
- NokiaFa5110: Nokia LCD driver class.
- Util: Bitmap images.
- DS1307RTC, Time: Used for date time module.
- Wire, OneWire, DallasTemperature: Used for temperature sensor.
- EEPROM, avr/pgmspace: To use the EEPROM memory.
- Narcoleptic: A handy class to lower the battery usage via stand by delays.
Hints:
- A main switch-case and state variable used to handle the different menus and program states.
- The EEPROM memory has used to save the adjusted date and time variables.
- I've tried to partially refresh the LCD when the time, date or temp will change. The LCD is most battery consuming part.
- Narcoleptic class make it easy to lower the Arduino board battery usage, when there is no job to do (delay).