esp8266控制山水小功放-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1100|回复: 4

esp8266控制山水小功放

[复制链接]
发表于 2022-4-24 15:27 | 显示全部楼层 |阅读模式
本帖最后由 zong0001 于 2022-4-24 15:29 编辑

网上掏了个山水小功放,卖家说不出声就便宜出。到手后发现只有功放主机,需要控制程序才行。
20220413_103623.jpg
音量音调控制芯片是PT2314,找了一片ESP8266,实际测了一下30针的引脚定义。
微信图片_20220424152919.png
主要用到12v SCL SDA GND  另外两路音源输入。
20220424_150237.jpg
写了两天的程序,终于可以用了,用1602液晶显示信息,用一个旋转编码器调整音量等参数,把所有能用的功能都用上了。无线连接就是用了NTP的自动对时。
20220424_150602.jpg
旋转编码器短按选择各个参数,长按待机。
static const String lcdInfo[menuNum] = {"Volume","Bass","Treble","Left","Right","Channel","Gain","Loudness","Serial"};
这个是主要函数。
  1. void to_2314() {
  2.   uint8_t Volume = my_power[0];
  3.   switch (keyCount) {
  4.     case 0:  //音量
  5.       audioswitch.volume(64 - Volume); //音量*
  6.       if (Volume == 0)    lcd1 += "Min";
  7.       else if (Volume >= 63)  lcd1 += "Max";
  8.       else lcd1 += "-" + String((64 - Volume) * 1.25) + "dB";
  9.       break;
  10.     case 1:
  11.       audioswitch.bass(my_power[1]);  //低音  0~15
  12.       lcd1 +=  bassInfo[my_power[1]] + "dB";
  13.       break;
  14.     case 2:
  15.       audioswitch.treble(my_power[2]);  //高音  0~15
  16.       lcd1 +=  bassInfo[my_power[2]] + "dB";
  17.       break;
  18.     case 3:
  19.       //audioswitch.attenuation(L_R[my_power[3]][1], L_R[my_power[3]][0]);
  20.       audioswitch.attLR(0, 31 - my_power[3]);
  21.       lcd1 +=  LRdb(31 - my_power[3]);
  22.       break;
  23.     case 4:
  24.        audioswitch.attLR(1, 31 - my_power[4]);
  25.       lcd1 +=  LRdb(31 - my_power[4]);
  26.       break;
  27.     case 5:
  28.       // audioswitch.channel(my_power[5]);   // switch to channel 1... 0-3 => channel 1-4
  29.       lcd1 +=  inputInfo[my_power[5]];
  30.       my_power[6] = channelInfo[my_power[5]][0];
  31.       my_power[7] = channelInfo[my_power[5]][1];
  32.       //      audioswitch.gain(my_power[6]);      break;
  33.      audioswitch.channelInfo(my_power[5], my_power[6], my_power[7]);
  34.       break;
  35.     case 6:
  36.        lcd1 +=  gainStr(my_power[6]);
  37.       channelInfo[my_power[5]][0] = my_power[6];
  38.       audioswitch.channelInfo(my_power[5], my_power[6], my_power[7]);
  39.       break;
  40.     case 7:
  41.       if (my_power[7]) {
  42.         // audioswitch.loudnessOff();   //
  43.         lcd1 +=  "On";
  44.       } else {
  45.         //  audioswitch.loudnessOn();   //
  46.         lcd1 +=  "Off";
  47.       }
  48.       channelInfo[my_power[5]][1] = my_power[7];
  49.       audioswitch.channelInfo(my_power[5], my_power[6], my_power[7]);
  50.       break;
  51.     case 8:
  52.       if (my_power[8]) {
  53.         lcd1 +=  "On";
  54.       } else {
  55.         lcd1 +=  "Off";
  56.       }
  57.       break;
  58.   }
  59.   lcd1 += "          ";
  60. }
复制代码



库文件
PT2314-master.zip (4.77 KB, 下载次数: 5)
20220412_193424.jpg
发表于 2022-4-24 20:11 | 显示全部楼层
本帖最后由 imhm 于 2022-4-24 20:18 编辑

厉害啊。。我这里正好有套带CD头,但是坏了的小山水印象。。。下面功放应该就是你这种。
PT2314 库不用设置I2C的管脚? 小白不懂啊。


 楼主| 发表于 2022-4-24 20:26 | 显示全部楼层
imhm 发表于 2022-4-24 20:11
厉害啊。。我这里正好有套带CD头,但是坏了的小山水印象。。。下面功放应该就是你这种。
PT2314 库不用设置 ...

单片机的默认IIC引脚,328P是A4,A5,8266是D1,D2。我上面那个表里标注了
发表于 2022-4-25 09:33 | 显示全部楼层
zong0001 发表于 2022-4-24 20:26
单片机的默认IIC引脚,328P是A4,A5,8266是D1,D2。我上面那个表里标注了

主控可以换ESP32,然后把蓝牙音频也做进去,这里有个用esp32+解码模块做蓝牙音频的帖子。
发表于 2022-6-6 14:10 | 显示全部楼层
厉害啊,大神牛牛牛
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 08:32 , Processed in 0.076754 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表