                 write_bytes(numbers_24x16[line] + (16 * ((*(clock + i)) - '0')), 16);
                 write_byte(0x00, 1);
             }
+        write_byte(0x00, 4);
     }
 }
 

    pcd8544_set_is_data();
}

void pcd8544_place_cursor(uint8_t column, uint8_t line) {
    if (line >= PCD8544_LINES)
        line %= PCD8544_LINES;
    if (column >= PCD8544_COLS)
        column %= PCD8544_COLS;
    // Yes, x is pixel addressed, y is line addressed This makes sense because
    // we write 8 pixels at a time.
    current_col = column;
    current_line = line;
    pcd8544_set_is_command();
    SPI.transfer(PCD8544_SET_X_ADDRESS | (current_col * 6));
    SPI.transfer(PCD8544_SET_LINE_ADDRESS | current_line);
    pcd8544_set_is_data();
}

static inline void write_bytes(const uint8_t * data, size_t count) {

#define pcd8544_set_is_data() digitalWrite(PCD8544_PIN_DC, 1)
#define pcd8544_set_is_command() digitalWrite(PCD8544_PIN_DC, 0)

static uint8_t current_x = 0;
static uint8_t current_line = 0;

static inline void inc_x(uint8_t count) {
    current_x += count;
    if (current_x >= PCD8544_WIDTH) {
        current_line += current_x / PCD8544_WIDTH;
        current_x %= PCD8544_WIDTH;
        if (current_line >= PCD8544_LINES)
            current_line %= PCD8544_LINES;
    }
}

static inline void inc_col(void) {
    inc_x(6);
}

void pcd8544_init(void) {
