| Ваш IP: 3.235.29.190 | Online(59) - гости: 30, боты: 28 | Загрузка сервера: 0.49 ::::::::::::


Темброблок 5.1 на PT2323 и PT2322 (Arduino)

Темброблок состоит из двух микросхем PT2323 и PT2322, управление осуществляется при помощи Arduino Nano.

Плата Arduino Nano с аудиопроцессорами PT2323 и PT2322 обмениваются данными на шине I2C по линиям SDA (data — данные) и SCL (clock — синхронизация).

PT2323 представляет собой коммутатор аудио сигналов. Микросхема имеет 4-е стерео входа и один шести канальный вход формата 5.1. Стерео сигнал подаваемый на входы микросхемы преобразуется в аудио сигнал формата 5.1, а аудио сигнал формата 5.1 поступает на выход 5.1 без изменений.

PT2323 имеет следующие аудио выходы:

  • FR — правый канал фронт
  • FL — левый канал фронт
  • SR — правый канал тыл
  • SL — левый канал тыл
  • CT — центральный канал
  • SUB — канал сабвуфера

Параметры PT2323:

  • Напряжение питания 9 В (4,5 В минимальное)
  • КНИ при входном напряжении сигнала 0.2 Vrms не более 0,005 %
  • Отношение сигнал / шум 100 дБ
  • Максимальное входное напряжение 3,75 Vrms

PT2322 представляет собой регулятор 3-х полосной регулятор тембра и громкости, микросхема имеет 6 входов и 6 выходов (FR, FL, SR, SL, CT, SUB), по канальный аттенюатор, 3D — эффект.

Параметры PT2322:

  • Напряжение питания от 5 до 12 В (9 рекомендуемое)
  • Ток потребления 25…40 мА
  • Входное сопротивление 50 кОм
  • Разделение каналов 107 дБ
  • Отношение сигнал / шум 98 дБ
  • КНИ при входном напряжении сигнала 0.2 Vrms не более 0,005 %
  • Регулировка тембра ± 14 дБ с шагом 2 дБ
  • Регулировка громкости от -79 дБ до 0 дБ
  • Аттенюатор (не зависимый для каждого канала) от -15 дБ до 0 дБ

Библиотеки

PT2323.zip  https://github.com/liman324/PT2323.git

PT2322.zip  https://github.com/liman324/PT2322.git

 

Пример скетча показанный ниже позволяет управлять параметрами  PT2323 и PT2322 при помощи 4-х кнопок с выводом информации на LCD1602 (ЖК-дисплей на базе HD44780).

Управление параметрами темброблока достаточно простое, при помощи кнопки МЕНЮ можно выбрать регулируемый параметр и изменить его при помощи кнопок ПЛЮС и МИНУС, четвертая кнопка — выбор входа. Режим MUTE активируется одновременным нажатием кнопок ПЛЮС и МИНУС.

Все параметры заносятся в энергонезависимую память.

#include <Wire.h>
#include <PT2323.h>
#include <PT2322.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
 PT2323 pt0; 
 PT2322 pt1;
 LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
   byte a1[8]={0b00000,0b11011,0b11011,0b11011,0b11011,0b11011,0b11011,0b00000};
   byte a2[8]={0b00000,0b11000,0b11000,0b11000,0b11000,0b11000,0b11000,0b00000};
   unsigned long time;
   int menu,w,vol,vol_d,z,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
 
void setup() {
  Wire.begin();Serial.begin(9600);
  lcd.begin(16, 2);lcd.createChar(0,a1);lcd.createChar(1,a2);
  pinMode(A0,INPUT); // menu
  pinMode(A1,INPUT); // +
  pinMode(A2,INPUT); // -
  pinMode(A3,INPUT); // input
  vol = EEPROM.read(0);in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
  attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
  attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
  delay(500);
  audio1();audio2();
}
 
