1

Тема: PT2313 + энкодер + ИК пульт + анализатор спектра

Скетч протестирован!!!

http://rcl-radio.ru/?p=57332

Данный контент доступен только зарегистрированным пользователям.

Анализатор спектра активируется после 10 секунд не активности органов управления. Аналоговый сигнал (с линейного выхода) необходимо подать на вход А0 через разделительный конденсатор 0,1 мкФ.


Библиотеки:

Данный контент доступен только зарегистрированным пользователям. - библиотека изменена, удалите старую библиотеку если она была установлена и установите измененную библиотеку.
http://rcl-radio.ru/wp-content/uploads/ … Timer2.zip
http://rcl-radio.ru/wp-content/uploads/ … ncoder.zip
http://rcl-radio.ru/wp-content/uploads/ … remote.zip
http://rcl-radio.ru/wp-content/uploads/2018/11/FHT.zip

#define AUTO_GAIN 1       // автонастройка по громкости
#define VOL_THR 35        // порог тишины (ниже него отображения на матрице не будет)
#define LOW_PASS 30       // нижний порог чувствительности шумов (нет скачков при отсутствии звука)
#define DEF_GAIN 80       // максимальный порог по умолчанию 
#define FHT_N 256         // ширина спектра х2
#define LOG_OUT 1
#include <FHT.h> 
#include <Wire.h>
#include <PT2313.h>
#include <LiquidCrystal.h>
#include <Encoder.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
#include <EEPROM.h>
  LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7
  PT2313 audioChip;
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  Encoder myEnc(9, 8);//CLK, DT
  decode_results ir;
 byte posOffset[16] = {2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}; // вч выше
 byte menu,in,w,w2,gr1,gr2,www,z,z0,z1;
 int vol,vol_d,bass,bass_d,treb,treb_d,balans,gain,gain0,gain1,gain2;
 unsigned long time,oldPosition  = -999,newPosition;
 unsigned long gainTimer;
 byte maxValue, maxValue_f,spek;
 float k = 0.1;
 byte gain_sp = DEF_GAIN;  
 int i1,yyy;

 
