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

Begin alarm clock implementation

This commit is contained in:
Rhys Weatherley 2012-05-10 14:13:13 +10:00
parent 3487e6ec61
commit 9a1cd00521
9 changed files with 1044 additions and 1 deletions

337
AlarmClock/AlarmClock.pde Normal file
View File

@ -0,0 +1,337 @@
/*
* Copyright (C) 2012 Southern Storm Software, Pty Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
// include the library code:
#include <FreetronicsLCD.h>
#include <Form.h>
#include <Field.h>
// Initialize the LCD
FreetronicsLCD lcd;
// Special characters for indicators.
#define IND_BATTERY_EMPTY 0
#define IND_BATTERY_20PCT 1
#define IND_BATTERY_40PCT 2
#define IND_BATTERY_60PCT 3
#define IND_BATTERY_80PCT 4
#define IND_BATTERY_FULL 5
// Specialized time/date display field for the front screen of the clock.
class FrontScreenField : public Field
{
public:
explicit FrontScreenField(Form &form);
~FrontScreenField();
void enterField(bool reverse);
int day() const { return _day; }
int month() const { return _month; }
int year() const { return _year; }
void setDate(int day, int month, int year);
unsigned long time() const { return _time; }
void setTime(unsigned long time);
int batteryStatus() const { return _batteryStatus; }
void setBatteryStatus(int batteryStatus);
private:
int _day, _month, _year;
unsigned long _time;
int _batteryStatus;
int _batteryBars;
void updateDate();
void updateTime();
void updateBatteryStatus();
};
FrontScreenField::FrontScreenField(Form &form)
: Field(form, "")
, _day(1), _month(1), _year(2012)
, _time(9 * 60 * 60)
, _batteryStatus(100)
, _batteryBars(IND_BATTERY_FULL)
{
}
FrontScreenField::~FrontScreenField()
{
}
void FrontScreenField::enterField(bool reverse)
{
updateDate();
updateBatteryStatus();
updateTime();
}
const char *months[] = {
" Jan ", " Feb ", " Mar ", " Apr ", " May ", " Jun ",
" Jul ", " Aug ", " Sep ", " Oct ", " Nov ", " Dec "
};
uint8_t monthLengths[] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
inline bool isLeapYear(int year)
{
if ((year % 100) == 0)
return (year % 400) == 0;
else
return (year % 4) == 0;
}
void FrontScreenField::setDate(int day, int month, int year)
{
if (day != _day || month != _month || year != _year) {
if (day < 1) {
// Rolled back into the previous month.
if (month == 1)
month = 12;
else
--month;
if (month == 2 && isLeapYear(year))
day = 29 + day;
else
day = monthLengths[month - 1] + day;
} if (month == 2 && isLeapYear(year)) {
if (day > 29) {
// Rolled forward from Feb into Mar in a leap year.
month = 3;
day -= 29;
}
} else if (day > monthLengths[month - 1]) {
// Rolled forward into the next month.
day -= monthLengths[month - 1];
if (month == 12)
month = 1;
else
++month;
}
_day = day;
_month = month;
_year = year;
if (isCurrent())
updateDate();
}
}
void FrontScreenField::setTime(unsigned long time)
{
if (time != _time) {
_time = time;
if (isCurrent())
updateTime();
}
}
void FrontScreenField::setBatteryStatus(int batteryStatus)
{
_batteryStatus = batteryStatus;
int ind;
if (batteryStatus >= 85)
ind = IND_BATTERY_FULL;
else if (batteryStatus >= 75)
ind = IND_BATTERY_80PCT;
else if (batteryStatus >= 55)
ind = IND_BATTERY_60PCT;
else if (batteryStatus >= 35)
ind = IND_BATTERY_40PCT;
else if (batteryStatus >= 15)
ind = IND_BATTERY_20PCT;
else
ind = IND_BATTERY_EMPTY;
if (ind != _batteryBars) {
_batteryBars = ind;
updateBatteryStatus();
}
}
void FrontScreenField::updateDate()
{
lcd()->setCursor(0, 0);
if (_day < 10) {
lcd()->write('0' + _day);
} else {
lcd()->write('0' + _day / 10);
lcd()->write('0' + _day % 10);
}
lcd()->print(months[_month - 1]);
lcd()->print(_year);
lcd()->write(' ');
}
void FrontScreenField::updateTime()
{
lcd()->setCursor(0, 1);
int hour = (int)(_time / (60 * 60));
int minute = ((int)(_time / 60)) % 60;
int second = (int)(_time % 60);
bool pm;
if (hour == 0 || hour == 12) {
lcd()->write('1');
lcd()->write('2');
pm = (hour == 12);
} else if (hour < 12) {
lcd()->write('0' + hour / 10);
lcd()->write('0' + hour % 10);
pm = false;
} else {
hour -= 12;
lcd()->write('0' + hour / 10);
lcd()->write('0' + hour % 10);
pm = true;
}
lcd()->write(':');
lcd()->write('0' + minute / 10);
lcd()->write('0' + minute % 10);
lcd()->write(':');
lcd()->write('0' + second / 10);
lcd()->write('0' + second % 10);
lcd()->print(pm ? " PM" : " AM");
}
void FrontScreenField::updateBatteryStatus()
{
lcd()->setCursor(15, 0);
lcd()->write(_batteryBars);
}
// Create the main form and its fields.
Form mainForm(lcd);
FrontScreenField frontScreen(mainForm);
#define STATUS_LED 13
#define MILLIS_PER_DAY 86400000UL
#define MILLIS_PER_SECOND 1000UL
#define MILLIS_PER_HOUR 3600000UL
unsigned long midnightTime;
byte batteryEmpty[8] = {
B01110,
B10001,
B10001,
B10001,
B10001,
B10001,
B11111,
B00000
};
byte battery20Pct[8] = {
B01110,
B10001,
B10001,
B10001,
B10001,
B11111,
B11111,
B00000
};
byte battery40Pct[8] = {
B01110,
B10001,
B10001,
B10001,
B11111,
B11111,
B11111,
B00000
};
byte battery60Pct[8] = {
B01110,
B10001,
B10001,
B11111,
B11111,
B11111,
B11111,
B00000
};
byte battery80Pct[8] = {
B01110,
B10001,
B11111,
B11111,
B11111,
B11111,
B11111,
B00000
};
byte batteryFull[8] = {
B01110,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B00000
};
void setup() {
// Turn off the status LED. Don't need it.
pinMode(STATUS_LED, OUTPUT);
digitalWrite(STATUS_LED, LOW);
// We need some special characters for battery status and other indicators.
lcd.createChar(IND_BATTERY_EMPTY, batteryEmpty);
lcd.createChar(IND_BATTERY_20PCT, battery20Pct);
lcd.createChar(IND_BATTERY_40PCT, battery40Pct);
lcd.createChar(IND_BATTERY_60PCT, battery60Pct);
lcd.createChar(IND_BATTERY_80PCT, battery80Pct);
lcd.createChar(IND_BATTERY_FULL, batteryFull);
//lcd.enableScreenSaver();
// At startup, make "now" be 9am. TODO: Read from an RTC chip instead.
midnightTime = millis() - MILLIS_PER_HOUR * 9;
// Show the main form for the first time.
mainForm.show();
}
void loop() {
// Update the number of seconds since the last midnight event.
unsigned long sinceMidnight = millis() - midnightTime;
if (sinceMidnight >= MILLIS_PER_DAY) {
// We have overflowed into the next day. Readjust midnight.
midnightTime += MILLIS_PER_DAY;
sinceMidnight -= MILLIS_PER_DAY;
// Increment the date using the rollover logic.
frontScreen.setDate(frontScreen.day() + 1,
frontScreen.month(),
frontScreen.year());
}
frontScreen.setTime(sinceMidnight / MILLIS_PER_SECOND);
// Dispatch button events to the main form.
int event = lcd.getButton();
if (mainForm.dispatch(event) == FORM_CHANGED) {
// TODO
}
}

BIN
AlarmClock/battery.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,206 @@
#FIG 3.2 Produced by xfig version 3.2.5b
Landscape
Center
Metric
A4
100.00
Single
-2
1200 2
6 2925 3105 3285 3195
2 1 0 1 0 -1 0 0 20 0.000 1 0 -1 0 0 4
3150 3150 3060 3195 3060 3105 3150 3150
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3150 3105 3150 3195
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3060 3150 2925 3150
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3150 3150 3285 3150
-6
6 4950 3105 5310 3195
2 1 0 1 0 -1 0 0 20 0.000 1 0 -1 0 0 4
5175 3150 5085 3195 5085 3105 5175 3150
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
5175 3105 5175 3195
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
5085 3150 4950 3150
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
5175 3150 5310 3150
-6
6 6660 3960 6840 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
6750 4095 6750 3960
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
6750 4140 6750 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
6660 4095 6840 4095
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
6660 4140 6840 4140
-6
6 8460 3960 8640 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
8550 4095 8550 3960
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
8550 4140 8550 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
8460 4095 8640 4095
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
8460 4140 8640 4140
-6
6 9540 3960 9765 4275
5 1 0 1 0 -1 0 0 -1 0.000 1 0 0 0 9675.000 4285.000 9585 4165 9675 4135 9765 4165
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
9675 4135 9675 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
9585 4095 9765 4095
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
9675 4095 9675 3960
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
9611 3989 9611 4059
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
9581 4024 9641 4024
-6
6 7380 5130 7470 5220
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 7425 5175 30 30 7425 5175 7425 5205
-6
6 7830 5130 7920 5220
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 7875 5175 30 30 7875 5175 7875 5205
-6
6 9630 3105 9720 3195
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 9675 3150 30 30 9675 3150 9675 3180
-6
6 9630 5130 9720 5220
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 9675 5175 30 30 9675 5175 9675 5205
-6
6 3465 3825 3735 4365
2 1 0 1 0 -1 0 0 0 0.000 0 0 -1 0 0 2
3600 4140 3600 4365
2 2 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 5
3510 4095 3690 4095 3690 4140 3510 4140 3510 4095
2 1 0 1 0 -1 0 0 0 0.000 0 0 -1 0 0 2
3465 4050 3735 4050
2 1 0 1 0 -1 0 0 0 0.000 0 0 -1 0 0 2
3600 4050 3600 3825
-6
6 3555 3105 3645 3195
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 3600 3150 30 30 3600 3150 3600 3180
-6
6 3555 5130 3645 5220
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 3600 5175 30 30 3600 5175 3600 5205
-6
6 3960 3015 4500 3195
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 4095 3150 38 38 4095 3150 4133 3150
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 4365 3150 38 38 4365 3150 4403 3150
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
4055 3150 3960 3150
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
4405 3150 4500 3150
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
4135 3129 4377 3033
-6
6 5580 3105 5670 3195
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5625 3150 30 30 5625 3150 5625 3180
-6
6 5490 3960 5715 4275
5 1 0 1 0 -1 0 0 -1 0.000 1 0 0 0 5625.000 4285.000 5535 4165 5625 4135 5715 4165
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
5625 4135 5625 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
5535 4095 5715 4095
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
5625 4095 5625 3960
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
5561 3989 5561 4059
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
5531 4024 5591 4024
-6
6 5580 5130 5670 5220
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5625 5175 30 30 5625 5175 5625 5205
-6
6 2340 3825 2610 4455
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 2475 4140 135 135 2475 4140 2610 4140
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
2475 3915 2475 3825
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 4
2410 4015 2410 3915 2540 3915 2540 4015
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
2450 3960 2500 3960
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
2475 3935 2475 3985
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
2450 4320 2500 4320
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 4
2410 4265 2410 4365 2540 4365 2540 4265
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
2475 4365 2475 4455
4 0 0 0 0 16 8 0.0000 4 105 210 2392 4180 DC\001
-6
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
2475 3825 2475 3150 3015 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
5265 3150 7200 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
5 0 1.00 60.00 120.00
8100 3150 11025 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
6750 4005 6750 3825 7200 3825
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
6750 4230 6750 4500 7200 4500
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
8550 3960 8550 3825 8100 3825
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
8550 4230 8550 4500 8100 4500
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
7200 2925 8100 2925 8100 4725 7200 4725 7200 2925
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
7875 4725 7875 5175
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
7425 4725 7425 5175
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
9675 4005 9675 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
9675 4230 9675 5175
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
3600 3870 3600 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
3600 4365 3600 5175
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
3960 3150 3240 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
4500 3150 4950 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
5625 4005 5625 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
5625 4230 5625 5175
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
5 0 1.00 60.00 120.00
5625 3150 5625 2250 11025 2250
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
5 0 1.00 60.00 120.00
2475 4410 2475 5175 11025 5175
4 0 0 50 -1 0 12 0.0000 4 135 660 4815 3015 1N4001\001
4 0 0 50 -1 0 12 0.0000 4 135 660 2835 3015 1N4001\001
4 0 0 50 -1 0 12 0.0000 4 135 420 4995 4185 10uF\001
4 0 0 50 -1 0 12 0.0000 4 135 105 7020 3060 2\001
4 0 0 50 -1 0 12 0.0000 4 135 570 6030 4185 0.22uF\001
4 0 0 50 -1 0 12 0.0000 4 135 570 8685 4185 0.22uF\001
4 0 0 50 -1 0 12 0.0000 4 135 105 7065 4410 8\001
4 0 0 50 -1 0 12 0.0000 4 135 105 7065 3735 1\001
4 0 0 50 -1 0 12 0.0000 4 135 105 8145 3735 4\001
4 0 0 50 -1 0 12 0.0000 4 135 105 8145 3060 3\001
4 0 0 50 -1 0 12 0.0000 4 135 105 8145 4455 5\001
4 0 0 50 -1 0 12 0.0000 4 135 105 7470 4905 6\001
4 0 0 50 -1 0 12 0.0000 4 135 105 7920 4905 7\001
4 0 0 50 -1 0 12 0.0000 4 135 765 7290 2745 MAX619\001
4 0 0 50 -1 0 12 0.0000 4 135 420 9855 4185 10uF\001
4 0 0 50 -1 0 12 0.0000 4 135 510 11160 3195 5VDC\001
4 0 0 50 -1 0 12 0.0000 4 135 405 11160 5220 GND\001
4 0 0 50 -1 0 12 0.0000 4 135 465 11205 2070 Sense\001
4 0 0 50 -1 0 12 0.0000 4 180 600 11205 2295 Battery\001
4 0 0 50 -1 0 12 0.0000 4 135 495 11205 2520 Status\001
4 0 0 50 -1 0 12 0.0000 4 135 240 3015 2835 D1\001
4 0 0 50 -1 0 12 0.0000 4 135 240 4995 2835 D2\001
4 0 0 50 -1 0 12 0.0000 4 135 390 3870 4050 3.6V\001
4 0 0 50 -1 0 12 0.0000 4 135 510 3825 4275 NiMH\001
4 0 0 50 -1 0 12 0.0000 4 180 690 1530 4365 Dynamo\001
4 0 0 50 -1 0 12 0.0000 4 135 510 1620 4140 5VDC\001

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

413
AlarmClock/main_circuit.fig Normal file
View File

@ -0,0 +1,413 @@
#FIG 3.2 Produced by xfig version 3.2.5b
Landscape
Center
Metric
A4
100.00
Single
-2
1200 2
5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 10800.000 3600.000 10755 3600 10800 3555 10845 3600
6 3195 2700 3420 3240
1 3 0 1 0 -1 0 0 -1 0.000 1 1.5708 3375 3105 38 38 3375 3105 3375 3067
1 3 0 1 0 -1 0 0 -1 0.000 1 1.5708 3375 2835 38 38 3375 2835 3375 2797
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3375 3150 3375 3240
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3375 2790 3375 2700
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3285 2970 3195 2970
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
3285 3105 3285 2835
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
3195 3015 3195 2925
-6
6 3285 3240 3465 3510
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3360 3510 3390 3510
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3325 3465 3425 3465
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3285 3420 3465 3420
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3375 3240 3375 3420
-6
6 1755 3375 1845 3825
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 3730 1800 3825
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7
1800 3465 1760 3492 1840 3546 1760 3600 1840 3654 1760 3708
1800 3735
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 3375 1800 3470
-6
6 1755 3825 1845 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 4180 1800 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7
1800 3915 1760 3942 1840 3996 1760 4050 1840 4104 1760 4158
1800 4185
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 3825 1800 3920
-6
6 1755 4230 1845 4680
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 4585 1800 4680
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7
1800 4320 1760 4347 1840 4401 1760 4455 1840 4509 1760 4563
1800 4590
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 4230 1800 4325
-6
6 1755 4680 1845 5130
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 5035 1800 5130
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7
1800 4770 1760 4797 1840 4851 1760 4905 1840 4959 1760 5013
1800 5040
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 4680 1800 4775
-6
6 1755 5130 1845 5580
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 5485 1800 5580
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7
1800 5220 1760 5247 1840 5301 1760 5355 1840 5409 1760 5463
1800 5490
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1800 5130 1800 5225
-6
6 990 3645 1530 3870
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 1125 3825 38 38 1125 3825 1163 3825
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 1395 3825 38 38 1395 3825 1433 3825
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1080 3825 990 3825
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1440 3825 1530 3825
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1260 3735 1260 3645
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
1125 3735 1395 3735
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
1215 3645 1305 3645
-6
6 990 4095 1530 4320
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 1125 4275 38 38 1125 4275 1163 4275
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 1395 4275 38 38 1395 4275 1433 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1080 4275 990 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1440 4275 1530 4275
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1260 4185 1260 4095
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
1125 4185 1395 4185
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
1215 4095 1305 4095
-6
6 990 4545 1530 4770
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 1125 4725 38 38 1125 4725 1163 4725
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 1395 4725 38 38 1395 4725 1433 4725
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1080 4725 990 4725
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1440 4725 1530 4725
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1260 4635 1260 4545
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
1125 4635 1395 4635
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
1215 4545 1305 4545
-6
6 990 5445 1530 5670
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 1125 5625 38 38 1125 5625 1163 5625
1 3 0 1 0 -1 0 0 -1 0.000 1 0.0000 1395 5625 38 38 1395 5625 1433 5625
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1080 5625 990 5625
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1440 5625 1530 5625
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1260 5535 1260 5445
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
1125 5535 1395 5535
2 1 0 1 0 -1 0 0 -1 0.000 0 1 -1 0 0 2
1215 5445 1305 5445
-6
6 585 5805 765 6075
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
660 6075 690 6075
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
625 6030 725 6030
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
585 5985 765 5985
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
675 5805 675 5985
-6
6 1755 3780 1845 3870
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 1800 3825 30 30 1800 3825 1800 3855
-6
6 1755 4230 1845 4320
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 1800 4275 30 30 1800 4275 1800 4305
-6
6 1755 4680 1845 4770
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 1800 4725 30 30 1800 4725 1800 4755
-6
6 630 5580 720 5670
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 675 5625 30 30 675 5625 675 5655
-6
6 630 4680 720 4770
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 675 4725 30 30 675 4725 675 4755
-6
6 630 4230 720 4320
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 675 4275 30 30 675 4275 675 4305
-6
6 10755 4410 10845 4860
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10800 4765 10800 4860
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7
10800 4500 10760 4527 10840 4581 10760 4635 10840 4689 10760 4743
10800 4770
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10800 4410 10800 4505
-6
6 10440 4815 10935 5400
1 3 0 1 0 -1 0 0 -1 0.000 1 5.4978 10725 5085 191 191 10725 5085 10916 5085
2 3 0 1 0 -1 0 0 20 0.000 0 0 0 0 0 4
10720 5085 10770 5060 10770 5110 10720 5085
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3
10710 5175 10800 5175 10800 5400
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3
10710 5085 10800 5085 10800 5175
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10710 4950 10710 5220
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3
10710 4995 10800 4995 10800 4815
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3
10665 4995 10665 5175 10440 5175
-6
6 10710 5400 10890 5670
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10785 5670 10815 5670
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10750 5625 10850 5625
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10710 5580 10890 5580
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10800 5400 10800 5580
-6
6 3285 2025 3465 2340
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3375 2160 3375 2025
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3375 2205 3375 2340
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3285 2160 3465 2160
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
3285 2205 3465 2205
-6
6 3330 2520 3420 2610
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 3375 2565 30 30 3375 2565 3375 2595
-6
6 10125 3420 10575 3645
2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4
10350 3555 10385 3485 10315 3485 10350 3555
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10220 3600 10125 3600
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7
10485 3600 10458 3560 10404 3640 10350 3560 10296 3640 10242 3560
10215 3600
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10575 3600 10480 3600
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
10350 3420 10350 3510
-6
6 9810 3825 9990 4095
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
9885 4095 9915 4095
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
9850 4050 9950 4050
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
9810 4005 9990 4005
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
9900 3825 9900 4005
-6
6 10980 3555 11070 3645
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 11025 3600 30 30 11025 3600 11025 3630
-6
6 7290 2475 7560 2925
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
7425 2790 7425 2925
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
7335 2790 7515 2790
2 2 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 5
7315 2655 7535 2655 7535 2745 7315 2745 7315 2655
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
7335 2610 7515 2610
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
7425 2610 7425 2475
-6
6 7335 2880 7515 3150
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
7410 3150 7440 3150
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
7375 3105 7475 3105
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
7335 3060 7515 3060
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
7425 2880 7425 3060
-6
6 1935 7155 2115 7425
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
2010 7425 2040 7425
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1975 7380 2075 7380
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
1935 7335 2115 7335
2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2
2025 7155 2025 7335
-6
6 9855 3555 9945 3645
1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 9900 3600 30 30 9900 3600 9900 3630
-6
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
3825 2250 6750 2250 6750 6300 3825 6300 3825 2250
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
3375 2745 3375 2565 3825 2565
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
1 1 1.00 60.00 120.00
1800 3375 1800 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
1800 3825 3825 3825
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
1530 3825 1800 3825
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
1530 4275 1800 4275
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
1530 4725 1800 4725
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
1530 5625 1800 5625
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
990 3825 675 3825 675 5850
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
990 4275 675 4275
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
1035 4725 675 4725
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
990 5625 675 5625
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
1800 5580 1800 5625
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
8100 3150 8100 3375 6750 3375
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
8325 3150 8325 3600 6750 3600
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
8550 3150 8550 3825 6750 3825
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
8775 3150 8775 4050 6750 4050
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
9000 3150 9000 4275 6750 4275
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
9225 3150 9225 4500 6750 4500
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
9450 3148 9450 4725 6750 4723
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
9675 3150 9675 4950 6750 4950
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
7875 2250 11250 2250 11250 3150 7875 3150 7875 2250
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4
1 1 1.00 60.00 120.00
11025 3150 11025 3600 11700 3600 11700 2925
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
10800 3150 10800 4410
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
10485 5175 6750 5175
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
3375 2565 3375 2295
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
1 1 1.00 60.00 120.00
3375 2070 3375 1800
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
10350 3465 10350 3150
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
10125 3600 9900 3600 9900 3825
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
10575 3600 10755 3600
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
10845 3600 11025 3600
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
1 1 1.00 60.00 120.00
3825 4725 3375 4725
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
7425 2475 6750 2475
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
3825 5175 2700 5175 2700 6075
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
3825 5400 2925 5400 2925 6075
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
3825 5625 3150 5625 3150 6075
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
2250 6075 3600 6075 3600 6975 2250 6975 2250 6075
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
1 1 1.00 60.00 120.00
2250 6300 2025 6300 2025 5940
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
2250 6750 2025 6750 2025 7200
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
9900 3600 9900 3150
4 0 0 50 -1 0 12 0.0000 4 135 675 4950 4230 Arduino\001
4 0 0 50 -1 0 12 0.0000 4 135 450 3915 2610 Reset\001
4 0 0 50 -1 0 12 0.0000 4 135 240 1710 3060 5V\001
4 0 0 50 -1 0 12 0.0000 4 135 240 3915 3870 A0\001
4 0 0 50 -1 0 12 0.0000 4 135 345 1980 5400 2K3\001
4 0 0 50 -1 0 12 0.0000 4 135 240 1980 4995 1K\001
4 0 0 50 -1 0 12 0.0000 4 135 450 1980 4545 620R\001
4 0 0 50 -1 0 12 0.0000 4 135 450 1980 4050 330R\001
4 0 0 50 -1 0 12 0.0000 4 135 240 1980 3600 2K\001
4 0 0 50 -1 0 12 0.0000 4 180 240 225 4320 Up\001
4 0 0 50 -1 0 12 0.0000 4 135 480 90 3870 Mode\001
4 0 0 50 -1 0 12 0.0000 4 135 480 45 4770 Down\001
4 0 0 50 -1 0 12 0.0000 4 135 495 45 5760 Alarm\001
4 0 0 50 -1 0 12 0.0000 4 180 375 135 5535 Stop\001
4 0 0 50 -1 0 12 4.7124 4 135 405 8055 2610 GND\001
4 0 0 50 -1 0 12 4.7124 4 135 240 8280 2790 5V\001
4 0 0 50 -1 0 12 0.0000 4 135 240 6300 3645 5V\001
4 0 0 50 -1 0 12 0.0000 4 135 405 6255 3420 GND\001
4 0 0 50 -1 0 12 0.0000 4 135 240 6300 3870 D9\001
4 0 0 50 -1 0 12 0.0000 4 135 240 6300 4095 D8\001
4 0 0 50 -1 0 12 0.0000 4 135 240 6300 4320 D7\001
4 0 0 50 -1 0 12 0.0000 4 135 240 6300 4545 D6\001
4 0 0 50 -1 0 12 0.0000 4 135 240 6300 4770 D5\001
4 0 0 50 -1 0 12 0.0000 4 135 240 6300 4995 D4\001
4 0 0 50 -1 0 12 4.7124 4 135 120 8505 2925 E\001
4 0 0 50 -1 0 12 4.7124 4 135 240 8730 2835 RS\001
4 0 0 50 -1 0 12 0.0000 4 135 1545 8820 2565 16x2 LCD Module\001
4 0 0 50 -1 0 12 4.7124 4 135 240 8955 2835 D7\001
4 0 0 50 -1 0 12 4.7124 4 135 240 9180 2835 D6\001
4 0 0 50 -1 0 12 4.7124 4 135 240 9405 2835 D5\001
4 0 0 50 -1 0 12 4.7124 4 135 240 9630 2835 D4\001
4 0 0 50 -1 0 12 0.0000 4 135 240 11610 2835 5V\001
4 0 0 50 -1 0 12 0.0000 4 135 240 6300 5220 D2\001
4 0 0 50 -1 0 12 0.0000 4 135 660 11025 5130 2N7002\001
4 0 0 50 -1 0 12 0.0000 4 135 450 11025 4680 150R\001
4 0 0 50 -1 0 12 0.0000 4 135 240 3285 1665 5V\001
4 0 0 50 -1 0 12 0.0000 4 135 525 2655 2250 100nF\001
4 0 0 50 -1 0 12 4.7124 4 135 315 10755 2745 BL-\001
4 0 0 50 -1 0 12 4.7124 4 135 360 10980 2745 BL+\001
4 0 0 50 -1 0 12 0.0000 4 135 345 10170 3825 10K\001
4 0 0 50 -1 0 12 0.0000 4 135 240 3915 4770 A1\001
4 0 0 50 -1 0 12 0.0000 4 180 600 2745 4770 Battery\001
4 0 0 50 -1 0 12 0.0000 4 135 465 2745 4545 Sense\001
4 0 0 50 -1 0 12 0.0000 4 135 495 2745 4995 Status\001
4 0 0 50 -1 0 12 4.7124 4 135 405 10305 2700 Cont\001
4 0 0 50 -1 0 12 0.0000 4 135 450 7200 2160 Piezo\001
4 0 0 50 -1 0 12 0.0000 4 135 570 7155 2385 Buzzer\001
4 0 0 50 -1 0 12 0.0000 4 135 345 6300 2520 D12\001
4 0 0 50 -1 0 12 4.7124 4 135 375 2655 6120 Data\001
4 0 0 50 -1 0 12 4.7124 4 135 495 2880 6120 Clock\001
4 0 0 50 -1 0 12 4.7124 4 135 330 3105 6120 1Hz\001
4 0 0 50 -1 0 12 0.0000 4 135 240 1935 5850 5V\001
4 0 0 50 -1 0 12 0.0000 4 135 1080 2430 6840 RTC Module\001
4 0 0 50 -1 0 12 0.0000 4 135 240 3915 5445 A4\001
4 0 0 50 -1 0 12 0.0000 4 135 240 3915 5670 A5\001
4 0 0 50 -1 0 12 0.0000 4 135 240 3915 5220 A3\001
4 0 0 50 -1 0 12 4.7124 4 135 375 9855 2745 R/W\001

View File

@ -688,7 +688,7 @@ EXAMPLE_RECURSIVE = NO
# directories that contain image that are included in the documentation (see # directories that contain image that are included in the documentation (see
# the \image command). # the \image command).
IMAGE_PATH = ../libraries/BlinkLED/examples/Cylon ../libraries/BlinkLED/examples/Cylon4 ../libraries/BlinkLED/examples/StarTrek ../libraries/FreetronicsLCD/examples/HelloWorld ../libraries/FreetronicsLCD/examples/Form IMAGE_PATH = ../libraries/BlinkLED/examples/Cylon ../libraries/BlinkLED/examples/Cylon4 ../libraries/BlinkLED/examples/StarTrek ../libraries/FreetronicsLCD/examples/HelloWorld ../libraries/FreetronicsLCD/examples/Form ../AlarmClock
# The INPUT_FILTER tag can be used to specify a program that doxygen should # The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program # invoke to filter for each input file. Doxygen will invoke the filter program

86
doc/alarm-clock.dox Normal file
View File

@ -0,0 +1,86 @@
/*
* Copyright (C) 2012 Southern Storm Software, Pty Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/**
\file alarm-clock.dox
\page alarm_clock Wind-Up Alarm Clock
\section clock_power Power supply
This section describes the power supply for the wind-up alarm clock,
which consists of a hand-cranked dynamo, a 3.6 volt NiMH battery, and a
charge pump DC-to-DC converter to boost the voltage up to 5 volts.
Here is the circuit:
\image html dynamo_power_supply.png
The dynamo must be based on a DC motor rather than AC (bicycle light dynamos
are typically AC). If you are using an AC dynamo, then replace D1 with a
full 4-diode rectifier bridge to convert the AC into DC first.
In Australia, <a href="http://www.jaycar.com.au">Jaycar</a> sells a suitable
<a href="http://www.jaycar.com.au/productView.asp?ID=MD7000">DC dynamo</a>.
Diode D1 stops the voltage in the battery from flowing backwards into
the motor. If you hook things up the wrong way around, then the motor
will spin without being cranked! In this case, reverse the + and - leads
on the dynamo and try again.
After D1, the main energy storage for the circuit is the 3.6 volt NiMH
battery (at least 1000 mAh capacity). These are commonly used in
cordless phones and can be obtained from most consumer electronics stores:
\image html battery.jpg
The main part of the circuit is next, consisting of a MAX619 regulated 5 volt
charge pump DC-to-DC converter chip. This chip boosts an input voltage of
between 2 and 3.6 volts up to 5 volts and regulates it into a nice flat
supply for the rest of the alarm clock.
Note: the MAX619 has a maximum rating of 3.6 volts, but when the dynamo is
being cranked rapidly the voltage at the cathode of D1 can spike to 4 volts
or more. The battery is fine with this for short periods of time,
but the MAX619 won't be happy. Hence the forward voltage drop on D2
is used to drop the supply down by 0.7 volts which will keep it within
the MAX619's input range.
For normal uncranked operation the battery will need to be between 2.7 and
3.6 volts. If it falls below 2.7, then the battery is considered "empty".
A diode with a smaller voltage drop can be substituted for D2 for longer
operation times as long as the maximum dynamo output minus the voltage
drop is less than or equal to 3.6 volts. The "Sense Battery Status" output
is hooked up to an analog input pin on the Arduino to let it monitor
the battery voltage and display the current status to the user.
\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.
*/

View File

@ -34,6 +34,7 @@ LCD shield.
\li Form and Field classes to build simple property sheet UI's on LCD displays. \li Form and Field classes to build simple property sheet UI's on LCD displays.
\li \ref lcd_hello_world "Hello World" example for the Freetronics LCD shield. \li \ref lcd_hello_world "Hello World" example for the Freetronics LCD shield.
\li \ref lcd_form "Form" example for LCD displays. \li \ref lcd_form "Form" example for LCD displays.
\li \ref alarm_clock "Wind-Up Alarm Clock".
\section main_BlinkLED BlinkLED Utility Library \section main_BlinkLED BlinkLED Utility Library