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






