This commit is contained in:
Jannis 2026-09-26 01:10:32 +02:00
parent 68a9d64990
commit 469eaad23c
12 changed files with 1302 additions and 155 deletions

View file

@ -30,41 +30,21 @@
"zones": true "zones": true
}, },
"visible_items": [ "visible_items": [
"vias", 12
"footprint_text",
"footprint_anchors",
"ratsnest",
"grid",
"footprints_front",
"footprints_back",
"footprint_values",
"footprint_references",
"tracks",
"drc_errors",
"drawing_sheet",
"bitmaps",
"pads",
"zones",
"drc_warnings",
"drc_exclusions",
"locked_item_shadows",
"conflict_shadows",
"shapes",
"board_outline_area",
"ly_points"
], ],
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff", "visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0 "zone_display_mode": 0
}, },
"git": { "git": {
"integration_disabled": false, "integration_disabled": false,
"repo_password": "",
"repo_type": "", "repo_type": "",
"repo_username": "", "repo_username": "",
"ssh_key": "" "ssh_key": ""
}, },
"meta": { "meta": {
"filename": "KugelmühleSchaltplan.kicad_prl", "filename": "KugelmühleSchaltplan.kicad_prl",
"version": 5 "version": 3
}, },
"net_inspector_panel": { "net_inspector_panel": {
"col_hidden": [], "col_hidden": [],

View file

@ -1,6 +1,205 @@
{ {
"board": { "board": {
"3dviewports": [], "3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [],
"zones_allow_external_fillets": false
},
"ipc2581": { "ipc2581": {
"bom_rev": "", "bom_rev": "",
"dist": "", "dist": "",
@ -207,6 +406,7 @@
"bus_entry_needed": "error", "bus_entry_needed": "error",
"bus_to_bus_conflict": "error", "bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error", "bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error", "different_unit_footprint": "error",
"different_unit_net": "error", "different_unit_net": "error",
"duplicate_reference": "error", "duplicate_reference": "error",
@ -217,6 +417,7 @@
"footprint_filter": "ignore", "footprint_filter": "ignore",
"footprint_link_issues": "warning", "footprint_link_issues": "warning",
"four_way_junction": "ignore", "four_way_junction": "ignore",
"global_label_dangling": "warning",
"ground_pin_not_ground": "warning", "ground_pin_not_ground": "warning",
"hier_label_mismatch": "error", "hier_label_mismatch": "error",
"isolated_pin_label": "warning", "isolated_pin_label": "warning",
@ -257,7 +458,7 @@
}, },
"meta": { "meta": {
"filename": "KugelmühleSchaltplan.kicad_pro", "filename": "KugelmühleSchaltplan.kicad_pro",
"version": 3 "version": 1
}, },
"net_settings": { "net_settings": {
"classes": [ "classes": [
@ -272,17 +473,15 @@
"microvia_drill": 0.1, "microvia_drill": 0.1,
"name": "Default", "name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)", "pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)", "schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2, "track_width": 0.2,
"tuning_profile": "",
"via_diameter": 0.6, "via_diameter": 0.6,
"via_drill": 0.3, "via_drill": 0.3,
"wire_width": 6 "wire_width": 6
} }
], ],
"meta": { "meta": {
"version": 5 "version": 3
}, },
"net_colors": null, "net_colors": null,
"netclass_assignments": null, "netclass_assignments": null,
@ -290,11 +489,14 @@
}, },
"pcbnew": { "pcbnew": {
"last_paths": { "last_paths": {
"gencad": "",
"idf": "", "idf": "",
"netlist": "", "netlist": "",
"plot": "", "plot": "",
"pos_files": "",
"specctra_dsn": "", "specctra_dsn": "",
"step": "", "step": "",
"svg": "",
"vrml": "" "vrml": ""
}, },
"page_layout_descr_file": "" "page_layout_descr_file": ""
@ -417,9 +619,16 @@
"meta": { "meta": {
"version": 1 "version": 1
}, },
"net_format_name": "",
"page_layout_descr_file": "", "page_layout_descr_file": "",
"plot_directory": "", "plot_directory": "",
"reuse_designators": true, "reuse_designators": true,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65, "subpart_first_id": 65,
"subpart_id_separator": 0, "subpart_id_separator": 0,
"top_level_sheets": [ "top_level_sheets": [

View file

@ -0,0 +1 @@
0

BIN
clock.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

725
clock_frames.h Normal file
View file

@ -0,0 +1,725 @@
#pragma once
#include <Arduino.h>
// Abmessungen: 21x21, 143 Frames
#define CLOCK_WIDTH 21
#define CLOCK_HEIGHT 21
#define CLOCK_FRAME_COUNT 143
const unsigned char clock_frame_0[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x01, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_1[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x01, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x24, 0x04, 0x14, 0x14, 0x0A, 0x04, 0x14, 0x08, 0x02, 0x0C, 0x08, 0x02, 0x0C, 0x08, 0x02, 0x00, 0x08, 0x06, 0x40, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_2[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x01, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x84, 0x09, 0x02, 0x64, 0x08, 0x02, 0x1C, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x02, 0x00, 0x00, 0x08
};
const unsigned char clock_frame_3[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x01, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x08, 0x04, 0x14, 0x08, 0x0A, 0x04, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0xFC, 0x0F, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_4[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x01, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x08, 0x04, 0x14, 0x08, 0x0A, 0x04, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x04, 0x08, 0x02, 0x18, 0x08, 0x06, 0x60, 0x08, 0x04, 0x80, 0x09, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_5[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x01, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x08, 0x06, 0x14, 0x08, 0x0A, 0x04, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x04, 0x08, 0x02, 0x08, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x20, 0x0A, 0x2C, 0x20, 0x04, 0x18, 0x40, 0x06, 0x30, 0x44, 0x03, 0x60, 0x90, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_6[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x08, 0x0A, 0x04, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x04, 0x08, 0x14, 0x05, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0x84, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_7[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x08, 0x0A, 0x04, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x06, 0x02, 0x08, 0x04, 0x02, 0x08, 0x14, 0x01, 0x0A, 0x0C, 0x01, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_8[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x08, 0x0A, 0x04, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x04, 0x08, 0x02, 0x06, 0x08, 0x86, 0x01, 0x08, 0x64, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_9[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x10, 0x04, 0x14, 0x10, 0x0A, 0x04, 0x08, 0x08, 0x02, 0x08, 0x08, 0xFA, 0x0F, 0x08, 0x02, 0x10, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x14, 0x18, 0x40, 0x06, 0x30, 0x00, 0x13, 0x60, 0xA0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_10[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x10, 0x04, 0x14, 0x10, 0x0A, 0x64, 0x08, 0x08, 0x82, 0x09, 0x08, 0x02, 0x0E, 0x08, 0x02, 0x10, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x14, 0x98, 0x40, 0x06, 0x30, 0x00, 0x13, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_11[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x11, 0x04, 0x14, 0x11, 0x0A, 0x04, 0x0A, 0x08, 0x02, 0x0C, 0x08, 0x02, 0x0C, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_12[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x24, 0x04, 0x14, 0x14, 0x0A, 0x04, 0x14, 0x08, 0x02, 0x0C, 0x08, 0x02, 0x0C, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x02, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_13[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x06, 0x14, 0x10, 0x0B, 0x04, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x02, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x04
};
const unsigned char clock_frame_14[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x10, 0x0A, 0x04, 0x90, 0x09, 0x02, 0x68, 0x08, 0x02, 0x18, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x20, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x02, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_15[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x20, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x18, 0x08, 0x02, 0xF8, 0x0F, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x02, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_16[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x20, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x18, 0x08, 0x02, 0x08, 0x08, 0x02, 0x18, 0x08, 0x06, 0x60, 0x08, 0x04, 0x80, 0x09, 0x14, 0x00, 0x0A, 0x0C, 0x02, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_17[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x20, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x18, 0x08, 0x02, 0x08, 0x08, 0x02, 0x08, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x20, 0x0A, 0x0C, 0x22, 0x04, 0x18, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_18[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x40, 0x0A, 0x04, 0x20, 0x08, 0x02, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x09, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x18, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0x84, 0x01, 0x80, 0x7F, 0x02, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_19[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x40, 0x0A, 0x04, 0x20, 0x08, 0x02, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0x04, 0x08, 0x06, 0x02, 0x09, 0x04, 0x02, 0x08, 0x14, 0x01, 0x0A, 0x0C, 0x01, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_20[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x40, 0x0A, 0x04, 0x20, 0x08, 0x02, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0x06, 0x08, 0x86, 0x01, 0x09, 0x64, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0xD8, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_21[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x60, 0x08, 0x02, 0x10, 0x08, 0xFA, 0x0F, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_22[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x64, 0x60, 0x08, 0x82, 0x11, 0x08, 0x02, 0x0E, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_23[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x62, 0x08, 0x02, 0x34, 0x08, 0x02, 0x0C, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_24[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x06, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x64, 0x08, 0x02, 0x1C, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_25[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x04, 0x14, 0x30, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x68, 0x08, 0x02, 0x18, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_26[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x80, 0x09, 0x02, 0x60, 0x08, 0x02, 0x18, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x01
};
const unsigned char clock_frame_27[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0xE0, 0x08, 0x02, 0xF8, 0x0F, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_28[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0xE0, 0x08, 0x02, 0x18, 0x08, 0x02, 0x18, 0x08, 0x06, 0x60, 0x08, 0x04, 0x80, 0x09, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_29[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0xE0, 0x08, 0x02, 0x18, 0x08, 0x02, 0x08, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x30, 0x0A, 0x0C, 0x20, 0x04, 0x18, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_30[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x80, 0x08, 0x02, 0x78, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x18, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0xC4, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_31[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x80, 0x08, 0x02, 0x78, 0x08, 0x02, 0x04, 0x08, 0x06, 0x02, 0x08, 0x04, 0x02, 0x08, 0x14, 0x01, 0x0A, 0x0C, 0x01, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_32[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x80, 0x08, 0x02, 0x78, 0x08, 0x02, 0x06, 0x08, 0x86, 0x01, 0x08, 0x64, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x41, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_33[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFA, 0xFF, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_34[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x64, 0x00, 0x08, 0x82, 0x01, 0x08, 0x02, 0xFE, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_35[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0xFC, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x01
};
const unsigned char clock_frame_36[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0xFC, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_37[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x04, 0x14, 0x10, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0xF8, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x08, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_38[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x80, 0x09, 0x02, 0x60, 0x08, 0x02, 0xF8, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_39[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0xF8, 0x0F, 0x02, 0xF0, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x08
};
const unsigned char clock_frame_40[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x40, 0x0C, 0x02, 0xF8, 0x08, 0x06, 0x60, 0x08, 0x04, 0x80, 0x09, 0x14, 0x40, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x11, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_41[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x40, 0x0C, 0x02, 0xF8, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x10, 0x0E, 0x0C, 0x20, 0x04, 0x98, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_42[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x7C, 0x08, 0x06, 0x84, 0x08, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x80, 0x00
};
const unsigned char clock_frame_43[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x7C, 0x08, 0x06, 0x82, 0x08, 0x04, 0x02, 0x08, 0x14, 0x01, 0x0A, 0x0C, 0x01, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_44[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x7E, 0x08, 0x86, 0x81, 0x08, 0x64, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x4C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_45[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFA, 0x07, 0x08, 0x02, 0x38, 0x08, 0x06, 0xC0, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_46[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x64, 0x00, 0x08, 0x82, 0x01, 0x08, 0x02, 0x06, 0x08, 0x02, 0x38, 0x08, 0x06, 0xC0, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_47[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x84, 0x08, 0x02, 0x38, 0x08, 0x06, 0xC0, 0x08, 0x04, 0x00, 0x08, 0x14, 0x20, 0x0A, 0x0C, 0x02, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_48[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x18, 0x08, 0x06, 0x60, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_49[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x06, 0x14, 0x30, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x18, 0x08, 0x06, 0x60, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_50[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x80, 0x09, 0x02, 0x60, 0x08, 0x02, 0x18, 0x08, 0x02, 0x18, 0x08, 0x06, 0x60, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_51[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0xF8, 0x0F, 0x02, 0x18, 0x08, 0x06, 0x30, 0x08, 0x04, 0x40, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_52[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x18, 0x08, 0x06, 0x70, 0x08, 0x04, 0xC0, 0x09, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_53[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x18, 0x08, 0x06, 0x38, 0x08, 0x04, 0x50, 0x08, 0x14, 0x20, 0x0A, 0x0C, 0x20, 0x04, 0x98, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_54[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0A, 0x02, 0x0C, 0x08, 0x06, 0x14, 0x08, 0x04, 0x64, 0x0A, 0x14, 0x04, 0x0A, 0x2C, 0x04, 0x04, 0x18, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0x84, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_55[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0A, 0x02, 0x0C, 0x08, 0x06, 0x12, 0x08, 0x04, 0x62, 0x0A, 0x14, 0x01, 0x0A, 0x2C, 0x01, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0xC2, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_56[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0A, 0x02, 0x0E, 0x08, 0x86, 0x11, 0x08, 0x64, 0x60, 0x0A, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC1, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_57[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFA, 0x07, 0x0A, 0x02, 0x08, 0x08, 0x06, 0x10, 0x08, 0x04, 0x20, 0x0A, 0x14, 0x20, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x10, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_58[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x1C, 0x00, 0x0A, 0x64, 0x00, 0x08, 0x82, 0x01, 0x08, 0x02, 0x06, 0x0A, 0x02, 0x08, 0x08, 0x06, 0x10, 0x08, 0x04, 0x20, 0x0A, 0x14, 0x20, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x48, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x10, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_59[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x0A, 0x02, 0x08, 0x08, 0x06, 0x10, 0x08, 0x04, 0x20, 0x08, 0x14, 0x20, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_60[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x08, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x20, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_61[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x04, 0x14, 0x10, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x08, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x20, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_62[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x80, 0x09, 0x02, 0x60, 0x08, 0x02, 0x18, 0x08, 0x02, 0x08, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x20, 0x0A, 0x0C, 0x00, 0x05, 0x98, 0x40, 0x06, 0x30, 0x00, 0x13, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_63[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0xF8, 0x0F, 0x02, 0x08, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x10, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_64[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x18, 0x08, 0x06, 0x68, 0x08, 0x04, 0x90, 0x09, 0x14, 0x10, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x60, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_65[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x08, 0x08, 0x06, 0x28, 0x08, 0x04, 0x10, 0x08, 0x14, 0x30, 0x0A, 0x0C, 0x20, 0x04, 0x98, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_66[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x0C, 0x08, 0x06, 0x0C, 0x08, 0x04, 0x0C, 0x08, 0x14, 0x0C, 0x0A, 0x0C, 0x14, 0x04, 0x98, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0x84, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_67[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x0C, 0x08, 0x06, 0x0A, 0x08, 0x04, 0x0A, 0x08, 0x14, 0x09, 0x0A, 0x0C, 0x11, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_68[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x0E, 0x08, 0x86, 0x09, 0x08, 0x64, 0x08, 0x08, 0x14, 0x08, 0x0A, 0x0C, 0x10, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_69[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFA, 0x07, 0x08, 0x02, 0x00, 0x08, 0x06, 0x08, 0x08, 0x04, 0x08, 0x08, 0x14, 0x08, 0x0A, 0x0C, 0x08, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_70[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x1C, 0x00, 0x0A, 0x64, 0x00, 0x08, 0x82, 0x01, 0x08, 0x02, 0x06, 0x08, 0x22, 0x04, 0x08, 0x06, 0x08, 0x08, 0x04, 0x08, 0x08, 0x14, 0x08, 0x0A, 0x0C, 0x08, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_71[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x06, 0x08, 0x08, 0x04, 0x08, 0x08, 0x14, 0x08, 0x0A, 0x0C, 0x08, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_72[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_73[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x04, 0x14, 0x10, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x02, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_74[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x80, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x80, 0x09, 0x02, 0x60, 0x08, 0x02, 0x18, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_75[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x80, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0xF8, 0x0F, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_76[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x80, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x3C, 0x08, 0x06, 0x64, 0x08, 0x04, 0x84, 0x09, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x90, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_77[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x80, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x2C, 0x08, 0x06, 0x0C, 0x08, 0x04, 0x14, 0x08, 0x14, 0x24, 0x0A, 0x0C, 0x24, 0x04, 0x98, 0x40, 0x06, 0x30, 0x40, 0x13, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x04
};
const unsigned char clock_frame_78[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0C, 0x02, 0x04, 0x08, 0x06, 0x06, 0x08, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x06, 0x04, 0x98, 0x54, 0x06, 0x30, 0x04, 0x03, 0x60, 0x84, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_79[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0C, 0x02, 0x04, 0x08, 0x06, 0x06, 0x08, 0x04, 0x06, 0x08, 0x14, 0x01, 0x0A, 0x0C, 0x03, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_80[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0C, 0x02, 0x06, 0x08, 0x86, 0x05, 0x08, 0x64, 0x04, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x02, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_81[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFA, 0x07, 0x0C, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x02, 0x08, 0x14, 0x02, 0x0A, 0x0C, 0x02, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_82[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x64, 0x00, 0x08, 0x82, 0x01, 0x08, 0x02, 0x06, 0x0C, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x02, 0x08, 0x14, 0x02, 0x0A, 0x0C, 0x02, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_83[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x0C, 0x02, 0x04, 0x08, 0x06, 0x04, 0x0C, 0x04, 0x02, 0x08, 0x14, 0x02, 0x0A, 0x0C, 0x02, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_84[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x02, 0x08, 0x14, 0x02, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_85[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x04, 0x14, 0x10, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x02, 0x08, 0x14, 0x02, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_86[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x14, 0x00, 0x0A, 0x04, 0x80, 0x09, 0x02, 0x60, 0x08, 0x02, 0x18, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x02, 0x08, 0x14, 0x02, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_87[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0xF8, 0x0F, 0x02, 0x04, 0x08, 0x06, 0x02, 0x08, 0x04, 0x01, 0x08, 0x14, 0x01, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_88[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x1C, 0x08, 0x06, 0x62, 0x08, 0x04, 0x81, 0x09, 0x14, 0x01, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_89[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x0C, 0x08, 0x06, 0x0A, 0x08, 0x04, 0x11, 0x08, 0x14, 0x21, 0x0A, 0x0C, 0x20, 0x05, 0x98, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0xD0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_90[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x04, 0x08, 0x06, 0x06, 0x08, 0x04, 0x05, 0x08, 0x94, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_91[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x04, 0x08, 0x06, 0x02, 0x08, 0x04, 0x03, 0x08, 0x94, 0x01, 0x0A, 0x0C, 0x01, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_92[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x06, 0x08, 0x86, 0x03, 0x08, 0x64, 0x01, 0x08, 0x94, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_93[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFA, 0x07, 0x08, 0x02, 0x06, 0x08, 0x06, 0x01, 0x08, 0x84, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x04, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_94[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x64, 0x00, 0x08, 0x82, 0x01, 0x08, 0x02, 0x06, 0x08, 0x02, 0x06, 0x08, 0x06, 0x01, 0x08, 0x84, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_95[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x26, 0x08, 0x06, 0x01, 0x08, 0x84, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_96[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x06, 0x08, 0x86, 0x01, 0x08, 0x04, 0x00, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_97[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x04, 0x14, 0x10, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x08, 0x08, 0x02, 0x08, 0x08, 0x02, 0x06, 0x08, 0x86, 0x01, 0x08, 0x04, 0x00, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_98[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x80, 0x09, 0x02, 0x60, 0x0C, 0x02, 0x18, 0x08, 0x02, 0x06, 0x08, 0x86, 0x01, 0x08, 0x04, 0x00, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_99[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0xF8, 0x0F, 0x02, 0x03, 0x08, 0xC6, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_100[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x1B, 0x08, 0xC6, 0x60, 0x08, 0x04, 0x80, 0x09, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x60, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_101[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x0B, 0x08, 0xC6, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x30, 0x0A, 0x0C, 0x20, 0x04, 0x18, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_102[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x04, 0x08, 0xC2, 0x07, 0x08, 0x06, 0x04, 0x08, 0x04, 0x44, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0x84, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_103[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x04, 0x08, 0xC2, 0x07, 0x08, 0x06, 0x02, 0x08, 0x04, 0x02, 0x08, 0x14, 0x01, 0x0A, 0x0C, 0x01, 0x04, 0x98, 0x40, 0x06, 0xF0, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_104[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x04, 0x08, 0xC2, 0x07, 0x08, 0x86, 0x01, 0x08, 0x64, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x04, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_105[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFA, 0x07, 0x08, 0xC2, 0x03, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_106[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x64, 0x00, 0x08, 0x82, 0x01, 0x08, 0x02, 0x06, 0x08, 0xC2, 0x03, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_107[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0xC2, 0x03, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_108[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0xC2, 0x07, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_109[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x06, 0x14, 0x10, 0x0A, 0x04, 0x10, 0x08, 0x02, 0x08, 0x08, 0xC2, 0x0F, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_110[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x80, 0x09, 0x02, 0x60, 0x08, 0xC2, 0x1F, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_111[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xC2, 0xFF, 0x0F, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_112[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xC2, 0x07, 0x08, 0x02, 0x18, 0x08, 0x06, 0x60, 0x08, 0x04, 0x80, 0x0D, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_113[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0xC2, 0x07, 0x08, 0x02, 0x08, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x0C, 0x14, 0x20, 0x0A, 0x0C, 0x20, 0x04, 0x98, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_114[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x87, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x98, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0xC4, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_115[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x87, 0x08, 0x02, 0x04, 0x08, 0x06, 0x02, 0x08, 0x04, 0x02, 0x08, 0x14, 0x01, 0x0A, 0x0C, 0x01, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_116[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x87, 0x08, 0x02, 0x06, 0x08, 0x86, 0x01, 0x08, 0x64, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x01
};
const unsigned char clock_frame_117[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x04, 0x00, 0x08, 0xC2, 0x00, 0x08, 0xFA, 0x87, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_118[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x64, 0x00, 0x08, 0xC2, 0x01, 0x08, 0x02, 0x87, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x02, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_119[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x02, 0x08, 0xC2, 0x04, 0x08, 0x02, 0x07, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_120[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x44, 0x44, 0x08, 0x82, 0x05, 0x08, 0x02, 0x06, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_121[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x20, 0x06, 0x14, 0x30, 0x0A, 0x44, 0x10, 0x08, 0x82, 0x09, 0x08, 0x02, 0x0E, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_122[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x44, 0x80, 0x09, 0x82, 0x61, 0x08, 0x02, 0x1E, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_123[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x84, 0x00, 0x08, 0x02, 0x03, 0x08, 0x02, 0x04, 0x08, 0x02, 0x18, 0x08, 0x06, 0x60, 0x08, 0x04, 0x80, 0x09, 0x14, 0x40, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_124[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x84, 0x00, 0x08, 0x02, 0x03, 0x08, 0x02, 0x04, 0x08, 0x02, 0x18, 0x08, 0x06, 0x08, 0x08, 0x04, 0x10, 0x08, 0x14, 0x20, 0x0A, 0x0C, 0x20, 0x04, 0x98, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_125[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x94, 0x00, 0x0A, 0x04, 0x01, 0x08, 0x02, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x04, 0x08, 0x14, 0x04, 0x0A, 0x0C, 0x14, 0x04, 0x98, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0x84, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_126[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x94, 0x00, 0x0A, 0x04, 0x01, 0x08, 0x02, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x06, 0x02, 0x08, 0x04, 0x02, 0x08, 0x14, 0x01, 0x0A, 0x0C, 0x01, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_127[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x94, 0x00, 0x0A, 0x04, 0x01, 0x08, 0x02, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x06, 0x08, 0x86, 0x01, 0x08, 0x64, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_128[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x94, 0x01, 0x0A, 0x04, 0x01, 0x08, 0x02, 0x02, 0x08, 0xFA, 0x07, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x20, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_129[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x94, 0x01, 0x0A, 0x64, 0x01, 0x08, 0x82, 0x03, 0x08, 0x02, 0x06, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x02, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_130[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x94, 0x01, 0x0A, 0x04, 0x03, 0x08, 0x02, 0x06, 0x08, 0x02, 0x04, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x08, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC1, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_131[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x84, 0x05, 0x90, 0x44, 0x03, 0x08, 0x04, 0x06, 0x0C, 0x05, 0x04, 0x14, 0x05, 0x0A, 0x04, 0x06, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_132[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x40, 0x06, 0x0C, 0x21, 0x04, 0x14, 0x11, 0x0A, 0x04, 0x12, 0x08, 0x02, 0x0C, 0x08, 0x02, 0x0C, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_133[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x01, 0x04, 0x14, 0x01, 0x0A, 0x04, 0x82, 0x09, 0x02, 0x74, 0x08, 0x02, 0x1C, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_134[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x02, 0x04, 0x14, 0x02, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0xFC, 0x0F, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_135[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x02, 0x04, 0x14, 0x02, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x18, 0x08, 0x06, 0x60, 0x0C, 0x04, 0x80, 0x09, 0x54, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_136[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x02, 0x04, 0x14, 0x02, 0x0A, 0x04, 0x02, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x08, 0x08, 0x06, 0x08, 0x0C, 0x04, 0x10, 0x09, 0x54, 0x30, 0x0A, 0x0C, 0x20, 0x04, 0x18, 0x40, 0x06, 0x30, 0x40, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_137[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x02, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x06, 0x04, 0x08, 0x04, 0x04, 0x08, 0x54, 0x04, 0x0A, 0x0C, 0x04, 0x04, 0x18, 0x44, 0x06, 0x30, 0x04, 0x03, 0x60, 0xC4, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_138[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x02, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x06, 0x02, 0x08, 0x04, 0x02, 0x08, 0x54, 0x01, 0x0A, 0x0C, 0x01, 0x04, 0x98, 0x40, 0x06, 0xB0, 0x00, 0x03, 0x60, 0xC0, 0x05, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_139[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x02, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x06, 0x08, 0x86, 0x01, 0x08, 0x64, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_140[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x04, 0x44, 0x08, 0x02, 0x04, 0x08, 0xFA, 0x07, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x05, 0x18, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0xC0, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00
};
const unsigned char clock_frame_141[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x08, 0x00, 0x06, 0x0C, 0x04, 0x04, 0x14, 0x04, 0x0A, 0x64, 0x44, 0x08, 0x82, 0x05, 0x08, 0x02, 0x06, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x44, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x10
};
const unsigned char clock_frame_142[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0xF1, 0x00, 0x60, 0x80, 0x05, 0x90, 0x40, 0x03, 0x88, 0x00, 0x06, 0x0C, 0x05, 0x04, 0x14, 0x05, 0x0A, 0x04, 0x46, 0x08, 0x02, 0x04, 0x08, 0x02, 0x04, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x0C, 0x00, 0x04, 0x98, 0x40, 0x06, 0x30, 0x00, 0x03, 0x60, 0x80, 0x01, 0x80, 0x7F, 0x10, 0x00, 0x00, 0x00
};
const unsigned char* const clock_frames[] PROGMEM = {
clock_frame_0,
clock_frame_1,
clock_frame_2,
clock_frame_3,
clock_frame_4,
clock_frame_5,
clock_frame_6,
clock_frame_7,
clock_frame_8,
clock_frame_9,
clock_frame_10,
clock_frame_11,
clock_frame_12,
clock_frame_13,
clock_frame_14,
clock_frame_15,
clock_frame_16,
clock_frame_17,
clock_frame_18,
clock_frame_19,
clock_frame_20,
clock_frame_21,
clock_frame_22,
clock_frame_23,
clock_frame_24,
clock_frame_25,
clock_frame_26,
clock_frame_27,
clock_frame_28,
clock_frame_29,
clock_frame_30,
clock_frame_31,
clock_frame_32,
clock_frame_33,
clock_frame_34,
clock_frame_35,
clock_frame_36,
clock_frame_37,
clock_frame_38,
clock_frame_39,
clock_frame_40,
clock_frame_41,
clock_frame_42,
clock_frame_43,
clock_frame_44,
clock_frame_45,
clock_frame_46,
clock_frame_47,
clock_frame_48,
clock_frame_49,
clock_frame_50,
clock_frame_51,
clock_frame_52,
clock_frame_53,
clock_frame_54,
clock_frame_55,
clock_frame_56,
clock_frame_57,
clock_frame_58,
clock_frame_59,
clock_frame_60,
clock_frame_61,
clock_frame_62,
clock_frame_63,
clock_frame_64,
clock_frame_65,
clock_frame_66,
clock_frame_67,
clock_frame_68,
clock_frame_69,
clock_frame_70,
clock_frame_71,
clock_frame_72,
clock_frame_73,
clock_frame_74,
clock_frame_75,
clock_frame_76,
clock_frame_77,
clock_frame_78,
clock_frame_79,
clock_frame_80,
clock_frame_81,
clock_frame_82,
clock_frame_83,
clock_frame_84,
clock_frame_85,
clock_frame_86,
clock_frame_87,
clock_frame_88,
clock_frame_89,
clock_frame_90,
clock_frame_91,
clock_frame_92,
clock_frame_93,
clock_frame_94,
clock_frame_95,
clock_frame_96,
clock_frame_97,
clock_frame_98,
clock_frame_99,
clock_frame_100,
clock_frame_101,
clock_frame_102,
clock_frame_103,
clock_frame_104,
clock_frame_105,
clock_frame_106,
clock_frame_107,
clock_frame_108,
clock_frame_109,
clock_frame_110,
clock_frame_111,
clock_frame_112,
clock_frame_113,
clock_frame_114,
clock_frame_115,
clock_frame_116,
clock_frame_117,
clock_frame_118,
clock_frame_119,
clock_frame_120,
clock_frame_121,
clock_frame_122,
clock_frame_123,
clock_frame_124,
clock_frame_125,
clock_frame_126,
clock_frame_127,
clock_frame_128,
clock_frame_129,
clock_frame_130,
clock_frame_131,
clock_frame_132,
clock_frame_133,
clock_frame_134,
clock_frame_135,
clock_frame_136,
clock_frame_137,
clock_frame_138,
clock_frame_139,
clock_frame_140,
clock_frame_141,
clock_frame_142,
};

View file

@ -1,11 +1,11 @@
#include "display_ui.h" #include "display_ui.h"
#include <Wire.h> #include <Wire.h>
#include <U8g2lib.h> #include <U8g2lib.h>
#include "fire_frames.h"
#include "clock_frames.h"
// Bitmaps & Animation-Dateien aus Lopaka static uint8_t fire_flames_frame = 0;
//#include "Clock.h" static uint8_t clock_frame = 0;
//#include "Clock.h"
//#include "fire_flames.h"
uint32_t lastDispTime = 0; uint32_t lastDispTime = 0;
@ -21,11 +21,6 @@ static const unsigned char image_paint_27_bits[] U8X8_PROGMEM = {
static const unsigned char image_checked_bits[] U8X8_PROGMEM = {0x00,0x00,0x40,0x21,0x13,0x0e,0x04,0x00}; static const unsigned char image_checked_bits[] U8X8_PROGMEM = {0x00,0x00,0x40,0x21,0x13,0x0e,0x04,0x00};
static const unsigned char image_crossed_bits[] U8X8_PROGMEM = {0x00,0x21,0x12,0x0c,0x1e,0x33,0x00,0x00}; static const unsigned char image_crossed_bits[] U8X8_PROGMEM = {0x00,0x21,0x12,0x0c,0x1e,0x33,0x00,0x00};
// Animations-Zähler
//static uint8_t fire_flames_frame = 0;
//static uint8_t Clock_frame = 0;
// U8g2-Display-Objekt // U8g2-Display-Objekt
static U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); static U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
@ -39,18 +34,21 @@ void initDisplay() {
// ANIMATIONEN BERECHNEN & ZEICHNEN // ANIMATIONEN BERECHNEN & ZEICHNEN
// ############################################################# // #############################################################
static void updateAnimations() { static void updateAnimations() {
//fire_flames_frame = (millis() / 77) % 8; // 8 Frames: Wechsel alle 77 ms
//Clock_frame = (millis() / 200) % 143; fire_flames_frame = (millis() / 77) % FIRE_FLAMES_FRAME_COUNT;
// 143 Frames: Wechsel alle 50 ms (ca. 7 Sekunden Gesamt-Umlaufzeit)
clock_frame = (millis() / 50) % CLOCK_FRAME_COUNT;
} }
static void drawAnimation_fire_flames() { static void drawAnimation_fire_flames() {
//u8g2.setDrawColor(1); u8g2.setDrawColor(1);
// u8g2.drawXBMP(80, 30, 21, 32, fire_flames_frames[fire_flames_frame]); u8g2.drawXBMP(80, 30, FIRE_FLAMES_WIDTH, FIRE_FLAMES_HEIGHT, fire_flames_frames[fire_flames_frame]);
} }
static void drawAnimation_Clock() { static void drawAnimation_Clock() {
//u8g2.setDrawColor(1); u8g2.setDrawColor(1);
// u8g2.drawXBMP(104, 40, 21, 21, Clock_frames[Clock_frame]); u8g2.drawXBMP(104, 40, CLOCK_WIDTH, CLOCK_HEIGHT, clock_frames[clock_frame]);
} }
// ############################################################# // #############################################################
@ -61,103 +59,116 @@ static void drawHomeScreen(int currentSpeed, int curH, int curM, bool timeValid,
u8g2.setBitmapMode(1); u8g2.setBitmapMode(1);
u8g2.setDrawColor(1); // 1 = Weiß (an) u8g2.setDrawColor(1); // 1 = Weiß (an)
// 1. Feste Beschriftungen // Aktuelle Geschwindigkeit
u8g2.setFont(u8g2_font_helvB08_tr); u8g2.setFont(u8g2_font_helvB08_tr);
u8g2.drawStr(5, 9, "Geschw"); u8g2.drawStr(2, 10, "Geschw:");
u8g2.drawStr(5, 20, "Zeituhr"); char speedBuf[16];
u8g2.drawStr(5, 31, "Temp"); snprintf(speedBuf, sizeof(speedBuf), "%d U/min", currentSpeed);
u8g2.drawStr(52, 10, speedBuf);
// 2. Dynamischer Wert: Geschwindigkeit
char speedBuf[10];
snprintf(speedBuf, sizeof(speedBuf), "%d", currentSpeed);
u8g2.drawStr(51, 8, speedBuf);
// Zeitschaltuhr
u8g2.drawStr(2, 21, "Zeituhr");
// 3. Dynamische Zeitschaltuhr: Start- und Endzeit // 3. Dynamische Zeitschaltuhr: Start- und Endzeit
char startBuf[8]; char timerBuf[16];
char endBuf[8]; if (settings.timerEnabled) {
snprintf(startBuf, sizeof(startBuf), "%02d:%02d", settings.startHour, settings.startMin); snprintf(timerBuf, sizeof(timerBuf), "%02d:%02d-%02d:%02d",
snprintf(endBuf, sizeof(endBuf), "%02d:%02d", settings.endHour, settings.endMin); settings.startHour, settings.startMin, settings.endHour, settings.endMin);
} else {
snprintf(timerBuf, sizeof(timerBuf), "Deaktiviert");
}
u8g2.drawStr(52, 21, timerBuf);
u8g2.drawStr(51, 19, startBuf); // Aktuelle Temperatur
u8g2.drawLine(79, 16, 83, 16); // Bindestrich zwischen Zeiten u8g2.drawStr(2, 32, "Temp");
u8g2.drawStr(89, 19, endBuf); char tempBuf[16];
snprintf(tempBuf, sizeof(tempBuf), "%d / %d \xb0""C", curTemp, settings.maxTemp); // \xb0 = Grad-Zeichen
u8g2.drawStr(52, 32, tempBuf);
// 4. Dynamische Temperatur (Ist & Soll/Max) // =========================================================
char curTempBuf[10]; // 2. HORIZONTALE TRENNLINIE
snprintf(curTempBuf, sizeof(curTempBuf), "%d", curTemp); // =========================================================
u8g2.drawStr(52, 30, curTempBuf); u8g2.drawHLine(0, 36, 128);
u8g2.drawLine(67, 24, 67, 29); // Trennstrich
char maxTempBuf[8];
snprintf(maxTempBuf, sizeof(maxTempBuf), "%d", settings.maxTemp);
u8g2.drawStr(74, 30, maxTempBuf);
// 5. Große aktuelle Uhrzeit unten links // 5. Große aktuelle Uhrzeit unten links
u8g2.setFont(u8g2_font_helvB08_tr); u8g2.setFont(u8g2_font_helvB14_tr);
char timeBuf[10]; char timeBuf[10];
if (timeValid) { if (timeValid) {
snprintf(timeBuf, sizeof(timeBuf), "%02d:%02d", curH, curM); snprintf(timeBuf, sizeof(timeBuf), "%02d:%02d", curH, curM);
} else { } else {
snprintf(timeBuf, sizeof(timeBuf), "--:--"); snprintf(timeBuf, sizeof(timeBuf), "--:--");
} }
u8g2.drawStr(4, 60, timeBuf); u8g2.drawStr(2, 58, timeBuf);
// 6. Lopaka Deko-Bitmap // Icon 1: Zeitschaltuhr aktiv (z. B. bei X = 90)
u8g2.drawXBMP(32, 4, 16, 26, image_paint_27_bits); if (timerActive) {
drawAnimation_Clock();
}
// 7. Lopaka Animationen abspielen // Icon 2: Überhitzungs-Warnung (z. B. bei X = 110)
//drawAnimation_fire_flames(); if (curTemp >= settings.maxTemp) {
//drawAnimation_Clock(); drawAnimation_fire_flames();
}
} }
// ############################################################# // #############################################################
// Zeitschaltuhr // Zeitschaltuhr
// ############################################################# // #############################################################
static void drawTimerScreen(TimeEditStep timeEditStep, uint8_t settingIdx, const SystemSettings& settings){ static void drawTimerScreen(TimeEditStep timeEditStep, uint8_t settingIdx, const SystemSettings& settings){
const uint8_t* Font = u8g2_font_helvB10_tr;
u8g2.setFontMode(1); u8g2.setFontMode(1);
u8g2.setBitmapMode(1); u8g2.setBitmapMode(1);
// Von // Von
u8g2.setFont(u8g2_font_6x12_tr); u8g2.setFont(Font);
u8g2.drawStr(31, 26, "Von:"); u8g2.drawStr(30, 18, "Von:");
// Start Time // Start Time
u8g2.setFont(u8g2_font_6x10_tr);
char startBuf[10]; char startBuf[10];
snprintf(startBuf, sizeof(startBuf), "%02d:%02d", settings.startHour, settings.startMin); snprintf(startBuf, sizeof(startBuf), "%02d:%02d", settings.startHour, settings.startMin);
u8g2.drawStr(66, 26, startBuf); u8g2.drawStr(66, 18, startBuf);
// string 23 // string 23
u8g2.setFont(u8g2_font_6x12_tr); u8g2.drawStr(30, 36, "Bis:");
u8g2.drawStr(31, 44, "Bis:");
// End Time // End Time
u8g2.setFont(u8g2_font_6x10_tr);
char endBuf[10]; char endBuf[10];
snprintf(endBuf, sizeof(endBuf), "%02d:%02d", settings.endHour, settings.endMin); snprintf(endBuf, sizeof(endBuf), "%02d:%02d", settings.endHour, settings.endMin);
u8g2.drawStr(66, 44, endBuf); u8g2.drawStr(66, 36, endBuf);
// AutoSpeed
u8g2.drawStr(18, 54, "Speed:");
char speedBuf[10];
snprintf(speedBuf, sizeof(speedBuf), "%d", settings.autoSpeed);
u8g2.drawStr(66, 54, speedBuf);
// Auswahlbox Zeichnen // Auswahlbox Zeichnen
switch (timeEditStep) { switch (timeEditStep) {
case EDIT_START_HOUR: case EDIT_START_HOUR:
u8g2.setDrawColor(2); // Invertierungs mode u8g2.setDrawColor(2); // Invertierungs mode
u8g2.drawBox(66, 17, 11, 11); u8g2.drawBox(65, 7, 16, 13);
u8g2.setDrawColor(1); // Wieder zurück auf normal u8g2.setDrawColor(1); // Wieder zurück auf normal
break; break;
case EDIT_START_MIN: case EDIT_START_MIN:
u8g2.setDrawColor(2); // Invertierungs mode u8g2.setDrawColor(2); // Invertierungs mode
u8g2.drawBox((66+18), 17, 11, 11); u8g2.drawBox(65 + 19, 7, 16, 13);
u8g2.setDrawColor(1); // Wieder zurück auf normal u8g2.setDrawColor(1); // Wieder zurück auf normal
break; break;
case EDIT_END_HOUR: case EDIT_END_HOUR:
u8g2.setDrawColor(2); // Invertierungs mode u8g2.setDrawColor(2); // Invertierungs mode
u8g2.drawBox(66, 35, 11, 11); u8g2.drawBox(65, 25, 16, 13);
u8g2.setDrawColor(1); // Wieder zurück auf normal u8g2.setDrawColor(1); // Wieder zurück auf normal
break; break;
case EDIT_END_MIN: case EDIT_END_MIN:
u8g2.setDrawColor(2); // Invertierungs mode u8g2.setDrawColor(2); // Invertierungs mode
u8g2.drawBox((66+18), 35, 11, 11); u8g2.drawBox(65 + 19, 25, 16, 13);
u8g2.setDrawColor(1); // Wieder zurück auf normal u8g2.setDrawColor(1); // Wieder zurück auf normal
break; break;
case EDIT_SPEED:{
int widthSpeedBuf = u8g2.getStrWidth(speedBuf);
u8g2.setDrawColor(2);
u8g2.drawBox(64, 43, widthSpeedBuf + 4, 13); // Umschließt den gesamten Wert
u8g2.setDrawColor(1);
break;
}
default: break; default: break;
} }
} }
@ -271,8 +282,9 @@ void updateDisplay(bool inSettings,
int curH, int curM, bool timeValid, int curTemp) { int curH, int curM, bool timeValid, int curTemp) {
if (millis() - lastDispTime >= 50) { if (millis() - lastDispTime >= 50) {
lastDispTime = millis(); lastDispTime = millis();
u8g2.clearBuffer(); u8g2.clearBuffer();
updateAnimations();
if (inSettings) { if (inSettings) {
drawSettingsScreen(settingIdx, editStep, settings); drawSettingsScreen(settingIdx, editStep, settings);

BIN
fire.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

50
fire_frames.h Normal file
View file

@ -0,0 +1,50 @@
#pragma once
#include <Arduino.h>
// Abmessungen: 21x32, 8 Frames
#define FIRE_FLAMES_WIDTH 21
#define FIRE_FLAMES_HEIGHT 32
#define FIRE_FLAMES_FRAME_COUNT 8
const unsigned char fire_flames_frame_0[] PROGMEM = {
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, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x4C, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x40, 0x00, 0x20, 0xC8, 0x00, 0x20, 0xB4, 0x00, 0x80, 0x5A, 0x00, 0x80, 0x24, 0x00, 0x20, 0x74, 0x00, 0x00, 0x20, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x21, 0x00, 0x80, 0x30, 0x00, 0x80, 0x25, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00
};
const unsigned char fire_flames_frame_1[] PROGMEM = {
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, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x4C, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x40, 0x00, 0x20, 0xC8, 0x00, 0x20, 0xB4, 0x00, 0x80, 0x5A, 0x00, 0x80, 0x24, 0x00, 0x20, 0x74, 0x00, 0x00, 0x20, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x21, 0x00, 0x80, 0x30, 0x00, 0x80, 0x25, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00
};
const unsigned char fire_flames_frame_2[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0F, 0x00, 0x80, 0x0C, 0x00, 0x80, 0x4D, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x05, 0x00, 0x00, 0x4E, 0x00, 0x40, 0xC7, 0x00, 0x40, 0xC8, 0x00, 0x40, 0xC3, 0x00, 0x20, 0x58, 0x00, 0x00, 0x15, 0x00, 0xA0, 0x24, 0x00, 0x80, 0x34, 0x00, 0xE0, 0x00, 0x00, 0x40, 0x49, 0x00, 0xA0, 0x57, 0x00, 0x40, 0x30, 0x00, 0xC0, 0x09, 0x00, 0x00, 0x24, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00
};
const unsigned char fire_flames_frame_3[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0F, 0x00, 0x80, 0x0C, 0x00, 0x80, 0x4D, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x05, 0x00, 0x00, 0x4E, 0x00, 0x40, 0xC7, 0x00, 0x40, 0xC8, 0x00, 0x40, 0xC3, 0x00, 0x20, 0x58, 0x00, 0x00, 0x15, 0x00, 0xA0, 0x24, 0x00, 0x80, 0x34, 0x00, 0xE0, 0x00, 0x00, 0x40, 0x49, 0x00, 0xA0, 0x57, 0x00, 0x40, 0x30, 0x00, 0xC0, 0x09, 0x00, 0x00, 0x24, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00
};
const unsigned char fire_flames_frame_4[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x24, 0x00, 0x40, 0xEC, 0x00, 0x00, 0xB0, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x38, 0x00, 0x60, 0xE0, 0x00, 0x60, 0xDA, 0x00, 0xA0, 0x18, 0x00, 0x20, 0xAF, 0x00, 0xE0, 0x05, 0x00, 0x80, 0xCD, 0x00, 0xE0, 0x0A, 0x00, 0xC0, 0x40, 0x00, 0x80, 0x31, 0x00, 0x80, 0x14, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00
};
const unsigned char fire_flames_frame_5[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x62, 0x00, 0x00, 0x60, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x58, 0x00, 0x60, 0xE9, 0x00, 0x20, 0x04, 0x00, 0x20, 0x82, 0x00, 0x60, 0xA0, 0x00, 0xA0, 0x40, 0x00, 0xA0, 0xA7, 0x00, 0xE0, 0xFA, 0x00, 0x60, 0x41, 0x00, 0x00, 0x29, 0x00, 0x40, 0x0A, 0x00, 0x80, 0x0D, 0x00, 0x00, 0x04, 0x00
};
const unsigned char fire_flames_frame_6[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x62, 0x00, 0x00, 0x60, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x58, 0x00, 0x60, 0xE9, 0x00, 0x20, 0x04, 0x00, 0x20, 0x82, 0x00, 0x60, 0xA0, 0x00, 0xA0, 0x40, 0x00, 0xA0, 0xA7, 0x00, 0xE0, 0xFA, 0x00, 0x60, 0x41, 0x00, 0x00, 0x29, 0x00, 0x40, 0x0A, 0x00, 0x80, 0x0D, 0x00, 0x00, 0x04, 0x00
};
const unsigned char fire_flames_frame_7[] PROGMEM = {
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, 0x48, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x42, 0x00, 0x20, 0x46, 0x00, 0x00, 0x44, 0x00, 0x00, 0x06, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x3C, 0x00, 0x40, 0xE6, 0x00, 0x40, 0x46, 0x00, 0x60, 0xB8, 0x00, 0x60, 0x12, 0x00, 0x00, 0x47, 0x00, 0xA0, 0xD4, 0x00, 0x00, 0x2E, 0x00, 0x80, 0x79, 0x00, 0x00, 0x38, 0x00, 0x80, 0x6B, 0x00, 0x00, 0x79, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00
};
const unsigned char* const fire_flames_frames[] PROGMEM = {
fire_flames_frame_0,
fire_flames_frame_1,
fire_flames_frame_2,
fire_flames_frame_3,
fire_flames_frame_4,
fire_flames_frame_5,
fire_flames_frame_6,
fire_flames_frame_7,
};

60
gif2u8g2.py Normal file
View file

@ -0,0 +1,60 @@
import os
import sys
from PIL import Image, ImageSequence
def gif_to_xbm(gif_path, output_h_path, var_name, target_w=None, target_h=None):
im = Image.open(gif_path)
frames = []
for frame in ImageSequence.Iterator(im):
f = frame.convert('RGBA')
# Weißer Hintergrund für transparente GIFs
bg = Image.new('RGBA', f.size, (255, 255, 255))
f = Image.alpha_composite(bg, f).convert('1') # 1-Bit Schwarz/Weiß
if target_w and target_h:
f = f.resize((target_w, target_h), Image.Resampling.NEAREST)
frames.append(f)
w, h = frames[0].size
bytes_per_row = (w + 7) // 8
with open(output_h_path, 'w') as out:
out.write(f"#pragma once\n#include <Arduino.h>\n\n")
out.write(f"// Abmessungen: {w}x{h}, {len(frames)} Frames\n")
out.write(f"#define {var_name.upper()}_WIDTH {w}\n")
out.write(f"#define {var_name.upper()}_HEIGHT {h}\n")
out.write(f"#define {var_name.upper()}_FRAME_COUNT {len(frames)}\n\n")
# 1. Einzelne Frames als XBM-Arrays schreiben (LSB-first)
for idx, frame in enumerate(frames):
out.write(f"const unsigned char {var_name}_frame_{idx}[] PROGMEM = {{\n ")
pixels = frame.load()
byte_list = []
for y in range(h):
for byte_idx in range(bytes_per_row):
byte_val = 0
for bit in range(8):
x = byte_idx * 8 + bit
if x < w:
# 0 = Schwarz (Pixel an bei XBM), 1 = Weiß
if pixels[x, y] == 0:
byte_val |= (1 << bit)
byte_list.append(f"0x{byte_val:02X}")
out.write(", ".join(byte_list))
out.write("\n};\n\n")
# 2. Master-Array aller Frame-Pointer
out.write(f"const unsigned char* const {var_name}_frames[] PROGMEM = {{\n")
for idx in range(len(frames)):
out.write(f" {var_name}_frame_{idx},\n")
out.write("};\n")
print(f"Fertig! {len(frames)} Frames exportiert nach: {output_h_path}")
# Aufruf: Datei, Ausgabedatei, Arrayname, Breite, Höhe
if __name__ == "__main__":
gif_to_xbm("fire.gif", "fire_frames.h", "fire_flames", 21, 32)
gif_to_xbm("clock.gif", "clock_frames.h", "clock", 21, 21)

View file

@ -15,7 +15,8 @@ FastAccelStepper *stepper = NULL;
// ################ Variabeln ################ // ################ Variabeln ################
const uint32_t MAX_SPEED_HZ = 106000; const uint32_t MAX_SPEED_HZ = 106000;
const int32_t COLDTEMP_C = 50; const int32_t COLDTEMP_C = 70;
const int32_t MIKROSTEPS = 1600;
bool clickPlus = 0; bool clickPlus = 0;
bool clickMinus = 0; bool clickMinus = 0;
@ -52,7 +53,7 @@ SystemSettings settings;
// Überladung des Präfix-Operators (++timeEditStep) // Überladung des Präfix-Operators (++timeEditStep)
TimeEditStep& operator++(TimeEditStep& step) { TimeEditStep& operator++(TimeEditStep& step) {
step = (step == EDIT_END_MIN) ? EDIT_NONE : static_cast<TimeEditStep>(step + 1); step = (step == EDIT_SPEED) ? EDIT_NONE : static_cast<TimeEditStep>(step + 1);
return step; return step;
} }
@ -208,6 +209,51 @@ int getTempInC(uint8_t senTemp){
return ((milliVolt - 500)/10); return ((milliVolt - 500)/10);
} }
int getFilteredTemp(int rawSensorPin) {
constexpr uint8_t FILTER_SAMPLES = 10; // Puffergröße (10 Messwerte)
static int readings[FILTER_SAMPLES];
static uint8_t readIndex = 0;
static int32_t total = 0;
static int average = 0;
static bool initialized = false;
static uint32_t lastSampleTime = 0;
// Abtastrate: Alle 100 ms einen neuen Messwert erfassen
if (millis() - lastSampleTime >= 100 || !initialized) {
lastSampleTime = millis();
int rawVal = getTempInC(rawSensorPin); // Messwert in mV
// Kaltstart: Puffer beim ersten Aufruf vollflächig vorbefüllen
if (!initialized) {
for (uint8_t i = 0; i < FILTER_SAMPLES; i++) {
readings[i] = rawVal;
}
total = (int32_t)rawVal * FILTER_SAMPLES;
average = rawVal;
initialized = true;
return average;
}
// Ältesten Wert abziehen, neuen Wert einfügen und addieren
total -= readings[readIndex];
readings[readIndex] = rawVal;
total += rawVal;
// Index weiterschalten
readIndex = (readIndex + 1) % FILTER_SAMPLES;
// Ganzzahlige Division mit kaufmännischer Rundung (+ 5 bei 10 Werten)
if (total >= 0) {
average = (total + (FILTER_SAMPLES / 2)) / FILTER_SAMPLES;
} else {
average = (total - (FILTER_SAMPLES / 2)) / FILTER_SAMPLES;
}
}
return average;
}
// Liefert true wenn der Timer aktuell Active ist und false wenn nicht aktiv // Liefert true wenn der Timer aktuell Active ist und false wenn nicht aktiv
bool isTimerActiveNow(int curH, int curM, int startH, int startM, int endH, int endM) { bool isTimerActiveNow(int curH, int curM, int startH, int startM, int endH, int endM) {
int current = curH * 60 + curM; int current = curH * 60 + curM;
@ -243,6 +289,11 @@ void setting(){
case EDIT_END_MIN: case EDIT_END_MIN:
settings.endMin = (settings.endMin + 5) % 60; settings.endMin = (settings.endMin + 5) % 60;
break; break;
case EDIT_SPEED:
if(settings.autoSpeed < ((MAX_SPEED_HZ * 60)/MIKROSTEPS) - 50){
settings.autoSpeed += 50;
}
break;
default: break; default: break;
} }
} }
@ -262,6 +313,11 @@ void setting(){
case EDIT_END_MIN: case EDIT_END_MIN:
settings.endMin = (settings.endMin < 5) ? 55 : settings.endMin - 5; settings.endMin = (settings.endMin < 5) ? 55 : settings.endMin - 5;
break; break;
case EDIT_SPEED:
if(settings.autoSpeed >= 50){
settings.autoSpeed -= 50;
}
break;
default: break; default: break;
} }
} }
@ -291,6 +347,7 @@ if (settings.editMaxTemp) {
} }
if (clickStop) { if (clickStop) {
settings.coldTemp = settings.maxTemp - 20;
settings.editMaxTemp = false; settings.editMaxTemp = false;
} }
return; // Wichtig: Rest der Funktion überspringen, solange editiert wird! return; // Wichtig: Rest der Funktion überspringen, solange editiert wird!
@ -390,94 +447,143 @@ void loop() {
return; return;
} }
// Inputs // 1. Eingaben & Sensoren lesen
getInputs(clickPlus, clickMinus, clickStop, holdPlus, holdMinus, holdStop); getInputs(clickPlus, clickMinus, clickStop, holdPlus, holdMinus, holdStop);
curTemp = getTempInC(senTemp); curTemp = getFilteredTemp(senTemp);
// Discord nachricht // BEGREZUNG AUF EINE NACVHRICHT TODO // 2. Discord Überhitzungs-Alarm
if(curTemp >= settings.maxTemp && !send){ static bool send = false;
if (curTemp >= settings.maxTemp && !send) {
String message = "⚠️ **Kugelmuehle ueberhitzt!** Aktuelle Temp: " + String(curTemp) + " °C"; String message = "⚠️ **Kugelmuehle ueberhitzt!** Aktuelle Temp: " + String(curTemp) + " °C";
sendDiscordNotification(message); sendDiscordNotification(message);
send = true; send = true;
} else if (curTemp < settings.coldTemp) {
// Plus 5 als puffer
}else if(curTemp + 5 < settings.maxTemp){
send = false; send = false;
} }
// zeitschaltuhr prüfen // 3. Zeitschaltuhr & NTP prüfen
int curH, curM, curS; int curH, curM, curS;
if (settings.timerEnabled && getCurrentTime(curH, curM, curS)) { bool timeIsValid = getCurrentTime(curH, curM, curS);
if (settings.timerEnabled && timeIsValid) {
shouldRun = isTimerActiveNow(curH, curM, settings.startHour, settings.startMin, settings.endHour, settings.endMin); shouldRun = isTimerActiveNow(curH, curM, settings.startHour, settings.startMin, settings.endHour, settings.endMin);
} } else {
shouldRun = false;
// Not-Stopp aktivieren bei Überhitzung ODER Zeitschaltuhr aus
if(curTemp >= settings.maxTemp || (!shouldRun && settings.timerEnabled)){
autoStop = true;
// Entsperren NUR wenn abgekühlt UND Zeitschaltuhr aktiv
}else if(curTemp <= COLDTEMP_C && shouldRun){
autoStop = false;
} }
// Zeitschaltuhr start // 4. Schutz-Verriegelung (Überhitzung)
if(settings.timerEnabled && shouldRun){ static bool tempOverheat = false;
if (curTemp >= settings.maxTemp) {
// TODO tempOverheat = true;
// 1. Ziel-Geschwindigkeit vorgeben (z. B. 3200 Steps/s = 120 U/min bei 1/8 Schritt) } else if (curTemp <= settings.coldTemp) {
//stepper->setSpeedInHz(3200); tempOverheat = false;
// 2. Beschleunigungsrampe festlegen
//stepper->setAcceleration(settings.accelRate);
// 3. Dauerfahrt starten (beschleunigt automatisch bis zur Ziel-Geschwindigkeit)
// stepper->runForward(); // oder stepper->runBackward();
} }
// Main Control // 5. Menü aufrufen
if (holdStop && clickPlus) {
if(holdStop && clickPlus){
bSettings = true; bSettings = true;
} }
if(bSettings){ // HotKey Timer Toggeln
setting(); if (holdStop && clickMinus) {
}else if(clickStop){ if(settings.timerEnabled){
stopMove = true; settings.timerEnabled = false;
}else if(holdPlus){ }else{
speed = settings.accelRate; settings.timerEnabled = true;
}else if(holdMinus){ }
speed = -settings.accelRate;
}else{
speed = 0;
} }
// STOPP // Sperr-Flag, falls der Nutzer im aktiven Timer-Fenster bewusst Stopp gedrückt hat
if(stopMove || autoStop){ static bool manualTimerStopped = false;
// stopp befehl nur senden wenn sich der Motor bewegt if (!shouldRun) {
if (stepper->isRunning()) { manualTimerStopped = false; // Reset für den nächsten regulären Zeitzyklus
stepper->moveByAcceleration(10000, true); }
// 6. Betriebsmodi steuern
if (bSettings) {
setting();
}
// NOT-AUS BEI ÜBERHITZUNG
else if (tempOverheat) {
if (stepper->isRunning()) {
stepper->setAcceleration(10000);
stepper->applySpeedAcceleration();
stepper->stopMove();
lastSpeed = 0;
}
}
// AUTOMATIK-BETRIEB (Zeitschaltuhr)
else if (settings.timerEnabled) {
// Druch drücken von plus den Timer betrieb vortsetzen
if (manualTimerStopped && clickPlus) {
manualTimerStopped = false;
}
if (shouldRun && !manualTimerStopped) {
if (!stepper->isRunning()) {
uint32_t autoHz = ((uint32_t)settings.autoSpeed * MIKROSTEPS) / 60;
stepper->setSpeedInHz(autoHz);
stepper->setAcceleration(settings.accelRate);
stepper->runForward();
}
// Manuelles Anhalten im laufenden Timer erlauben
if (clickStop) {
manualTimerStopped = true;
stepper->setAcceleration(10000);
stepper->applySpeedAcceleration();
stepper->stopMove();
lastSpeed = 0;
}
} else {
// Außerhalb des Fensters oder manuell gestoppt
if (stepper->isRunning()) {
stepper->setAcceleration(10000);
stepper->applySpeedAcceleration();
stepper->stopMove();
lastSpeed = 0;
}
}
}
// MANUELLER BETRIEB (Zeitschaltuhr aus)
else {
static bool manualStopped = false;
if (clickStop) {
if (stepper->isRunning()) {
stepper->setAcceleration(10000);
stepper->applySpeedAcceleration(); // <-- macht die neue Rampe sofort wirksam
stepper->stopMove(); stepper->stopMove();
} }
// MOVE speed = 0;
}else if (speed != lastSpeed ) { lastSpeed = 0;
manualStopped = true;
} else if (manualStopped) {
if (!holdPlus && !holdMinus) {
manualStopped = false; // erst freigeben wenn Tasten los sind
}
speed = 0; // während Sperre: nichts tun
} else if (holdPlus) {
speed = settings.accelRate;
} else if (holdMinus) {
speed = -settings.accelRate;
} else {
speed = 0;
}
if (speed != lastSpeed) {
stepper->setSpeedInHz(MAX_SPEED_HZ);
stepper->setAcceleration(settings.accelRate);
stepper->moveByAcceleration(speed, true); stepper->moveByAcceleration(speed, true);
lastSpeed = speed; lastSpeed = speed;
} }
}
// Reset der Brems beschleunigung // 7. Geschwindigkeitsberechnung & UI
if (!stepper->isRunning()) { int32_t currentSpeed_HZ = (stepper->getCurrentSpeedInUs() == 0) ? 0 : (1000000 / stepper->getCurrentSpeedInUs());
stepper->setAcceleration(settings.accelRate); int32_t currentSpeed = (currentSpeed_HZ * 60) / MIKROSTEPS;
stopMove = false;
}
int32_t currentSpeed_HZ = stepper->getCurrentSpeedInUs() == 0 ? 0 : (1000000 / stepper->getCurrentSpeedInUs());
int32_t currentSpeed = (currentSpeed_HZ * 60)/1600;
bool timeIsValid = getCurrentTime(curH, curM, curS);
updateDisplay(bSettings, settings.settingIdx, timeEditStep, settings, currentSpeed, curH, curM, timeIsValid, curTemp); updateDisplay(bSettings, settings.settingIdx, timeEditStep, settings, currentSpeed, curH, curM, timeIsValid, curTemp);
// Status ausgabe auf Terminal
printStatus(stepper, speed, clickPlus, clickMinus); printStatus(stepper, speed, clickPlus, clickMinus);
} }

10
types.h
View file

@ -28,7 +28,8 @@ struct settingsALT{
int endMin = 0; int endMin = 0;
bool timerEnabled = false; bool timerEnabled = false;
bool editMaxTemp = false; bool editMaxTemp = false;
int16_t maxTemp = 70; //in °C int16_t maxTemp = 100; //in °C
int16_t coldTemp = 0;
bool editAcc = false; bool editAcc = false;
int32_t accelRate = 2000; // einheit int32_t accelRate = 2000; // einheit
}; };
@ -38,7 +39,8 @@ enum TimeEditStep {
EDIT_START_HOUR, // 1. Start-Stunde einstellen (0-23) EDIT_START_HOUR, // 1. Start-Stunde einstellen (0-23)
EDIT_START_MIN, // 2. Start-Minute einstellen (0-59) EDIT_START_MIN, // 2. Start-Minute einstellen (0-59)
EDIT_END_HOUR, // 3. End-Stunde einstellen (0-23) EDIT_END_HOUR, // 3. End-Stunde einstellen (0-23)
EDIT_END_MIN // 4. End-Minute einstellen (0-59) EDIT_END_MIN, // 4. End-Minute einstellen (0-59)
EDIT_SPEED
}; };
@ -52,9 +54,11 @@ struct SystemSettings {
int endMin = 0; int endMin = 0;
bool timerEnabled = false; bool timerEnabled = false;
bool editMaxTemp = false; bool editMaxTemp = false;
int16_t maxTemp = 70; //in °C int16_t maxTemp = 100; //in °C
int16_t coldTemp = 0;
bool editAcc = false; bool editAcc = false;
int32_t accelRate = 20000; int32_t accelRate = 20000;
int32_t autoSpeed = 100;
}; };