1
0
mirror of https://github.com/taigrr/arduinolibs synced 2025-01-18 04:33:12 -08:00

More docs for alarm clock example

This commit is contained in:
Rhys Weatherley 2012-05-24 10:19:43 +10:00
parent 553a87b2d4
commit 9a674fc632
7 changed files with 70 additions and 53 deletions

View File

@ -22,7 +22,74 @@
/** /**
\file alarm-clock.dox \file alarm-clock.dox
\page alarm_clock Wind-Up Alarm Clock \page alarm_clock Alarm Clock
\section clock_features Features
The alarm clock described on this page is a large example application that
uses many of the classes in the provided libraries: FreetronicsLCD, Form,
Field, SoftI2C, DS1307RTC, Melody and \ref power_save "PowerSave".
The clock has the following features:
\li Displays both the time and date.
\li 12 hour and 24 hour time display modes.
\li Up to 4 configurable alarm times, plus a snooze alarm.
\li Three alarm sounds to choose from.
\li Configurable alarm timeout between 2 and 10 seconds.
\li Single button to activate the back light and/or stop the alarm.
\li Up, down, left, and right buttons to change clock settings.
\section clock_main_circuit Main circuit
The main clock circuit consists of an Arduino Uno compatible board, a 16x2
LCD module, a realtime clock chip, and a piezo buzzer for the alarm:
\image html alarm_circuit.png
Some of the components can be purchased ready-made as the
<a href="http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide">Freetronics
16x2 LCD Shield</a> and the <a href="http://www.sparkfun.com/products/99">SparkFun
Realtime Clock Module</a>. I used the ready-made realtime clock module,
but made my own equivalent to the LCD shield from parts to aid in spacing
out the LCD and pushbuttons on the exterior of the box. The value of the 33R
resistor may need to be adjusted for different types of back light LED's.
The whole circuit is built on a prototyping shield, with ribbon cables
connecting to the LCD. The Stop Alarm button and piezo buzzer are not
shown in this picture and some of the components are soldered to the bottom
of the shield:
\image html clock_shield.jpg
The clock module is based on the DS1307 chip and has an on-board coin battery
to keep the time and date ticking over even if the main circuit loses power.
The chip is I2C-based and has an auxillary SQW output that can be configured
to provide a 1 Hz squarewave signal. This signal is used by the software
running on the Arduino to detect when a new time or date is available for
display on the LCD. The DS1307RTC class takes care of the details of
talking to the chip via I2C.
\section clock_arduino_board Arduino board
To keep power consumption low, say for being powered by batteries, we don't
need a full Arduino Uno or similar board. The USB interface is unnecessary,
as is the on-board power supply if there is an external source of 5 volt power.
We also don't want the power and D13 status LED's to be draining power.
Therefore, a cut-down version of the Arduino is recommended. We used the
<a href="http://www.freetronics.com/collections/arduino/products/kitten">KitTen</a>
kit from <a href="http://www.freetronics.com/">Freetronics</a>, and didn't
solder up anything that wasn't strictly necessary. A
<a href="http://www.freetronics.com/ftdi-cable">5v FTDI USB-to-Serial cable</a>
is necessary for programming. Similar minimalistic built-it-yourself
Arduino designs should also work.
\image html kitten_minimal.jpg
*/
/*
NOTE: The following has been commented out for now. More work is needed
on the wind-up power supply.
\section clock_power Power supply \section clock_power Power supply
@ -74,46 +141,4 @@ the battery voltage and display the current status to the user (after
adding 0.7 to account for the voltage drop on D2). adding 0.7 to account for the voltage drop on D2).
If you don't have 1N4001 diodes to hand, then 1N4004 will work just as well. If you don't have 1N4001 diodes to hand, then 1N4004 will work just as well.
\section clock_arduino_board Arduino board
Because we want to keep power consumption low, we actually don't want a full
Arduino Uno or similar board. The USB interface is unnecessary, as is the
on-board power supply. We also don't want the power and D13 status LED's
to be draining power. Therefore, a cut-down version of the Arduino is
recommended. We used the <a href="http://www.freetronics.com/collections/arduino/products/kitten">KitTen</a>
kit from <a href="http://www.freetronics.com/">Freetronics</a>, and didn't
solder up anything that wasn't strictly necessary. A
<a href="http://www.freetronics.com/ftdi-cable">5v FTDI USB-to-Serial cable</a>
is necessary for programming. Similar minimalistic built-it-yourself
Arduino designs should also work.
\section clock_main_circuit Main circuit
The main clock circuit consists of an Arduino Uno compatible board, a 16x2
LCD module, a realtime clock chip, and a piezo buzzer for the alarm:
\image html alarm_circuit.png
Some of the components can be purchased ready-made as the
<a href="http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide">Freetronics
16x2 LCD Shield</a> and the <a href="http://www.sparkfun.com/products/99">SparkFun
Realtime Clock Module</a>. I used the ready-made realtime clock module,
but made my own equivalent to the LCD shield from parts to aid in spacing
out the LCD and pushbuttons on the exterior of the box. The value of the 33R
resistor may need to be adjusted for different types of back light LED's.
The clock module is based on the DS1307 chip and has an on-board coin battery
to keep the time and date ticking over even if the main circuit loses power.
The chip is I2C-based and has an auxillary SQW output that can be configured
to provide a 1 Hz squarewave signal. This signal is used by the software
running on the Arduino to detect when a new time or date is available for
display on the LCD. The DS1307RTC class takes care of the details of
talking to the chip via I2C.
Note: the above circuit works just as well for a non-wind-up clock powered
from batteries or mains power. The only difference will be the "Sense
Battery Status" input on A1. Either remove the battery monitoring logic
from the source code or tie A1 to 5V via a 10K resistor.
*/ */

