Сегодня топал по улице и смотрю валяется какая-то плата, поднимаю смотрю это плата от магнитолы. А на ней запаяна микросхема аудиопроцессора 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(); }
аудиопроц на фото маленькая черная многоногая штучка по центру платы