Remove 3rd letter of weekday, right justify the date (flush with seconds) master
authorNick Downing <nick@ndcode.org>
Thu, 24 Mar 2022 15:46:49 +0000 (02:46 +1100)
committerNick Downing <nick@ndcode.org>
Thu, 24 Mar 2022 15:50:46 +0000 (02:50 +1100)
examples/board_clock_7seg/atmega168_clock_7seg.c
examples/board_clock_7seg/clock_7seg.c

index 04b0a11..d25dd54 100644 (file)
@@ -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 (
index be8b6d5..66620fd 100644 (file)
@@ -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];