alarmclock with 2 alarm times, 128x64 LCD with KS0108, displays time / time&date / a menu to change time & alarms, rotary encoder with push button, relay which switsches on a hi-fi system or something else, a 1F- Cap as a backup supply

Dependencies:   KS0108 QEI mbed

Alarmclock

features:

  • alarmclock with 2 alarm times
  • 128x64 LCD with KS0108
  • displays time / time&date / a menu to change time & alarms
  • sleeptimer, relay is switched of when timer runs out
  • rotary encoder with push button
  • relay which switsches on a hi-fi system or something else
  • a 1F- Cap as a backup supply

todo/ desired improvements/ known issues:

  • a more precise real time clock would be nice
  • a speaker or beeper directly connected to the mbed
  • there is a bug where the big font is not displayed correctly

Schematic:

/media/uploads/gaebu/alarmclock_mbed_128x64.pdf

Revision:
2:fbf734bc04de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Buxton32.h	Tue Jan 05 11:17:59 2016 +0000
@@ -0,0 +1,91 @@
+
+
+/*
+ *
+ * new Font
+ *
+ * created with FontCreator
+ * written by F. Maximilian Thiele
+ *
+ * http://www.apetech.de/fontCreator
+ * me@apetech.de
+ *
+ * File Name           : Buxton32.h
+ * Date                : 05.01.2016
+ * Font size in bytes  : 10833
+ * Font width          : 10
+ * Font height         : 36
+ * Font first char     : 32
+ * Font last char      : 59
+ * Font used chars     : 27
+ *
+ * The font data are defined as
+ *
+ * struct _FONT_ {
+ *     uint16_t   font_Size_in_Bytes_over_all_included_Size_it_self;
+ *     uint8_t    font_Width_in_Pixel_for_fixed_drawing;
+ *     uint8_t    font_Height_in_Pixel_for_all_characters;
+ *     unit8_t    font_First_Char;
+ *     uint8_t    font_Char_Count;
+ *
+ *     uint8_t    font_Char_Widths[font_Last_Char - font_First_Char +1];
+ *                  // for each character the separate width in pixels,
+ *                  // characters < 128 have an implicit virtual right empty row
+ *
+ *     uint8_t    font_data[];
+ *                  // bit field of all characters
+ */
+
+//#include <inttypes.h>
+//#include <avr/pgmspace.h>
+
+#ifndef NEW_FONT_H
+#define NEW_FONT_H
+
+#define NEW_FONT_WIDTH 10
+#define NEW_FONT_HEIGHT 36
+
+unsigned int Buxton32[] = {
+    0x2A, 0x51, // size
+    0x0A, // width
+    0x24, // height
+    0x20, // first char
+    0x1B, // char count
+    
+    // char widths
+    0x00, 0x07, 0x08, 0x13, 0x0E, 0x10, 0x13, 0x03, 0x09, 0x09, 
+    0x10, 0x0D, 0x05, 0x09, 0x04, 0x09, 0x0E, 0x04, 0x10, 0x10, 
+    0x0F, 0x0E, 0x0E, 0x10, 0x0C, 0x0E, 0x05, 
+    
+    // font data
+    0x00, 0x00, 0x00, 0xF0, 0xFE, 0x3F, 0x0F, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xC3, 0x83, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 33
+    0xF8, 0xF8, 0x18, 0x00, 0x00, 0xF8, 0xF8, 0x78, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34
+    0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0xC0, 0xFC, 0x7C, 0x1C, 0x80, 0x80, 0x80, 0x60, 0xE0, 0x63, 0x63, 0x67, 0xF7, 0xFF, 0x7F, 0x77, 0xF3, 0xFB, 0x7F, 0x3F, 0x33, 0x33, 0x23, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x07, 0x00, 0xFE, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xF0, 0xFF, 0xBF, 0xF8, 0xFF, 0x1F, 0x18, 0x00, 0x00, 0x3C, 0x3C, 0x36, 0x32, 0xF1, 0xFF, 0x37, 0x33, 0xFF, 0x3F, 0x33, 0x1F, 0x1E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36
+    0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0x3F, 0x7F, 0x67, 0x63, 0x33, 0x3F, 0x1E, 0x00, 0xC0, 0xF0, 0x3E, 0x0F, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x0F, 0x03, 0xF8, 0xFC, 0x1E, 0x9C, 0xFC, 0xF8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x06, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xB8, 0x9C, 0x9C, 0x9E, 0x8F, 0x87, 0x87, 0x83, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF8, 0xF8, 0xFD, 0xEF, 0xE7, 0x63, 0x73, 0x33, 0x31, 0x19, 0xFF, 0xFF, 0x1F, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38
+    0xF8, 0xF8, 0x38, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39
+    0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3C, 0x1E, 0x0F, 0x07, 0xF0, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0xF0, 0xE0, 0xC0, // 40
+    0x1E, 0x7C, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFF, 0x3F, 0x03, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x10, 0x00, 0x00, // 41
+    0x80, 0x80, 0x80, 0xD8, 0xD8, 0xF8, 0xF6, 0xFF, 0xFC, 0xDC, 0xCE, 0x66, 0x60, 0x60, 0x60, 0x20, 0x01, 0x01, 0x00, 0x00, 0x06, 0x07, 0x03, 0x3F, 0x3F, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x0E, 0x0E, 0x06, 0xFF, 0xFF, 0xC6, 0x06, 0x06, 0x06, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x31, 0x3F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 44
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, // 46
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x1F, 0x03, 0x00, 0x00, 0x80, 0xF0, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0x7E, 0x1F, 0x0F, 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x3C, 0xF8, 0xE0, 0xFE, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0x70, 0x78, 0x1F, 0x0F, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48
+    0x00, 0x80, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, // 49
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1E, 0x1E, 0x0E, 0x07, 0x07, 0x03, 0xC3, 0xF3, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0xBC, 0x9E, 0x87, 0x83, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50
+    0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x83, 0x83, 0xC3, 0xE3, 0xFB, 0xFF, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x87, 0x07, 0x07, 0x03, 0x83, 0x83, 0x83, 0xC3, 0xC3, 0xE7, 0x77, 0x7F, 0x3E, 0x1E, 0x00, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF8, 0x3C, 0x1F, 0x0F, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0x00, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0xFE, 0xC7, 0xC7, 0xC3, 0xC3, 0xC3, 0xC1, 0xC1, 0x81, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x83, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x06, 0x1E, 0x1C, 0x18, 0x18, 0x1C, 0x0C, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53
+    0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFF, 0x1F, 0x07, 0x83, 0x81, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x7F, 0xFF, 0xFF, 0xFE, 0x9F, 0x87, 0x83, 0x81, 0xC1, 0xE1, 0x71, 0x3F, 0x1F, 0x07, 0x00, 0x03, 0x07, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x0E, 0x0F, 0x0F, 0x0F, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x07, 0xE7, 0xFF, 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x30, 0xFC, 0xFE, 0xCE, 0x87, 0x87, 0xC7, 0xE3, 0xF7, 0x7F, 0x3F, 0x0E, 0xF0, 0xF8, 0xBF, 0x0F, 0x07, 0x07, 0x8F, 0xFF, 0xFC, 0xF8, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xFE, 0xC7, 0x83, 0x83, 0x83, 0xC3, 0xC3, 0xFF, 0xFF, 0xFF, 0x1E, 0x06, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xE0, 0xFF, 0x7F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x01, 0xF3, 0xF3, 0xF3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 58
+    
+};
+
+#endif
+