View File

@ -66,9 +66,8 @@ including support for configuring alarms and storing clock settings.
The default implementation simulates the time and date based on the value of The default implementation simulates the time and date based on the value of
<tt>millis()</tt>. <tt>millis()</tt>.
\li DS1307RTC class that talks to the DS1307 realtime clock chip via I2C. \li DS1307RTC class that talks to the DS1307 realtime clock chip via I2C.
\li \ref alarm_clock "Wind-Up Alarm Clock" example that uses the DS1307 \li \ref alarm_clock "Alarm Clock" example that uses the DS1307
realtime clock and the FreetronicsLCD library to implement an alarm clock realtime clock and the FreetronicsLCD library to implement an alarm clock.
where the internal battery is charged by hand-cranking a dynamo.
\section main_other Other \section main_other Other

View File

@ -494,9 +494,6 @@ Single
3375 3690 4500 3690 3375 3690 4500 3690
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
3375 4050 4500 4050 3375 4050 4500 4050
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
8 1 1.00 60.00 120.00
5175 5400 5175 6075
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
4500 1665 3150 1665 4500 1665 3150 1665
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
@ -555,10 +552,6 @@ Single
4 0 0 50 -1 0 12 0.0000 4 135 240 4545 3420 A3\001 4 0 0 50 -1 0 12 0.0000 4 135 240 4545 3420 A3\001
4 0 0 50 -1 0 12 0.0000 4 165 1410 4545 3735 A5 (I2C CLOCK)\001 4 0 0 50 -1 0 12 0.0000 4 165 1410 4545 3735 A5 (I2C CLOCK)\001
4 0 0 50 -1 0 12 0.0000 4 165 1275 4545 4095 A4 (I2C DATA)\001 4 0 0 50 -1 0 12 0.0000 4 165 1275 4545 4095 A4 (I2C DATA)\001
4 0 0 50 -1 0 12 0.0000 4 135 240 5040 5265 A1\001
4 0 0 50 -1 0 12 0.0000 4 135 465 4995 6300 Sense\001
4 0 0 50 -1 0 12 0.0000 4 180 600 4950 6525 Battery\001
4 0 0 50 -1 0 12 0.0000 4 135 495 4995 6750 Status\001
4 0 0 50 -1 0 12 0.0000 4 135 345 6570 5310 D12\001 4 0 0 50 -1 0 12 0.0000 4 135 345 6570 5310 D12\001
4 0 0 50 -1 0 12 0.0000 4 135 2370 10440 7290 Freetronics 16x2 LCD Shield\001 4 0 0 50 -1 0 12 0.0000 4 135 2370 10440 7290 Freetronics 16x2 LCD Shield\001
4 0 0 50 -1 0 12 0.0000 4 135 450 6975 5805 Piezo\001 4 0 0 50 -1 0 12 0.0000 4 135 450 6975 5805 Piezo\001

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB