Сегодня топал по улице и смотрю валяется какая-то плата, поднимаю смотрю это плата от магнитолы. А на ней запаяна микросхема аудиопроцессора TDA7719)) удача та какая. Надеюсь микросхема живая.

Пока едут заказанные микросхемы пытаю эту, тем более вся развязка уже на месте.

Продолжаю развивать тему аудиопроца. Подключил 4 колонки и 1 саб, добавил дисплей для отображения информации о состоянии аудиопроца и энкодер для управления.

 

22/04/16

{youtube}2opiR4L3NmY{/youtube}

07/05/16

{youtube}2D3Saspyxa8{/youtube}

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

 

#include "Wire.h" 

void setup() 
{ 
Wire.begin(); 
delay(1000); 
Serial.begin(9600); 

} 
void loop(){ 

delay(2000); 

tda7719(0, 0b11100000);  //Конфигурация входа/выбора источника     :Input Configuration / Main Source Selector 
tda7719(1, 0b00011111);  //2-й выбор источника / Прямой Путь       :2nd Source Selector / Direct Path 
tda7719(2, 0b00011111);  //Смешивание Источников / Смешивание Gain :Mixing Source / Mixing Gain 
tda7719(3, 0b00011111);  //Контроль смешивания и т.д               :Mix Control / Level Meter / DC Offset Detector Config 
tda7719(4, 0b00000000);  //Soft Mute / Others 
tda7719(5, 0b00000000);  //Soft Step I 
tda7719(6, 0b00000000);  //Soft Step II / DC-detector 
tda7719(7, 0b10000000);  //Громкость                              :Loudness 
tda7719(8, 0b00010000);  //Объем / Output Gain                    :Volume / Output Gain 
tda7719(9, 0b01110000);  //Treble filter  
tda7719(10, 0b01110000); //Middle filter 
tda7719(11, 0b01110000); //Bass filter 
tda7719(12, 0b01111000); //Настройки Сабвуфер/Средний/Басс        :Subwoofer / Middle / Bass 
tda7719(13, 0b00010000); //Настройки динамика передний левый      :Speaker Attenuator Left Front 
tda7719(14, 0b00010000); //Настройки динамика передний правый     :Speaker Attenuator Right Front 
tda7719(15, 0b00010000); //Настройки динамика задний Левый        :Speaker Attenuator Left Rear 
tda7719(16, 0b00010000); //Настройки динамика задний правый       :Speaker Attenuator Right Front 
tda7719(17, 0b00010000); //Настройки сабвуфера Левый              :Subwoofer Attenuator Left 
tda7719(18, 0b00010000); //Настройки сабвуфера Правый             :Subwoofer Attenuator Right 

} 

void tda7719(int subaddress, int data)  //Вызов tda7719 
{ 
Wire.beginTransmission(0x44); //СТАРТ и Адрес микросхема TDA7719 
Wire.write(subaddress);       //Подадрес команды 
Wire.write(data);             //Команда 
Serial.println(subaddress);   //Пишем подадрем в монитор 
Serial.println(data);         //Пишем команду в монитор 
Wire.endTransmission();       //СТОП 
delay(500); 
} 

Скетч который ниже работает только на Arduino DUE, на других не хватило памяти. А меги не было под рукой. 

В скетче реализовано управления микросхемой TDA7719, вывод информации на дисплей и управляется всё это с одного энкодера. Все изменения сохраняются в энэргонезависимую память, т.е. при отключении питания настройки остаются такие какими были до отключения. Сохранение происходит после 1-й секунды как прекратили вращать энкодер.