void setup(){
  Serial.begin(9600);Wire.begin(); lcd.begin(16, 2);irrecv.enableIRIn(); // запускаем модуль IR
  audioChip.initialize(0,true);
  pinMode(10,INPUT);// МЕНЮ КНОПКА SW энкодера
  pinMode(11,INPUT);// ВЫБОР ВХОДА КНОПКА IN
  ADMUX  = 0b01100000; ADCSRA = 0b11010100; // http://rcl-radio.ru/?p=57478
  MsTimer2::set(3, to_Timer);MsTimer2::start(); // АКТИВИРУЕМ ПРЕРЫВАНИЯ ДЛЯ ЭНКОДЕРА
  vol = EEPROM.read(0);// vol eeprom 
  bass = EEPROM.read(1)-7;// bass eeprom
  treb = EEPROM.read(3)-7;// treb eeprom
  balans = EEPROM.read(4)-4;// balans eeprom
  in = EEPROM.read(5);// in eeprom
  gain0 = EEPROM.read(6);
  gain1 = EEPROM.read(7);
  gain2 = EEPROM.read(8);
  audio();
}
void loop(){
      if (newPosition != oldPosition) {if(spek==1){cl();menu=0;}}
  if(spek==0){
      byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
      byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
      byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
      lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
    }else{
      byte v1[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b01110};
      byte v2[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b01110, 0b01110};
      byte v3[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b01110, 0b01110, 0b01110};
      byte v4[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b01110, 0b01110, 0b01110, 0b01110};
      byte v5[8] = {0b00000, 0b00000, 0b00000, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110};
      byte v6[8] = {0b00000, 0b00000, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110};
      byte v7[8] = {0b00000, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110};
      byte v8[8] = {0b01110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110, 0b01110};
      lcd.createChar(0, v1);lcd.createChar(1, v2);lcd.createChar(2, v3);lcd.createChar(3, v4);lcd.createChar(4, v5);lcd.createChar(5, v6);lcd.createChar(6, v7);lcd.createChar(7, v8);
      }
  ///////////////////// управление ////////////////////////////////////////////////////
   if(digitalRead(10)==LOW){menu++;cl();;time=millis();w=1;w2=1;if(menu>4){menu=0;}}// меню
   if(digitalRead(11)==HIGH){in++;;cl();time=millis()-7000;w=1;w2=1;www=1;menu=4;if(in>2){in=0;};audio();}// КНОПКА ВЫБОРА ВХОДА IN

   ////////////////// ИК приемник - обработка кодов кнопок ///////////////////////////////////////
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();time=millis();w=1;if(spek==1){menu=0;cl();}}// IR приемник - чтение, в мониторе порта отображаются коды кнопок

  if(ir.value==0x2FDD02F){menu++;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;if(menu>4){menu=0;}}// меню кнопка вверх
  if(ir.value==0x2FD32CD){menu--;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;if(menu<0){menu=4;}}// меню кнопка вниз
  
  if(ir.value==0x2FD708F){in++;cl();time=millis()-7000;w=1;w2=1;www=1;menu=4;if(in>1){in=0;};gr1=0;gr2=0;audio();}// IN
  
 /////////////////////// VOLUME //////////////
   if(menu==0){
     if(ir.value==0x2FD906F){vol++;gr1=1;gr2=0;cl();w2=1;vol_func();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();w2=1;vol_func();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){vol--;gr1=0;gr2=1;cl();w2=1;vol_func();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();w2=1;vol_func();audio();}// кнопка <<<<<<
    
     if (newPosition != oldPosition){oldPosition = newPosition;
     vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;vol_func();audio();} 
     lcd.setCursor(0,0);lcd.print("Volume  ");
     lcd.print(" ");lcd.print(-62+vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol-14;
   if(w2==1){
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w2=0;}}
 
  ///////////////////  BASS  //////////////
   if(menu==1){
     if(ir.value==0x2FD906F){bass++;gr1=1;gr2=0;cl();w2=1;bass_func();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl();w2=1;bass_func();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){bass--;gr1=0;gr2=1;cl();w2=1;bass_func();audio();}// кнопка < 
     if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl();w2=1;bass_func();audio();}// кнопка <<<<<<  
    
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;bass_func();audio();} 
   lcd.setCursor(0,0);lcd.print("Bass    ");
   lcd.print(" ");lcd.print(bass*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");bass_d=bass*2+15;
   if(w2==1){
   for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}w2=0;}}
 
  ///////////////// TREBLE //////////////////
   if(menu==2){
     if(ir.value==0x2FD906F){treb++;gr1=1;gr2=0;cl();w2=1;treb_func();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl();w2=1;treb_func();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){treb--;gr1=0;gr2=1;cl();w2=1;treb_func();audio();}// кнопка < 
     if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl();w2=1;treb_func();audio();}// кнопка <<<<<<
    
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;treb_func();audio();} 
   lcd.setCursor(0,0);lcd.print("Treble  ");
   lcd.print(" ");lcd.print(treb*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");treb_d=treb*2+15;
   if(w2==1){
   for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}w2=0;}}
 
  //////////////// BALANSE  +\- 4 dB /////////////
   if(menu==3){
     if(ir.value==0x2FD906F){balans++;gr1=1;gr2=0;cl();balans_func();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){balans++;gr2=0;cl();balans_func();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){balans--;gr1=0;gr2=1;cl();balans_func();audio();}// кнопка < 
     if(ir.value==0xFFFFFFFF and gr2==1){balans--;gr1=0;cl();balans_func();audio();}// кнопка <<<<<<
    
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    balans=balans+newPosition;myEnc.write(0);newPosition=0;lcd.clear();time=millis();w=1;balans_func();audio();}
  lcd.setCursor(0,0);
   if(balans>=0){lcd.print("-");}else{lcd.print("+");}
  lcd.print(abs(balans));lcd.print(" dB ");
  if(balans==0){lcd.print(" <>  ");}
  if(balans<0){lcd.print(" <   ");}
  if(balans>0){lcd.print("  >  ");}
   if(balans>=0){lcd.print("+");}else{lcd.print("-");}
  lcd.print(abs(balans));lcd.print(" dB ");
  lcd.setCursor(0,1);lcd.print("L");
  lcd.setCursor(15,1);lcd.print("R");
   if(balans<0){lcd.setCursor(balans+7,1);lcd.write((uint8_t)0);}
   if(balans>0){lcd.setCursor(balans+8,1);lcd.write((uint8_t)0);}
   if(balans==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}}
 
 /////////////////////////////////////////////////////////////

  /////////// input + gain /////////////////////////////////////////
 if(menu==4){
        switch(in){
     case 0: gain = gain0;break;
     case 1: gain = gain1;break;
     case 2: gain = gain2;break;
     }

     if(ir.value==0x2FD906F){gain++;gr1=1;gr2=0;cl();time=millis();w=1;w2=1;gain_func();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){gain++;gr2=0;cl();time=millis();w=1;;w2=1;gain_func();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){gain--;gr1=0;gr2=1;cl();time=millis();w=1;w2=1;gain_func();audio();}// кнопка < 
     if(ir.value==0xFFFFFFFF and gr2==1){gain--;gr1=0;cl();time=millis();w=1;w2=1;gain_func();audio();}// кнопка <<<<<<
     
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    gain=gain+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;gain_func();audio();} 
    
   switch(in){
     case 0: gain0 = gain;break;
     case 1: gain1 = gain;break;
     case 2: gain2 = gain;break;
     } 
   lcd.setCursor(0,0);lcd.print(" INPUT ");lcd.print(in);
   lcd.setCursor(0,1);lcd.print(" GAIN ");
      switch(gain){
        case 3: lcd.print(" +11.25 dB");break;
        case 2: lcd.print("   +7.5 dB");break;
        case 1: lcd.print("  +3.75 dB");break;
        case 0: lcd.print("      0 dB");break;
        }
  }
 /////////////////////////////////////////////////////////////
 
 // запись всех настроек в EEPROM если кнопки + и - не нажимались в течении 10 сек
 // если настройки тембра, баланса и номер входа не менялись в течении 10 сек, переход в рег. Громкости
   if(millis()-time>10000 && w==1){
     EEPROM.update(0,vol);
     EEPROM.update(4,balans+4);
     EEPROM.update(1,bass+7);
     EEPROM.update(3,treb+7);
     EEPROM.update(5,in);
     EEPROM.update(6,gain0); EEPROM.update(7,gain1); EEPROM.update(8,gain2);
 menu=100;lcd.clear();w=0;w2=1;cl();spek=1;
 }

 if(spek==1){
  analyzeAudio();   // функция FHT, забивает массив fht_log_out[] величинами по спектру

  for (int pos = 0; pos < 16; pos++) {   // для окошек дисплея с 0 по 15
    // найти максимум из пачки тонов
    if (fht_log_out[posOffset[pos]] > maxValue) maxValue = fht_log_out[posOffset[pos]];

    lcd.setCursor(pos, 0);

    // преобразовать значение величины спектра в диапазон 0..15 с учётом настроек
    int posLevel = map(fht_log_out[posOffset[pos]], LOW_PASS, gain_sp, 0, 15);
    posLevel = constrain(posLevel, 0, 15);
  while(yyy<2){yyy++;
    if (posLevel > 7) {               // если значение больше 7 (значит нижний квадратик будет полный)
      lcd.write((uint8_t)posLevel - 8);    // верхний квадратик залить тем что осталось
      lcd.setCursor(pos, 1);          // перейти на нижний квадратик
      lcd.write((uint8_t)7);        // залить его полностью
  } 
    else {                          // если значение меньше 8
      lcd.print(" ");                 // верхний квадратик пустой
      lcd.setCursor(pos, 1);          // нижний квадратик
      lcd.write((uint8_t)posLevel);        // залить полосками
    }} yyy=0;
  }  

  if (AUTO_GAIN) {
    maxValue_f = maxValue * k + maxValue_f * (1 - k);
    if (millis() - gainTimer > 1500) {      // каждые 1500 мс
      // если максимальное значение больше порога, взять его как максимум для отображения
      if (maxValue_f > VOL_THR) gain_sp = maxValue_f;

      // если нет, то взять порог побольше, чтобы шумы вообще не проходили
      else gain_sp = 100;
      gainTimer = millis();
    }
  }else{gain_sp = DEF_GAIN;}
  }
  //////////////////////////////////
 
}// LOOP

