38 lines
982 B
C++
38 lines
982 B
C++
#include "sseg.h"
|
|
|
|
static const char *TAG = "sseg_driver";
|
|
|
|
void init_sseg() {
|
|
sseg = new TM1640(SSEG_PIN_DATA, SSEG_PIN_CLK, 8);
|
|
}
|
|
|
|
void set_game_sseg_raw(uint8_t* digits) {
|
|
sseg->setSegments(0, digits[0]);
|
|
sseg->setSegments(1, digits[1]);
|
|
sseg->setSegments(2, digits[2]);
|
|
sseg->setSegments(3, digits[3]);
|
|
}
|
|
|
|
void set_module_sseg_raw(uint8_t* digits) {
|
|
sseg->setSegments(4, digits[0]);
|
|
sseg->setSegments(5, digits[1]);
|
|
sseg->setSegments(6, digits[2]);
|
|
sseg->setSegments(7, digits[3]);
|
|
}
|
|
|
|
void set_game_sseg_num(unsigned int value, int 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(unsigned int value, int 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;
|
|
}
|
|
}
|