Оставьте задачу (issue) на github, как будет время - посмотрю
А вообще заниматься этим, не имея в железе, не самое интересное занятие. Можете своими силами попробовать, там довольно похоже на 7439 должно быть.
Код: Выделить всё
Virtual -87 -86 -85 -84 -83 -82 -81 -80 -79 -78 -77 -76 -75 -74 -73 ...
Vol 1 -63 -62 -61 -60 -59 -58 -57 -56 -63 -62 -61 -60 -59 -58 -57 ...
Vol 1 -24 -24 -24 -24 -24 -24 -24 -24 -16 -16 -16 -16 -16 -16 -16 ...Код: Выделить всё
uint8_t i;
uint8_t lcdBuf[16];
if (userSybmols != LCD_LEVELS) {
lcdGenLevels();
userSybmols = LCD_LEVELS;
}
for (i = 0; i < 16; i++) {
lcdBuf[i] = buf[2 * i] + buf[2 * i + 1];
lcdBuf[i] += buf[32 + 2 * i] + buf[32 + 2 * i + 1];
lcdBuf[i] >>= 2;
}
for (i = 0; i < 16; i++) {
ks0066SetXY(i, 0);
if (lcdBuf[i] < 8)
ks0066WriteData(0x20);
else
ks0066WriteData(lcdBuf[i] - 8);
ks0066SetXY(i, 1);
if (lcdBuf[i] < 8)
ks0066WriteData(lcdBuf[i]);
else
ks0066WriteData(0xFF);
}Код: Выделить всё
if (min + max) {
value = (int16_t)48 * (value - min) / (max - min);
...
} else {
value = (int16_t)23 * value / max;Код: Выделить всё
void tda7468SetBT(void)
{
uint8_t data;
int8_t val;
I2CStart(TDA7468_I2C_ADDR); // 0b10001000
I2CWriteByte(TDA7468_TR_BASS); // 0b00000101
val = sndPar[MODE_SND_BASS].value;
data = val > 0 ? 15 - val : 7 + val;
data <<= 4;
val = sndPar[MODE_SND_TREBLE].value;
data |= (val > 0 ? 15 - val : 7 + val);
I2CWriteByte(data);
I2CStop();
}