blk_box_tc/main/drivers/sseg.cpp

45 lines
1.1 KiB
C++

#include "sseg.h"
#include "esp_log.h"
TM1640* sseg = nullptr;
static const char *TAG = "sseg";
void init_sseg() {
ESP_LOGI(TAG, "Initializing sseg...");
sseg = new TM1640(SSEG_PIN_DATA, SSEG_PIN_CLK, 8);
ESP_LOGI(TAG, "Sseg initialized!");
}
void set_game_sseg_raw(const uint8_t* digits) {
sseg->setSegments(digits[0], 0);
sseg->setSegments(digits[1], 1);
sseg->setSegments(digits[2], 2);
sseg->setSegments(digits[3], 3);
}
void set_module_sseg_raw(const uint8_t* digits) {
sseg->setSegments(digits[0], 4);
sseg->setSegments(digits[1], 5);
sseg->setSegments(digits[2], 6);
sseg->setSegments(digits[3], 7);
}
void set_game_sseg_num(uint32_t value, uint8_t dot_pos) {
for (int i = 0; i < 4; i++) {
auto idx = value % 10;
sseg->sendChar(3-i, TM16XX_NUMBER_FONT[idx], i == dot_pos);
value = value / 10;
}
}
void set_module_sseg_num(uint32_t value, uint8_t dot_pos) {
for (int i = 0; i < 4; i++) {
auto idx = value % 10;
sseg->sendChar(7-i, TM16XX_NUMBER_FONT[idx], i == dot_pos);
value = value / 10;
}
}