diff --git a/AlarmClock/AlarmClock.pde b/AlarmClock/AlarmClock.pde new file mode 100644 index 00000000..6f7a709b --- /dev/null +++ b/AlarmClock/AlarmClock.pde @@ -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 +#include +#include + +// 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 + } +} diff --git a/AlarmClock/battery.jpg b/AlarmClock/battery.jpg new file mode 100644 index 00000000..af93c833 Binary files /dev/null and b/AlarmClock/battery.jpg differ diff --git a/AlarmClock/dynamo_power_supply.fig b/AlarmClock/dynamo_power_supply.fig new file mode 100644 index 00000000..8c0bd80a --- /dev/null +++ b/AlarmClock/dynamo_power_supply.fig @@ -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 diff --git a/AlarmClock/dynamo_power_supply.pdf b/AlarmClock/dynamo_power_supply.pdf new file mode 100644 index 00000000..2b5bd1a3 Binary files /dev/null and b/AlarmClock/dynamo_power_supply.pdf differ diff --git a/AlarmClock/dynamo_power_supply.png b/AlarmClock/dynamo_power_supply.png new file mode 100644 index 00000000..8335e1e0 Binary files /dev/null and b/AlarmClock/dynamo_power_supply.png differ diff --git a/AlarmClock/main_circuit.fig b/AlarmClock/main_circuit.fig new file mode 100644 index 00000000..12cb3789 --- /dev/null +++ b/AlarmClock/main_circuit.fig @@ -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 diff --git a/doc/Doxyfile b/doc/Doxyfile index b06717ed..6ecba011 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -688,7 +688,7 @@ EXAMPLE_RECURSIVE = NO # directories that contain image that are included in the documentation (see # 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 # invoke to filter for each input file. Doxygen will invoke the filter program diff --git a/doc/alarm-clock.dox b/doc/alarm-clock.dox new file mode 100644 index 00000000..e33ecbb5 --- /dev/null +++ b/doc/alarm-clock.dox @@ -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, Jaycar sells a suitable +DC dynamo. + +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 KitTen +kit from Freetronics, and didn't +solder up anything that wasn't strictly necessary. A +5v FTDI USB-to-Serial cable +is necessary for programming. Similar minimalistic built-it-yourself +Arduino designs should also work. + +*/ diff --git a/doc/mainpage.dox b/doc/mainpage.dox index 6bc79454..58b81d22 100644 --- a/doc/mainpage.dox +++ b/doc/mainpage.dox @@ -34,6 +34,7 @@ LCD shield. \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_form "Form" example for LCD displays. +\li \ref alarm_clock "Wind-Up Alarm Clock". \section main_BlinkLED BlinkLED Utility Library