#include 
#include 
#include 
DueFlashStorage dueFlashStorage;  //для работы с энэргонезависомой памятью
#include              //библиотека для олед дисплея
OLED  myOLED(SDA, SCL, 8);        //инициализация дисплея
#include "Wire.h" 
extern uint8_t SmallFont[];      //маленькие буквы для дисплея
extern uint8_t MediumNumbers[];  //средние цифры для дисплея
extern uint8_t BigNumbers[];     //большие цифры для дисплея
String tdaparametr;              //параметр который пишется на дисплей т.е. меню
String tdapodparametr;           //подпарамтер информационный
const int pin_A = 12;            // pin 12
const int pin_B = 11;            // pin 11
unsigned char encoder_A;        //переменная
unsigned char encoder_B;        //переменная
unsigned char encoder_A_prev=0; //переменная
#define BTN_pin  10             // пин 8 кнопка энкодера
uint32_t savemillis = 0;        //переменная таймера
int menudelay=300;              //задержка для кнопки
boolean selectmenu=false;       //меню по умолчанию настройка
int menu = 0;                   //переменная для меню
int encoder_data = dueFlashStorage.read(19);;                //значения для энкодера
int brightness = dueFlashStorage.read(19);                   //значения для яркости
int attenation = dueFlashStorage.read(21);                   //общая громкость
int add = 1;                                  //данные на поворот энкодера
int in0=64;//000   1-й вход
int in4=68;//100   2-й вход
int in1=65;//001   3-й вход
int in2=66;//010   4-й вход
int in5=69;//101   5-й вход
int in6=70;//110   6-й вход
int indata;                                 
int sve=0;
int front_l = dueFlashStorage.read(22);
int front_ltda = dueFlashStorage.read(13);
int front_r = dueFlashStorage.read(23);
int front_rtda = dueFlashStorage.read(14);
int rear_l = dueFlashStorage.read(24);
int rear_ltda = dueFlashStorage.read(15);
int rear_r = dueFlashStorage.read(25);
int rear_rtda = dueFlashStorage.read(16);
int sub_l = dueFlashStorage.read(26);
int sub_ltda = dueFlashStorage.read(17);
int sub_r = dueFlashStorage.read(27);
int sub_rtda = dueFlashStorage.read(18);
int treble_freguency =  dueFlashStorage.read(28);
int treble_menu =  dueFlashStorage.read(29);
int treble_gain = dueFlashStorage.read(30);
int treble_gain_menu = dueFlashStorage.read(31);
int midle_qfactor = dueFlashStorage.read(32);
int midle_qfactor_menu = dueFlashStorage.read(33);
int midle_gain =   dueFlashStorage.read(34);
int midle_gain_menu = dueFlashStorage.read(35);
int bass_qfactor = dueFlashStorage.read(36);
int bass_qfactor_menu = dueFlashStorage.read(37);
int bass_gain =   dueFlashStorage.read(38);
int bass_gain_menu = dueFlashStorage.read(39);

int bass_dc_mode = dueFlashStorage.read(40);
int bass_dc_mode_menu = dueFlashStorage.read(41);

int bass_center_freguency = dueFlashStorage.read(42);
int bass_center_freguency_menu = dueFlashStorage.read(43);

int midle_center_freguency = dueFlashStorage.read(44);
int midle_center_freguency_menu = dueFlashStorage.read(45);

int sub_out_phase = dueFlashStorage.read(46);
int sub_out_phase_menu = dueFlashStorage.read(47);

int sub_cut_off_freguency = dueFlashStorage.read(48);
int sub_cut_off_freguency_menu = dueFlashStorage.read(49);

int high_boost = dueFlashStorage.read(50);
int high_boost_menu = dueFlashStorage.read(51);

int loud_freguency = dueFlashStorage.read(52);
int loud_freguency_menu = dueFlashStorage.read(53);

int loudless_attenation = dueFlashStorage.read(54);
int loudless_attenation_menu = dueFlashStorage.read(55);

int output_gain = dueFlashStorage.read(56);
int output_gain_menu = dueFlashStorage.read(57);

int volume_gain = dueFlashStorage.read(58);
int volume_gain_menu = dueFlashStorage.read(59);


int directpanch=248;

//int istochnik = dueFlashStorage.read(15);