void audio(){  
  audioChip.source(in);//select your source 1...3  вход 3...1
  audioChip.volume(vol);//Vol 0...62 шаг 1 дБ
  audioChip.gain(gain);//gain 0...3 шаг 3.75 дБ
  audioChip.bass(bass);//bass -7...+7 шаг 2 дБ
  audioChip.treble(treb);//treble -7...+7 шаг 2 дБ
  audioChip.balance(balans);//-31...+31 программно ограничено до +\-8 дБ
  audioChip.loudness(true);//true or false // тонкомпенсация
}

void gain_func(){if(gain<0){gain=3;}if(gain>3){gain=0;}}
void balans_func(){if(balans>4){balans=4;}if(balans<-4){balans=-4;}}
void treb_func(){if(treb>7){treb=7;}if(treb<-7){treb=-7;}}
void bass_func(){if(bass>7){bass=7;}if(bass<-7){bass=-7;}} 
void vol_func(){if(vol<0){vol=0;}if(vol>62){vol=62;}}
void cl(){ir.value=0;delay(300);spek=0;lcd.clear();}
void to_Timer(){newPosition = myEnc.read()/4;}

void analyzeAudio() {  
  cli(); 
 while( i1 < FHT_N ) {  i1++; 
    do{ADCSRA |= (1 << ADSC);} 
    while((ADCSRA & (1 << ADIF)) == 0);
    fht_input[i1] = (ADCL|ADCH << 8); 
    //fht_input[i1] = ADCH; 
    }i1=0;
    fht_window(); // window the data for better frequency response
    fht_reorder(); // reorder the data before doing the fht
    fht_run(); // process the data in the fht
    fht_mag_log(); // take the output of the fht
  sei();
}