void loop() {
   if(analogRead(A0)>900&&mute!=1){menu++;cl();time=millis();w=1;if(menu>11){menu=0;}}// меню
 
/////////////////////////////// volume ///////////////////////////////////////////////
 if(menu==0){
   if(analogRead(A1)>900){vol++;w=1;if(vol>79){vol=79;}audio2();cl();time=millis();}// 79 максимальная громкость  
   if(analogRead(A2)>900){vol--;w=1;if(vol<0){vol=0;}audio2();cl();time=millis();}// 0 минимум громкости 
    lcd.setCursor(0,0);lcd.print("Volume   ");
    lcd.print(-79+vol);lcd.setCursor(13,0);lcd.print("dB");vol_d=vol/2-15;
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,1);lcd.write((uint8_t)0);}}
   if((vol_d)%2==0){lcd.setCursor(z/2,1);lcd.write((uint8_t)1);}
   lcd.setCursor(13,1);lcd.print(vol);lcd.print(" ");}
 /////////////////////////////////////////////////////////////////////////////////////
 
  /////////////////////// индикация тембр НЧ + управление кнопками -14...14 дБ ///////////////////
   if(menu==1){
   if(analogRead(A1)>900){bass++;w=1;if(bass>7){bass=7;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){bass--;w=1;if(bass<-7){bass=-7;}audio2();cl();time=millis();}
  lcd.setCursor(0,0);lcd.print("Bass      ");
  lcd.print(bass*2);lcd.setCursor(13,0);lcd.print("dB");bass_d=bass+7;
   if(bass_d>=0){for(z=0;z<=bass_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
   if((bass_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
 ////////////////////////////////////////////////////////////////////////////////////
 
   /////////////////////// индикация тембр CЧ + управление кнопками -14...14 дБ ///////////////////
   if(menu==2){
   if(analogRead(A1)>900){mid++;w=1;if(mid>7){mid=7;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){mid--;w=1;if(mid<-7){mid=-7;}audio2();cl();time=millis();}
  lcd.setCursor(0,0);lcd.print("Middle    ");
  lcd.print(mid*2);lcd.setCursor(13,0);lcd.print("dB");mid_d=mid+7;
   if(mid_d>=0){for(z=0;z<=mid_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
   if((mid_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
 ////////////////////////////////////////////////////////////////////////////////////
 
    /////////////////////// индикация тембр BЧ + управление кнопками -14...14 дБ ///////////////////
   if(menu==3){
   if(analogRead(A1)>900){treb++;w=1;if(treb>7){treb=7;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){treb--;w=1;if(treb<-7){treb=-7;}audio2();cl();time=millis();}
  lcd.setCursor(0,0);lcd.print("Treble    ");
  lcd.print(treb*2);lcd.setCursor(13,0);lcd.print("dB");treb_d=treb+7;
   if(treb_d>=0){for(z=0;z<=treb_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
   if((treb_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
 ////////////////////////////////////////////////////////////////////////////////////
 
//////////////////////////////////// rock pop classic //////////////////////      
  if(menu==4){
    if(analogRead(A1)>900){tembro++;w=1;if(tembro>4){tembro=0;}cl();time=millis();} 
    if(analogRead(A2)>900){tembro--;w=1;if(tembro<0){tembro=4;}cl();time=millis();}
    lcd.setCursor(0,0);lcd.print(" Preset timbre  ");
    if(tembro==0){lcd.setCursor(0,1);lcd.print("  manual mode  ");}
    if(tembro==1){lcd.setCursor(0,1);lcd.print("      ROCK     ");bass=4,mid=-2;treb=5;x=1;}
    if(tembro==2){lcd.setCursor(0,1);lcd.print("      POP      ");bass=-3,mid=3;treb=-2;x=1;}
    if(tembro==3){lcd.setCursor(0,1);lcd.print("    CLASSIC    ");bass=0,mid=0;treb=-2;x=1;}
    if(tembro==4){lcd.setCursor(0,1);lcd.print("    default    ");bass=0,mid=0;treb=0;x=1;}
    if(x==1){audio2();x=0;}
  }
////////////////////////////////////////////////////////////////////////////////
 
  /////////////////////// ATT FL ///////////////////
   if(menu==5){
   if(analogRead(A1)>900){attfl++;w=1;if(attfl>0){attfl=0;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){attfl--;w=1;if(attfl<-14){attfl=-14;}audio2();cl();time=millis();}
  lcd.setCursor(0,0);lcd.print("ATT FL   ");
  lcd.print(attfl);lcd.setCursor(13,0);lcd.print("dB");attfl_d=attfl+14;
   if(attfl_d>=0){for(z=0;z<=attfl_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
   if((attfl_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
 ////////////////////////////////////////////////////////////////////////////////////
 
   /////////////////////// ATT FR ///////////////////
   if(menu==6){
   if(analogRead(A1)>900){attfr++;w=1;if(attfr>0){attfr=0;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){attfr--;w=1;if(attfr<-14){attfr=-14;}audio2();cl();time=millis();}
  lcd.setCursor(0,0);lcd.print("ATT FR   ");
  lcd.print(attfr);lcd.setCursor(13,0);lcd.print("dB");attfr_d=attfr+14;
   if(attfr_d>=0){for(z=0;z<=attfr_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
   if((attfr_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
 ////////////////////////////////////////////////////////////////////////////////////
 
 /////////////////////// ATT TL ///////////////////
   if(menu==7){
   if(analogRead(A1)>900){atttl++;w=1;if(atttl>0){atttl=0;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){atttl--;w=1;if(atttl<-14){atttl=-14;}audio2();cl();time=millis();}
  lcd.setCursor(0,0);lcd.print("ATT TL   ");
  lcd.print(atttl);lcd.setCursor(13,0);lcd.print("dB");atttl_d=atttl+14;
   if(atttl_d>=0){for(z=0;z<=atttl_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
   if((atttl_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
 ////////////////////////////////////////////////////////////////////////////////////
 
 
 /////////////////////// ATT TR ///////////////////
   if(menu==8){
   if(analogRead(A1)>900){atttr++;w=1;if(atttr>0){atttr=0;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){atttr--;w=1;if(atttr<-14){atttr=-14;}audio2();cl();time=millis();}
  lcd.setCursor(0,0);lcd.print("ATT TR   ");
  lcd.print(atttr);lcd.setCursor(13,0);lcd.print("dB");atttr_d=atttr+14;
   if(atttr_d>=0){for(z=0;z<=atttr_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
   if((atttr_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
 ////////////////////////////////////////////////////////////////////////////////////
 
  /////////////////////// ATT CN ///////////////////
   if(menu==9){
   if(analogRead(A1)>900){attcn++;w=1;if(attcn>0){attcn=0;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){attcn--;w=1;if(attcn<-14){attcn=-14;}audio2();cl();time=millis();}
  lcd.setCursor(0,0);lcd.print("ATT CN   ");
  lcd.print(attcn);lcd.setCursor(13,0);lcd.print("dB");attcn_d=attcn+14;
   if(attcn_d>=0){for(z=0;z<=attcn_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
   if((attcn_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
 ////////////////////////////////////////////////////////////////////////////////////
 
   /////////////////////// ATT SUB ///////////////////
   if(menu==10){
   if(analogRead(A1)>900){attsub++;w=1;if(attsub>0){attsub=0;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){attsub--;w=1;if(attsub<-14){attsub=-14;}audio2();cl();time=millis();}
  lcd.setCursor(0,0);lcd.print("ATT SUB  ");
  lcd.print(attsub);lcd.setCursor(13,0);lcd.print("dB");attsub_d=attsub+14;
   if(attsub_d>=0){for(z=0;z<=attsub_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
   if((attsub_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
 ////////////////////////////////////////////////////////////////////////////////////
 
 //////////////////////////// 3d ///////////////////////////////////////////////
 if(menu==11){
   if(analogRead(A1)>900){ddd++;w=1;if(ddd>1){ddd=0;}audio2();cl();time=millis();} 
   if(analogRead(A2)>900){ddd--;w=1;if(ddd<0){ddd=1;}audio2();cl();time=millis();}
   lcd.setCursor(0,0); if(ddd==0){lcd.print("     3D  ON  ");}else{lcd.print("     3D  OFF  ");}
 }
 
 ////////////////////////////////////////////////////////////////////////////////
  if(analogRead(A3)>900){in++;if(in>4){in=0;}audio1();cl();lcd.setCursor(0,0);lcd.print("    INPUT  ");lcd.print(in+1);delay(2000);time=millis();w=1;}// in
//  if(analogRead(A3)>900){in++;if(in>5){in=0;}audio1();cl();lcd.setCursor(0,0);lcd.print(" INPUT ");lcd.print(in+1);delay(2000);time=millis();w=1;}// если in = 5 то включен шести канальный вход 
//////////// mute ////////////////////////
  if(mute==1&&(analogRead(A1)>900||analogRead(A2)>900)){mute=0;menu=0;audio1();cl();}  
  if(analogRead(A1)>900&&analogRead(A2)>900){mute=1;menu=100;audio1();cl();}
  if(mute==1){lcd.setCursor(0,0);lcd.print("      MUTE      ");delay(300);}
 
 
 
///////////////////////////////eeprom//////////////////////////////////////////////// 
  if(millis()-time>10000&& w==1&&mute==0){
     EEPROM.update(0,vol);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
     EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
     EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
     menu=0;w=0;cl();}
/////////////////////////////////////////////////////////////////////////////////////
}// loop
 
 
void cl(){delay(300);lcd.clear();}
void audio1(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,mute); 
  pt0.setFeature(1,1); 
}
 
void audio2(){
  pt1.setFront_lk_att(abs(attfl));// att front L
  pt1.setFront_rk_att(abs(attfr));// att front R
  pt1.setCenter_att(abs(attcn));  // att center
  pt1.setRear_lk_att(abs(atttl)); // att rear L
  pt1.setRear_rk_att(abs(atttr)); // att rear R
  pt1.setSub_att(abs(attsub));     // att sub
  pt1.setFunc(0,ddd,0); // mute,3d,тембр on/off
  pt1.setBass(bass);            // BASS    -14...0...14 dB (int -7...0...7)
  pt1.setMiddle(mid);          // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt1.setTreble(treb);          // TREBLE  -14...0...14 dB (int -7...0...7)
  pt1.setVol(vol); // 0...79
}

  • ir.ino.zip — ИК пульт (пример скетча)

  • pt2323_pt2322_IR_Enc.zip (скетч протестирован) — энкодер, кнопки IN и MUTE, ИК — пульт дублирующий полностью энкодер и кнопку IN (видео работы скетча показано ниже)

В мониторе порта можно получить коды кнопок Вашего пульта.

Для нормальной работы скетча необходимо скачать дополнительные библиотеки:

IRremote.zip — библиотека изменена

MsTimer2.ZIP

Encoder.zip

Комментарии

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • УСИЛИТЕЛЬ НЧ НА ТРЕХ ТРАНЗИСТОРАХ

    УСИЛИТЕЛЬ НЧ НА ТРЕХ ТРАНЗИСТОРАХ

    На рис. показана схема простейшего усилителя НЧ, в котором можно использовать источник питания напряжением 4,5 или 9 В. При сопротивлении нагрузки 10 Ом и напряжении питания 4,5 В номинальная выходная мощность равна 70…80 мВт, а при повышении напряжения до 9 В 120… 150 мВт. В усилителе применены германиевые маломощные низкочастотные …Подробнее...
  • Широкополосный усилитель (40МГц)

    Чувствительность приемника может быть значительно увеличена, если вставить между ним и антенной, усилитель. Схема усилителя не использует резонансных цепей и подходит как для средних и коротких волн до 40 МГц. Можно получить усиление порядка 20dB при токе потребления 7mA, Напряжение питания усилителя с 12 до 15В. Вход и выход адаптированы …Подробнее...
  • Псевдо стереофоническая приставка

    На рис. показана принципиальная схема псевдостереоприставки, сдвигающей фазу сигнала на 90° в интервале частот от 50 Гц до 5 кГц. Ее основой является ступень с разделенной нагрузкой на транзисторе Т1. Как известно, выходные сигналы такой ступени, снятые с эмиттера и коллектора, оказываются равными по напряжению, но противоположными по фазе, т. …Подробнее...
  • Восьми тональная сирена

    Особенность этого варианта сирены в том, что с изменением тона меняется длительность звучания этого участка. Если тон участка выше то время звучания будет меньше и наоборот. В данной схеме есть свои особенности — дело в том что для тактового опроса мультиплексора, переключающего частоту выходного сигнала служит один мультивибратор на D1. …Подробнее...
  • Схема проверки операционных усилителей

    При налаживании различных схем с применением операционных усилителей (ОУ) возникает необходимость предварительно, до установки на плату, проверить ОУ на работоспособность по принципу годен.негоден. Как видно из схемы, приведенной на рис.1, проверяемый ОУ включен повторителем напряжения, на неинвертирующий вход которого с выхода усилителя подается напряжение через трехзвенный цепочечный RC-четырехполюсник с нулевым …Подробнее...