void setup() { //инициализация
  
/*if(dueFlashStorage.read(0)== 255) {dueFlashStorage.write(0,in0);}  
//if(dueFlashStorage.read(1)== 255) {dueFlashStorage.write(1,250);}
//if(dueFlashStorage.read(2)== 255) {dueFlashStorage.write(2,255);}
if(dueFlashStorage.read(3)== 255) {dueFlashStorage.write(3,240);}
if(dueFlashStorage.read(4)== 255) {dueFlashStorage.write(4,253);}
//if(dueFlashStorage.read(5)== 255) {dueFlashStorage.write(5,255);}
if(dueFlashStorage.read(6)== 255) {dueFlashStorage.write(6,207);}
if(dueFlashStorage.read(7)== 255) {dueFlashStorage.write(7,240);}
//if(dueFlashStorage.read(8)== 255) {dueFlashStorage.write(8,255);}
//if(dueFlashStorage.read(9)== 255) {dueFlashStorage.write(9,255);}
//if(dueFlashStorage.read(10)== 255) {dueFlashStorage.write(10,255);}     //Всё это первоначальная инициализация, зпись в энэргонезависимую память
if(dueFlashStorage.read(11)== 255) {dueFlashStorage.write(11,254);}
if(dueFlashStorage.read(12)== 255) {dueFlashStorage.write(12,254);}
//if(dueFlashStorage.read(13)== 255) {dueFlashStorage.write(13,144);}
//if(dueFlashStorage.read(14)== 255) {dueFlashStorage.write(14,144);}
//if(dueFlashStorage.read(15)== 255) {dueFlashStorage.write(15,144);}
//if(dueFlashStorage.read(16)== 255) {dueFlashStorage.write(16,144);}
//if(dueFlashStorage.read(17)== 255) {dueFlashStorage.write(17,144);}
//if(dueFlashStorage.read(18)== 255) {dueFlashStorage.write(18,144);}
//if(dueFlashStorage.read(19)<=1000) {dueFlashStorage.write(19,10);}*/

pinMode(pin_A, INPUT);        //пины энкодера объявляем входами
pinMode(pin_B, INPUT);        //пины энкодера объявляем входами
pinMode(BTN_pin, INPUT);        //пины энкодера объявляем входами
digitalWrite(BTN_pin, 1);     //подтяжка кнопки энкодера  
Wire.begin(); 
Serial.begin(9600);
myOLED.begin();



tda7719(0, dueFlashStorage.read(0));  //Конфигурация входа/выбора источника     :Input Configuration / Main Source Selector 
tda7719(1, dueFlashStorage.read(1));  //2-й выбор источника / Прямой Путь       :2nd Source Selector / Direct Path 
tda7719(2, dueFlashStorage.read(2));  //Смешивание Источников / Смешивание Gain :Mixing Source / Mixing Gain 
tda7719(3, dueFlashStorage.read(3));  //Контроль смешивания и т.д               :Mix Control / Level Meter / DC Offset Detector Config 
tda7719(4, dueFlashStorage.read(4));  //Soft Mute / Others 
tda7719(5, dueFlashStorage.read(5));  //Soft Step I 
tda7719(6, dueFlashStorage.read(6));  //Soft Step II / DC-detector 
tda7719(7, dueFlashStorage.read(7));  //Громкость                              :Loudness 
tda7719(8, dueFlashStorage.read(8));  //Объем / Output Gain                    :Volume / Output Gain 
tda7719(9, dueFlashStorage.read(9));  //Treble filter  
tda7719(10, dueFlashStorage.read(10)); //Middle filter 
tda7719(11, dueFlashStorage.read(11)); //Bass filter 
tda7719(12, dueFlashStorage.read(12)); //Настройки Сабвуфер/Средний/Басс        :Subwoofer / Middle / Bass 
tda7719(13, dueFlashStorage.read(13)); //Настройки динамика передний левый      :Speaker Attenuator Left Front 
tda7719(14, dueFlashStorage.read(14)); //Настройки динамика передний правый     :Speaker Attenuator Right Front 
tda7719(15, dueFlashStorage.read(15)); //Настройки динамика задний Левый        :Speaker Attenuator Left Rear 
tda7719(16, dueFlashStorage.read(16)); //Настройки динамика задний правый       :Speaker Attenuator Right Front 
tda7719(17, dueFlashStorage.read(17)); //Настройки сабвуфера Левый              :Subwoofer Attenuator Left 
tda7719(18, dueFlashStorage.read(18)); //Настройки сабвуфера Правый             :Subwoofer Attenuator Right 
meny_oled();
displayprint();

} 
void loop(){  //основной цикл
  
  encoder();


      if(digitalRead(BTN_pin)==LOW){
      selectmenu=(false,!selectmenu);
      displayprint();
      delay(menudelay);
        
      } 

      
      if(savemillis && millis()-savemillis > 1200)
      { 
      flaschwrite();
      savemillis = 0;
      }
   
} 

