esp8266控制山水小功放
本帖最后由 zong0001 于 2022-4-24 15:29 编辑网上掏了个山水小功放,卖家说不出声就便宜出。到手后发现只有功放主机,需要控制程序才行。
音量音调控制芯片是PT2314,找了一片ESP8266,实际测了一下30针的引脚定义。
主要用到12v SCL SDA GND另外两路音源输入。
写了两天的程序,终于可以用了,用1602液晶显示信息,用一个旋转编码器调整音量等参数,把所有能用的功能都用上了。无线连接就是用了NTP的自动对时。
旋转编码器短按选择各个参数,长按待机。
static const String lcdInfo = {"Volume","Bass","Treble","Left","Right","Channel","Gain","Loudness","Serial"};
这个是主要函数。
void to_2314() {
uint8_t Volume = my_power;
switch (keyCount) {
case 0://音量
audioswitch.volume(64 - Volume); //音量*
if (Volume == 0) lcd1 += "Min";
else if (Volume >= 63)lcd1 += "Max";
else lcd1 += "-" + String((64 - Volume) * 1.25) + "dB";
break;
case 1:
audioswitch.bass(my_power);//低音0~15
lcd1 +=bassInfo] + "dB";
break;
case 2:
audioswitch.treble(my_power);//高音0~15
lcd1 +=bassInfo] + "dB";
break;
case 3:
//audioswitch.attenuation(L_R], L_R]);
audioswitch.attLR(0, 31 - my_power);
lcd1 +=LRdb(31 - my_power);
break;
case 4:
audioswitch.attLR(1, 31 - my_power);
lcd1 +=LRdb(31 - my_power);
break;
case 5:
// audioswitch.channel(my_power); // switch to channel 1... 0-3 => channel 1-4
lcd1 +=inputInfo];
my_power = channelInfo];
my_power = channelInfo];
// audioswitch.gain(my_power); break;
audioswitch.channelInfo(my_power, my_power, my_power);
break;
case 6:
lcd1 +=gainStr(my_power);
channelInfo] = my_power;
audioswitch.channelInfo(my_power, my_power, my_power);
break;
case 7:
if (my_power) {
// audioswitch.loudnessOff(); //
lcd1 +="On";
} else {
//audioswitch.loudnessOn(); //
lcd1 +="Off";
}
channelInfo] = my_power;
audioswitch.channelInfo(my_power, my_power, my_power);
break;
case 8:
if (my_power) {
lcd1 +="On";
} else {
lcd1 +="Off";
}
break;
}
lcd1 += " ";
}
库文件
本帖最后由 imhm 于 2022-4-24 20:18 编辑
厉害啊。。我这里正好有套带CD头,但是坏了的小山水印象。。。下面功放应该就是你这种。
PT2314 库不用设置I2C的管脚? 小白不懂啊。
imhm 发表于 2022-4-24 20:11
厉害啊。。我这里正好有套带CD头,但是坏了的小山水印象。。。下面功放应该就是你这种。
PT2314 库不用设置 ...
单片机的默认IIC引脚,328P是A4,A5,8266是D1,D2。我上面那个表里标注了 zong0001 发表于 2022-4-24 20:26
单片机的默认IIC引脚,328P是A4,A5,8266是D1,D2。我上面那个表里标注了
主控可以换ESP32,然后把蓝牙音频也做进去,这里有个用esp32+解码模块做蓝牙音频的帖子。 厉害啊,大神牛牛牛
页:
[1]