2

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

собрал усилитель на mega2560,скетч не работает.после загрузки на экране появляются громкость и через секунду все заливается полосками видимо спектр.энкодер не реагирует

3

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

Скетч не рассчитан под mega2560

4 (2020-01-24 16:54:47 отредактировано roline)

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

скетч рабочий(нано,энкодер,pt2312)
ИК нет возможности потестить.
Есть ли возможность оптимизировать код под 2004? спектр чтобы 3тью и 4ую строку занимал постоянно,а прочие настройки как и ранее 1ую и 2ую... ну и немного отцентрировать.

5

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

Так не получится, не хватит ресурсов у ардуино

6

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

заметил,что когда нет звукового сигнала , из динамиков слышен писк . происходит это когда параметр требл выкручен больше 4х и выше дБ. Еще заметил, что этот писк появляется когда идет смена картинки на дисплее(он висит на i2c шине). Дисплей откинул,писк остался. Откинул РТшку от i2c писк пропал.Если убираю питание от дуинки - писк пропадает. Создается впечатление,что когда дуинка работает с шиной проявляется писк.Что по вашему мнению генерирует этот писк? питание дуины,усилка и РТшки раздельное.

7

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

По питанию поставьте емкости 0,1 мкФ или экран подключите по параллельной шине. Где то наводка, могут быть провода по входу быть сильно длинными, или нуждаются в экранизации. Причин писка много надо искать.

8 (2020-01-25 18:44:44 отредактировано roline)

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

емкость по питанию стоит. аудиоПровода в экране(длина не более 20см) Дисплей вообще откидывал- не помогло. откидываю РТшку - от шины писк уходит.между переключениями картинки на дисплее писк уходит. между переключениями меню и спектра писк уходит.
усил тда7388 сам по себе не пищит.

9

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

Сложный вопрос
Чтобы убедится что это не скетч генерирует писк постоянной отправкой команд аудиопроцессору, то перед
}// LOOP

добавьте

delay(100);

Все начнет притормаживать, но это может изменить тональность писка, если тональность не изменилась, то скетч не шлет постоянные запросы в аудипроцессор.

Так же в PT2313.cpp

можно удалить строки:

#if ARDUINO >= 157
    Wire.setClock(100000UL); // Set I2C frequency to 100kHz
#else
    TWBR = ((F_CPU / 100000UL) - 16) / 2; // Set I2C frequency to 100kHz