void encoder(){

    encoder_A = digitalRead(pin_A);       // считываем состояние выхода А энкодера 
    encoder_B = digitalRead(pin_B);       // считываем состояние выхода B энкодера    
    if((!encoder_A) && (encoder_A_prev))  // если состояние изменилось с положительного к нулю
    {
      if(encoder_B)     { 
    
      if(selectmenu==false){
       encoder_data = encoder_data+add;
       savemillis = millis();
      }else{
        menu++;
        menu = constrain(menu, 0, 24);
        
      }
      
      
      }
            else{
      if(selectmenu==false){
       encoder_data = encoder_data-add;
       savemillis = millis();
      }else{
        menu--;
        menu = constrain(menu, 0, 24);
        
      }   
          
    }   
 meny_oled();  
 
    }

 encoder_A_prev = encoder_A;     // сохраняем значение А для следующего цикла 


}
void meny_oled(){

switch (menu) {
         case 0:  tdaparametr="BRIGHTNESS";
         encoder_data = constrain(encoder_data, 0,10);
         if(selectmenu==true){ encoder_data=dueFlashStorage.read(19);}
         add = 1;
         brightness=encoder_data;   
         tdapodparametr="0 to 10";
         if(selectmenu==false){
         myOLED.setBrightness(encoder_data*25);
         }
    
    break;
    case 1:  tdaparametr="ISTOCHNIK";
         if(selectmenu==true){ encoder_data=dueFlashStorage.read(20);}
         add = 1;
         encoder_data = constrain(encoder_data, 1,6);
         indata = encoder_data;
         switch (encoder_data){
          
               case 1:
               tdapodparametr="AUX1";
               if(selectmenu==false){
               tda7719(0, in0);
               }
               break;
               
               case 2:
               tdapodparametr="AUX2";
               if(selectmenu==false){
               tda7719(0, in4);
               }
               break;
               
               case 3:
               tdapodparametr="AUX3";
               if(selectmenu==false){
               tda7719(0, in1);
               }
               break;
               
               case 4:
               tdapodparametr="AUX4";
               if(selectmenu==false){
               tda7719(0, in2);
               }
               break;
               
               case 5:
               tdapodparametr="AUX5";
               if(selectmenu==false){
               tda7719(0, in5);
               }
               break;
               
               case 6:
               tdapodparametr="AUX6";
               if(selectmenu==false){
               tda7719(0, in6);
               }
               break;
        }
  
     
    break;
    case 2: tdaparametr="VOLUME";
         if(selectmenu==true){ encoder_data=dueFlashStorage.read(21);}
         add = 1;
         encoder_data = constrain(encoder_data, 0,40);
         attenation = encoder_data;
         tdapodparametr="0 to 40";
         
        

if(selectmenu==false){         
tda7719(13, 223-(attenation+front_l)); //Настройки динамика передний левый      :Speaker Attenuator Left Front 
tda7719(14, 223-(attenation+front_r)); //Настройки динамика передний правый     :Speaker Attenuator Right Front 
tda7719(15, 223-(attenation+rear_l)); //Настройки динамика задний Левый        :Speaker Attenuator Left Rear 
tda7719(16, 223-(attenation+rear_r)); //Настройки динамика задний правый       :Speaker Attenuator Right Front 
tda7719(17, 223-(attenation+sub_l)); //Настройки сабвуфера Левый              :Subwoofer Attenuator Left 
tda7719(18, 223-(attenation+sub_r)); //Настройки сабвуфера Правый             :Subwoofer Attenuator Right 
}
front_ltda = 223-(front_l+attenation);
front_rtda = 223-(front_r+attenation);
rear_ltda = 223-(rear_l+attenation); 
rear_rtda = 223-(rear_r+attenation);   
sub_ltda = 223-(sub_l+attenation);
sub_rtda = 223-(sub_r+attenation);
    
      //выполняется когда  var равно 2
    break;
    case 3: tdaparametr="GAIN FRON L";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(22);}
        tdapodparametr="0 to 39";
        add = 1;
        encoder_data = constrain(encoder_data, 0,39);
        front_l = encoder_data;
        front_ltda = 223-(front_l+attenation);
        if(selectmenu==false){
        tda7719(13, front_ltda); //Настройки динамика передний левый      :Speaker Attenuator Left Front
        }
        
    break;
    case 4: tdaparametr="GAIN FRON R";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(23);}
        tdapodparametr="0 to 39";
        add = 1;
        encoder_data = constrain(encoder_data, 0,39);
        front_r = encoder_data;
        front_rtda = 223-(front_r+attenation);
        if(selectmenu==false){
        tda7719(14, front_rtda); //Настройки динамика передний правый      :Speaker Attenuator Left Front
        }
      
    break;
    case 5: tdaparametr="GAIN REAR L";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(24);}
        tdapodparametr="0 to 39";
        add = 1;
        encoder_data = constrain(encoder_data, 0,39);
        rear_l = encoder_data;
        rear_ltda = 223-(rear_l+attenation);
        if(selectmenu==false){
        tda7719(15, rear_ltda); //Настройки динамика задний левый      :Speaker Attenuator Left Front
        }
    break;
    case 6: tdaparametr="GAIN REAR R";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(25);}
        tdapodparametr="0 to 39";
        add = 1;
        encoder_data = constrain(encoder_data, 0,39);
        rear_r = encoder_data;
        rear_rtda = 223-(rear_r+attenation);
        if(selectmenu==false){
        tda7719(16, rear_rtda); //Настройки динамика задний правый      :Speaker Attenuator Left Front
        }
    break;
    case 7: tdaparametr="GAIN SUBWOOFER L";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(26);}
        tdapodparametr="0 to 39";
        add = 1;
        encoder_data = constrain(encoder_data, 0,39);
        sub_l = encoder_data;
        sub_ltda = 223-(sub_l+attenation);
        if(selectmenu==false){
        tda7719(17, sub_ltda); //Настройки сабвуфера левый      :Speaker Attenuator Left Front
        }
    break; 
    case 8: tdaparametr="GAIN SUBWOOFER R";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(27);}
        tdapodparametr="0 to 40";
        add = 1;
        encoder_data = constrain(encoder_data, 0,39);
        sub_r = encoder_data;
        sub_rtda = 223-(sub_r+attenation);
        if(selectmenu==false){
        tda7719(18, sub_rtda); //Настройки сабвуфера правый      :Speaker Attenuator Left Front
        }
    break;
        case 9: tdaparametr="TREBLE FREGUENCY";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(29);}
        tdapodparametr="1 to 4";
        add = 1;
        encoder_data = constrain(encoder_data, 1,4);
        treble_menu = encoder_data;
        switch (encoder_data){
          
               case 1:
               tdapodparametr="10.0 kHz";
               treble_freguency = 0;
               break;
               
               case 2:
               tdapodparametr="12.5 kHz";
               treble_freguency = 32;
               break;
               
               case 3:
               tdapodparametr="15.0 kHz";
               treble_freguency = 64;
               break;
               
               case 4:
               tdapodparametr="17.5 kHz";
               treble_freguency = 96;
               break;
               }
           
               if(selectmenu==false){
               tda7719(9, treble_gain+treble_freguency);
                  }
    break;
        case 10: tdaparametr="TREBLE FILTER";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(31);}
        tdapodparametr="0 to 31";
        add = 1;
        encoder_data = constrain(encoder_data, 0,31);
        treble_gain_menu = encoder_data;
        
        if(encoder_data <=15){
          treble_gain = 128 + encoder_data;
        }else{
          treble_gain = 159 - (encoder_data-16);
        }  
        if(selectmenu==false){     
        tda7719(9, treble_gain+treble_freguency);
        }
       
    break;

    case 11: tdaparametr="MIDLE Q FACTOR";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(33);}
        tdapodparametr="1 to 4";
        add = 1;
        encoder_data = constrain(encoder_data, 1,4);
        midle_qfactor_menu = encoder_data;
        switch (encoder_data){
          
               case 1:
               tdapodparametr="0.5";
               midle_qfactor = 0;
               break;
               
               case 2:
               tdapodparametr="0.75";
               midle_qfactor = 32;
               break;
               
               case 3:
               tdapodparametr="1";
               midle_qfactor = 64;
               break;
               
               case 4:
               tdapodparametr="1.25";
               midle_qfactor = 96;
               break;
               }
               
               if(selectmenu==false){
                tda7719(10, midle_gain+midle_qfactor);
               }
               
    break;

         case 12: tdaparametr="MIDLE FILTER";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(35);}
        tdapodparametr="0 to 31";
        add = 1;
        encoder_data = constrain(encoder_data, 0,31);
        midle_gain_menu = encoder_data;
        
        if(encoder_data <=15){
          midle_gain = 128 + encoder_data;
        }else{
          midle_gain = 159 - (encoder_data-16);
        }  
        if(selectmenu==false){
        tda7719(10, midle_gain+midle_qfactor);
        }
       
    break;

   case 13: tdaparametr="BASS Q FACTOR";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(37);}
        tdapodparametr="1 to 4";
        add = 1;
        encoder_data = constrain(encoder_data, 1,4);
        bass_qfactor_menu = encoder_data;
        switch (encoder_data){
          
               case 1:
               tdapodparametr="1";
               bass_qfactor = 0;
               break;
               
               case 2:
               tdapodparametr="1.25";
               bass_qfactor = 32;
               break;
               
               case 3:
               tdapodparametr="1.5";
               bass_qfactor = 64;
               break;
               
               case 4:
               tdapodparametr="2";
               bass_qfactor = 96;
               break;
               }
               
               if(selectmenu==false){
               tda7719(11, bass_gain+midle_qfactor);
              }
               
    break;

        case 14: tdaparametr="BASS FILTER";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(39);}
        tdapodparametr="0 to 31";
        add = 1;
        encoder_data = constrain(encoder_data, 0,31);
        bass_gain_menu = encoder_data;
        
        if(encoder_data <=15){
          bass_gain = 128 + encoder_data;
        }else{
          bass_gain = 159 - (encoder_data-16);
        }  
        
        if(selectmenu==false){     
        tda7719(11, bass_gain+bass_qfactor);
         }
       
    break;

        case 15: tdaparametr="BASS DC MODE";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(41);}
        
        add = 1;
        encoder_data = constrain(encoder_data, 1,2);
        bass_gain_menu = encoder_data;
        
        if(encoder_data ==1){
          bass_dc_mode = 0;
          tdapodparametr="Mode OFF";
        }else{
          bass_dc_mode = 128;
          tdapodparametr="Mode ON";
        }  

         if(selectmenu==false){
        tda7719(12, bass_dc_mode+bass_center_freguency+midle_center_freguency+sub_out_phase+sub_cut_off_freguency);
         }
       
    break;

            case 16: tdaparametr="BASS FREGUENCY";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(43);}
        
        add = 1;
        encoder_data = constrain(encoder_data, 1,4);
        bass_center_freguency_menu = encoder_data;
        
        switch (encoder_data){
          
               case 1:
               tdapodparametr="60 Hz";
               bass_center_freguency = 0;
               
               break;
               
               case 2:
               tdapodparametr="80 Hz";
               bass_center_freguency = 32;
               
               break;
               
               case 3:
               tdapodparametr="100 Hz";
               bass_center_freguency = 64;
              
               break;
               
               case 4:
               tdapodparametr="200 Hz";
               bass_center_freguency = 96;
               
               break;
               }
        if(selectmenu==false){         
        tda7719(12, bass_dc_mode+bass_center_freguency+midle_center_freguency+sub_out_phase+sub_cut_off_freguency);
         }
       
    break;

    
        case 17: tdaparametr="MIDDLE FREGUENCY";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(45);}
        
        add = 1;
        encoder_data = constrain(encoder_data, 1,4);
        midle_center_freguency_menu = encoder_data;
        
        switch (encoder_data){
          
               case 1:
               tdapodparametr="500 Hz";
               midle_center_freguency = 0;
               
               break;
               
               case 2:
               tdapodparametr="1000 Hz";
               midle_center_freguency = 8;
               
               break;
               
               case 3:
               tdapodparametr="1500 Hz";
               midle_center_freguency = 16;
              
               break;
               
               case 4:
               tdapodparametr="2500 Hz";
               midle_center_freguency = 24;
               
               break;
               }

        if(selectmenu==false){        
        tda7719(12, bass_dc_mode+bass_center_freguency+midle_center_freguency+sub_out_phase+sub_cut_off_freguency);
        }
       
    break;

        case 18: tdaparametr="SUBWOOFER PHASE";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(47);}
        
        add = 1;
        encoder_data = constrain(encoder_data, 1,2);
        sub_out_phase_menu = encoder_data;
        
        if(encoder_data ==1){
          sub_out_phase = 0;
          tdapodparametr="180 C";
        }else{
          sub_out_phase = 4;
          tdapodparametr="0 C";
        }  
        
        if(selectmenu==false){
        tda7719(12, bass_dc_mode+bass_center_freguency+midle_center_freguency+sub_out_phase+sub_cut_off_freguency);
        }
       
    break;

         case 19: tdaparametr="SUB. CUT-OFF FREG.";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(49);}
        
        add = 1;
        encoder_data = constrain(encoder_data, 1,4);
        sub_cut_off_freguency_menu = encoder_data;
        
        switch (encoder_data){
          
               case 1:
               tdapodparametr="FLAT";
               sub_cut_off_freguency = 0;
               
               break;
               
               case 2:
               tdapodparametr="80 Hz";
               sub_cut_off_freguency = 1;
               
               break;
               
               case 3:
               tdapodparametr="120 Hz";
               sub_cut_off_freguency = 2;
              
               break;
               
               case 4:
               tdapodparametr="160 Hz";
               sub_cut_off_freguency = 3;
               
               break;
               }

        if(selectmenu==false){       
        tda7719(12, bass_dc_mode+bass_center_freguency+midle_center_freguency+sub_out_phase+sub_cut_off_freguency);
        }
       
    break;

   
        case 20: tdaparametr="HIGH BOOST";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(51);}
        
        add = 1;
        encoder_data = constrain(encoder_data, 1,2);
         high_boost_menu = encoder_data;
        
        if(encoder_data ==1){
           high_boost = 128;
          tdapodparametr="ON";
        }else{
           high_boost = 192;
          tdapodparametr="OFF";
        }  

         if(selectmenu==false){
        tda7719(7,  high_boost+loud_freguency+loudless_attenation);
         }
       
    break;

        case 21: tdaparametr="LOUDLESS FREQ.";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(53);}
        
        add = 1;
        encoder_data = constrain(encoder_data, 1,4);
        loud_freguency_menu = encoder_data;
        
        switch (encoder_data){
          
               case 1:
               tdapodparametr="FLAT";
               loud_freguency = 0;
               
               break;
               
               case 2:
               tdapodparametr="400 Hz";
               loud_freguency = 16;
               
               break;
               
               case 3:
               tdapodparametr="800 Hz";
               loud_freguency = 32;
              
               break;
               
               case 4:
               tdapodparametr="2400 Hz";
               loud_freguency = 48;
               
               break;
               }

          if(selectmenu==false){      
         tda7719(7,  high_boost+loud_freguency+loudless_attenation);
          }
          
    break;
    
        case 22: tdaparametr="LOUDLESS GAIN";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(55);}
        tdapodparametr="0 to 15";
        add = 1;
        encoder_data = constrain(encoder_data, 0,15);
        loudless_attenation_menu = encoder_data;
        
        loudless_attenation=(15-encoder_data);
        
         if(selectmenu==false){     
        tda7719(7,  high_boost+loud_freguency+loudless_attenation);
         }
    break;

         case 23: tdaparametr="OUTPUT GAIN";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(57);}
        
        add = 1;
        encoder_data = constrain(encoder_data, 1,2);
         output_gain_menu = encoder_data;
        
        if(encoder_data ==1){
           output_gain = 0;
          tdapodparametr="+1 db";
        }else{
           output_gain = 64;
          tdapodparametr="+0 db";
        }  

         if(selectmenu==false){
        tda7719(8,  output_gain+volume_gain);
         }
    break;

    
        case 24: tdaparametr="VOLUME GAIN";
        if(selectmenu==true){ encoder_data=dueFlashStorage.read(59);}
        tdapodparametr="0 to 31";
        add = 1;
        encoder_data = constrain(encoder_data, 0,31);
        volume_gain_menu = encoder_data;
        
        if(encoder_data <=15){
          volume_gain = 128 + encoder_data;
        }else{
          volume_gain = 159 - (encoder_data-16);
        }  

          if(selectmenu==false){    
        tda7719(8,  output_gain+volume_gain);
          }
          
    break;


    
   // default:
      // выполняется, если не выбрана ни одна альтернатива


  }

   displayprint();
  
  }
