From a688acb71f5dcf228fa71adb597a50322589634f Mon Sep 17 00:00:00 2001 From: Nick Downing Date: Fri, 25 Mar 2022 02:46:49 +1100 Subject: [PATCH] Remove 3rd letter of weekday, right justify the date (flush with seconds) --- .../board_clock_7seg/atmega168_clock_7seg.c | 6 +++--- examples/board_clock_7seg/clock_7seg.c | 21 ++++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/examples/board_clock_7seg/atmega168_clock_7seg.c b/examples/board_clock_7seg/atmega168_clock_7seg.c index 04b0a11..d25dd54 100644 --- a/examples/board_clock_7seg/atmega168_clock_7seg.c +++ b/examples/board_clock_7seg/atmega168_clock_7seg.c @@ -32,7 +32,7 @@ AVR_MCU(F_CPU, "atmega168"); #define N_DIGIT 14 -#define N_ALPHA 3 +#define N_ALPHA 2 #define N_BYTES (N_DIGIT + N_ALPHA * 3) #define DIGIT_SEG_DP 0b10000000 #define ALPHA_SEG_DP 0b10000000000000000L @@ -158,7 +158,7 @@ const uint8_t month_weekday[12] = { (31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31) % 7, // Nov (31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30) % 7, // Dec }; -uint8_t decimal[D_MAX] = {0, 0, 0, 0, 0, 0}; +uint8_t decimal[D_MAX] = {31, 48, 2, 24, 2, 22}; //{0, 0, 0, 0, 0, 0}; uint8_t decimalChanged = 0; uint8_t keyState;// = 0x7; @@ -209,7 +209,7 @@ uint8_t dayMax(uint8_t month, uint8_t year) { uint8_t weekDay(uint8_t day, uint8_t month, uint8_t year) { uint8_t y0 = year & 3; - year >>= 3; + year >>= 2; uint8_t y1 = year % 25; year /= 25; return ( diff --git a/examples/board_clock_7seg/clock_7seg.c b/examples/board_clock_7seg/clock_7seg.c index be8b6d5..66620fd 100644 --- a/examples/board_clock_7seg/clock_7seg.c +++ b/examples/board_clock_7seg/clock_7seg.c @@ -43,7 +43,7 @@ #include "hc595.h" #define N_DIGIT 14 -#define N_ALPHA 3 +#define N_ALPHA 2 #define N_BYTES (N_DIGIT + N_ALPHA * 3) #define ORIGIN_X 50.f #define ORIGIN_Y 50.f @@ -52,8 +52,8 @@ #define LINE_HEIGHT 525.f #define COLON_X (ORIGIN_X + 2.f * DIGIT_WIDTH) #define COLON_Y (ORIGIN_Y + .6f * LINE_HEIGHT) -//#define WINDOW_X (ORIGIN_X + 5.f * DIGIT_WIDTH + 1.5f * COLON_WIDTH) -#define WINDOW_X (ORIGIN_X + 5.5f * DIGIT_WIDTH + .5f * COLON_WIDTH) +#define WINDOW_X (ORIGIN_X + 5.f * DIGIT_WIDTH + 1.5f * COLON_WIDTH) +//#define WINDOW_X (ORIGIN_X + 5.5f * DIGIT_WIDTH + .5f * COLON_WIDTH) #define WINDOW_Y (ORIGIN_Y + 1.5f * LINE_HEIGHT) #define DIGIT_SEG_DP 0x80 @@ -81,6 +81,16 @@ const float digit_pos[N_DIGIT][3] = { {ORIGIN_X + 4.f * DIGIT_WIDTH + 1.5f * COLON_WIDTH, ORIGIN_Y + .6f * LINE_HEIGHT, .5f}, {ORIGIN_X + 4.5f * DIGIT_WIDTH + 1.5f * COLON_WIDTH, ORIGIN_Y + .6f * LINE_HEIGHT, .5f}, // second row +#if 1 + {WINDOW_X - 4.f * DIGIT_WIDTH, ORIGIN_Y, .5f}, + {WINDOW_X - 3.5f * DIGIT_WIDTH, ORIGIN_Y, .5f}, + {WINDOW_X - 3.f * DIGIT_WIDTH, ORIGIN_Y, .5f}, + {WINDOW_X - 2.5f * DIGIT_WIDTH, ORIGIN_Y, .5f}, + {WINDOW_X - 2.f * DIGIT_WIDTH, ORIGIN_Y, .5f}, + {WINDOW_X - 1.5f * DIGIT_WIDTH, ORIGIN_Y, .5f}, + {WINDOW_X - DIGIT_WIDTH, ORIGIN_Y, .5f}, + {WINDOW_X - .5f * DIGIT_WIDTH, ORIGIN_Y, .5f}, +#else {ORIGIN_X + 1.5f * DIGIT_WIDTH + .5f * COLON_WIDTH, ORIGIN_Y, .5f}, {ORIGIN_X + 2.f * DIGIT_WIDTH + .5f * COLON_WIDTH, ORIGIN_Y, .5f}, {ORIGIN_X + 2.5f * DIGIT_WIDTH + .5f * COLON_WIDTH, ORIGIN_Y, .5f}, @@ -89,13 +99,14 @@ const float digit_pos[N_DIGIT][3] = { {ORIGIN_X + 4.f * DIGIT_WIDTH + .5f * COLON_WIDTH, ORIGIN_Y, .5f}, {ORIGIN_X + 4.5f * DIGIT_WIDTH + .5f * COLON_WIDTH, ORIGIN_Y, .5f}, {ORIGIN_X + 5.f * DIGIT_WIDTH + .5f * COLON_WIDTH, ORIGIN_Y, .5f}, +#endif }; const float alpha_pos[N_ALPHA][3] = { // second row {ORIGIN_X, ORIGIN_Y, .5f}, {ORIGIN_X + .5f * DIGIT_WIDTH, ORIGIN_Y, .5f}, - {ORIGIN_X + 1.f * DIGIT_WIDTH, ORIGIN_Y, .5f}, + //{ORIGIN_X + 1.f * DIGIT_WIDTH, ORIGIN_Y, .5f}, }; int display_flag = 0; @@ -180,7 +191,7 @@ void displayCB(void) /* function called whenever redisplay needed */ for (int di = 0; di < N_ALPHA; di++) { bits = (uint32_t)display_data[N_DIGIT + di * 3] | - ((uint32_t)display_data[N_DIGIT + di * 3 + 1] << 8) + + ((uint32_t)display_data[N_DIGIT + di * 3 + 1] << 8) | ((uint32_t)display_data[N_DIGIT + di * 3 + 2] << 16); float x = alpha_pos[di][0]; -- 2.34.1