#endif

Шина i2c переключится на максимальную скорость.

10 (2020-01-25 19:35:24 отредактировано roline)

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

delay(100); писк стал прирывистым ... пип-пип-пип... тональность немного ниже.
удаление строк из .срр ничего не дали.

delay(1000); пииип-пииип.   пиканье стало длиннее

11

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

Значит скетч постоянно отправляет запрос к аудиопроцессору, а это он должен делать только когда меняется параметр.

Опубликуйте скетч в форуме, я посмотрю код

12

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

delay(1000);
Тоесть писк во время паузы?

13

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

Поменяйте параметр
MsTimer2::set(3, to_Timer);MsTimer2::start();
на
MsTimer2::set(30, to_Timer);MsTimer2::start();

Измениться ли тональность

14

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

Внимание! Исправьте следующие ошибки, чтобы добавить сообщение:

    Слишком много ссылок в сообщении. Разрешено 1 ссылок. Уменьшите количество ссылок.

не выходит. использую code

15

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

По одной ссылке в сообщении, ограничение форума

Код можно разместить в тегах code

16

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

liman324 пишет:

delay(1000);
Тоесть писк во время паузы?

пикает как при 100 ,но пики стали длиннее. музыка не играет, к энкодеру не обращаюсь.

17

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

В библиотеке есть тестовый скетч, его надо загрузить и проверить писк, тембр ВЧ я вывел на макс.

#include <Wire.h>
#include <PT2313.h>

PT2313 audioChip;

void setup(){
  audioChip.initialize(1,true);//source 1,mute on
  audioChip.source(1);//select your source 0...3
  audioChip.volume(33);//Vol 0...62 : 63=muted
  audioChip.gain(3);//gain 0...11.27 db
  audioChip.loudness(true);//true or false
  audioChip.bass(0);//bass -7...+7
  audioChip.treble(7);//treble -7...+7
  audioChip.balance(0);//-31...+31
}
void loop(){
}

18

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

liman324 пишет:

Измениться ли тональность

не меняется

19

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

liman324 пишет:

В библиотеке есть тестовый скетч, его надо загрузить и проверить писк, тембр ВЧ я вывел на макс.

писк полностью отсутствует... тишина

20

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

Поменяйте
audioChip.initialize(1,true);//source 1,mute on
на
audioChip.initialize(0,true);//source 1,mute on
в тестовом скетче

21

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

liman324 пишет:

audioChip.initialize(0,true);//source 1,mute on
в тестовом скетче

тишина.

22

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

Вы это проверяли?

Поменяйте параметр
MsTimer2::set(3, to_Timer);MsTimer2::start();
на
MsTimer2::set(30, to_Timer);MsTimer2::start();

Измениться ли тональность

23

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

Мне нужен Ваш скетч, разместите его в тегах code

24

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

liman324 пишет:

Вы это проверяли?

http://forum.rcl-radio.ru/viewtopic.php?pid=780#p780
не меняется, проверял

25

Re: PT2313 + энкодер + ИК пульт + анализатор спектра

#define AUTO_GAIN 1       // автонастройка по громкости
#define VOL_THR 35        // порог тишины (ниже него отображения на матрице не будет)
#define LOW_PASS 30      // нижний порог чувствительности шумов (нет скачков при отсутствии звука)
#define DEF_GAIN 150       // максимальный порог по умолчанию 
#define FHT_N 128        // ширина спектра х2
#define LOG_OUT 1
#include <FHT.h> 
#include <Wire.h>
#include <PT2313.h>
#include <Encoder.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
  PT2313 audioChip;
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  Encoder myEnc(9, 8);//CLK, DT
  decode_results ir;
 byte posOffset[16] = {2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}; // вч выше
 byte menu,in,w,w2,gr1,gr2,www,z,z0,z1;
 int vol,vol_d,bass,bass_d,treb,treb_d,balans,gain,gain0,gain1,gain2;
 unsigned long time,oldPosition  = -999,newPosition;
 unsigned long gainTimer;
 byte maxValue, maxValue_f,spek;
 float k = 0.1;
 byte gain_sp = DEF_GAIN;  
 int i1,yyy;