void tda7719(int subaddress, int data){   //Запись в tda7719 
Wire.beginTransmission(0x44); //СТАРТ и Адрес микросхема TDA7719 
Wire.write(subaddress);       //Подадрес команды 
Wire.write(data);             //Команда 
Wire.endTransmission();       //СТОП 

}  
void displayprint(){  //печать на дисплее

  myOLED.clrScr();
  myOLED.setFont(MediumNumbers);
  //myOLED.printNumI(sve, RIGHT, 20);
  //myOLED.printNumI((high_boost+loud_freguency+loudless_attenation), RIGHT, 40);
  myOLED.printNumI(menu, RIGHT, 0);
  myOLED.setFont(BigNumbers);
  myOLED.printNumI(encoder_data, CENTER, 20);
    myOLED.setFont(SmallFont);
              if(selectmenu==false)
            {
             myOLED.print("SETUP", LEFT, 20);
         
            }
            else{
               myOLED.print("MENU", LEFT, 20);    
            }
  myOLED.print(tdaparametr, LEFT, 2);
  myOLED.print(tdapodparametr, CENTER, 50);


  
    myOLED.update();


    
  }  
void flaschwrite(){  //запись в энэргонезависимую память (выполняется через 1 секунд после прекращения вращения энкодера)
      
     dueFlashStorage.write(19,brightness);
     dueFlashStorage.write(20,indata);
     switch (indata) {
                      case 1:
                      dueFlashStorage.write(0,in0);
                      break;
                      case 2:
                      dueFlashStorage.write(0,in4);
                      break;
                      case 3:
                      dueFlashStorage.write(0,in1);
                      break;
                      case 4:
                      dueFlashStorage.write(0,in2);
                      break;
                      case 5:
                      dueFlashStorage.write(0,in5);
                      break;
                      case 6:
                      dueFlashStorage.write(0,in6);
                      break;
     } 
     dueFlashStorage.write(21,attenation);

     dueFlashStorage.write(13,front_ltda);
     dueFlashStorage.write(22,front_l);

     dueFlashStorage.write(14,front_rtda);
     dueFlashStorage.write(23,front_r);

     dueFlashStorage.write(15,rear_ltda);
     dueFlashStorage.write(24,rear_l);

     dueFlashStorage.write(16,rear_rtda);
     dueFlashStorage.write(25,rear_r);

     dueFlashStorage.write(17,sub_ltda);
     dueFlashStorage.write(26,sub_l);

     dueFlashStorage.write(18,sub_rtda);
     dueFlashStorage.write(27,sub_r);

     dueFlashStorage.write(28,treble_freguency);
     dueFlashStorage.write(29,treble_menu);
     
     dueFlashStorage.write(30,treble_gain);
     dueFlashStorage.write(31,treble_gain_menu);
     dueFlashStorage.write(9,treble_gain+treble_freguency);

     dueFlashStorage.write(32,midle_qfactor);
     dueFlashStorage.write(33,midle_qfactor_menu);

     dueFlashStorage.write(34,midle_gain);
     dueFlashStorage.write(35,midle_gain_menu);
     dueFlashStorage.write(10,midle_gain+midle_qfactor);

     dueFlashStorage.write(36,bass_qfactor);
     dueFlashStorage.write(37,bass_qfactor_menu);

     dueFlashStorage.write(38,bass_gain);
     dueFlashStorage.write(39,bass_gain_menu);
     dueFlashStorage.write(11,bass_gain+bass_qfactor);


     dueFlashStorage.write(40,bass_dc_mode);
     dueFlashStorage.write(41,bass_dc_mode_menu);
  
     dueFlashStorage.write(42,bass_center_freguency);
     dueFlashStorage.write(43,bass_center_freguency_menu);
       
     dueFlashStorage.write(44,midle_center_freguency);
     dueFlashStorage.write(45,midle_center_freguency_menu);

     dueFlashStorage.write(46,sub_out_phase);
     dueFlashStorage.write(47,sub_out_phase_menu);

     dueFlashStorage.write(48,sub_cut_off_freguency);
     dueFlashStorage.write(49,sub_cut_off_freguency_menu);
     dueFlashStorage.write(12, bass_dc_mode+bass_center_freguency+midle_center_freguency+sub_out_phase+sub_cut_off_freguency);
 
 
     dueFlashStorage.write(50,high_boost);
     dueFlashStorage.write(51,high_boost_menu);

     
     dueFlashStorage.write(52,loud_freguency);
     dueFlashStorage.write(53,loud_freguency_menu);

     dueFlashStorage.write(54,loudless_attenation);
     dueFlashStorage.write(55,loudless_attenation_menu);
     dueFlashStorage.write(7,high_boost+loud_freguency+loudless_attenation);


     dueFlashStorage.write(56,output_gain);
     dueFlashStorage.write(57,output_gain_menu);

     dueFlashStorage.write(58,volume_gain);
     dueFlashStorage.write(59,volume_gain_menu);
     dueFlashStorage.write(8,output_gain+volume_gain);

     







      sve++;
displayprint();
  
  
   }

аудиопроц на фото маленькая черная многоногая штучка по центру платы

g0pBVenk55Y

aKiLmclkzoM

GVwu4672UtE

 

jSwdMnaZzYU 1

SAxlXeU5QMk

uO ywNEnFXU

xzCH4JPxsTw

Вложения:
Файл/СсылкаОписаниеРазмер файла:СкачиванияСоздано
Доступ по ссылке (Даташит на TDA7710)Даташит на TDA7710Описание микросхемы.0 kB11332016-05-02 13:12
Скачать этот файл (tda7719.ino)Скетч для DUEСкетч будет работать только на arduino DUE32 kB272016-05-07 13:22