1

Тема: ESP32-C3 TDA7719 TFT9341

I tested the compilation and it worked. I uploaded it to the board, but there is no screenshot. I don't know where the problem is.


#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>
#include <TDA7719.h>
#include <Encoder.h>
#include <EEPROM.h>
//#include <MsTimer2.h>

//#define TFT_MOSI  PIN_D7  // 
//#define TFT_SCLK  PIN_D5  // 
//#define TFT_CS    PIN_D6  // Chip select control
//#define TFT_DC    PIN_D4  // Data Command control pin
//#define TFT_RST   PIN_D3

TDA7719 tda;
TFT_eSPI tft = TFT_eSPI();       // Invoke custom library
Encoder myEnc(10, 9);//CLK, DT encoder connection

int k=1,i,q=1,y=1,w1=1,w2=1,w3=1,w4=1,w5=1,w6=1,w7=1,w8=1,w9=1,w10=1,w11=1,w12=1,w13=1,w14=1,w15=1,w16=1,w17=1,w18=1,w19=1,w20=1,w21=1;
int v0=1,v1=1,v2=1,v3=1,v4=1,v5=1,v6=1,v7=1,v8=1,v9=1,v10=1,v11=1,v12=1,v13=1,v14=1,v15=1,v16=1,v17=1,v18=1,v19=1,v20=1;
int w=1,ccc,xxx=1,menu=0,menu_old,vol,in,in0,loun,loun_f,vol_att,treb,treb_f,mid,mid_q,bass,bass_q,sub_f,phase,mid_f,bass_f,att_lf,att_rf,att_lr,att_rr,att_l,att_r,vol0,vol1,vol2,vol3,vol4,vol5;
unsigned long newPosition,oldPosition  = -999,newPosition1,oldPosition1  = -999;

//byte power;
//long time0,times1;

// Rotary Encoder Inputs
 #define encoderCLK 10   //S3
 #define encoderDT 9   //S2
 #define encoderSW 16    //D0

void setup(void) {
   Serial.begin(9600);
  
   pinMode (encoderCLK,INPUT);
   pinMode (encoderDT,INPUT);
   pinMode (encoderSW, INPUT);

   vol = EEPROM.read(0)-79;treb = EEPROM.read(1)-15;treb_f = EEPROM.read(2);mid = EEPROM.read(3)-15;mid_f = EEPROM.read(4);bass = EEPROM.read(5)-15;bass_f = EEPROM.read(6);
   loun = EEPROM.read(7)-15;loun_f = EEPROM.read(8);att_lf=EEPROM.read(9)-30;att_rf=EEPROM.read(10)-30;att_lr=EEPROM.read(11)-30;att_rr=EEPROM.read(12)-30;
   att_l=EEPROM.read(13)-30;att_r=EEPROM.read(14)-30;sub_f=EEPROM.read(15);phase=EEPROM.read(16);bass_q=EEPROM.read(17);mid_q=EEPROM.read(18);
   in0=EEPROM.read(19);vol0=EEPROM.read(20)-15;vol1=EEPROM.read(21)-15;vol2=EEPROM.read(22)-15;vol3=EEPROM.read(23)-15;vol4=EEPROM.read(24)-15;inn();vol5=EEPROM.read(25)-15;inn();
   delay(300);audio();// we transfer all settings from memory to tda

  tft.begin();
  //tft.init();
  tft.setRotation(1);
  for(int i=0; i<2; i++){                                                
    tft.drawLine(0+i,0+i,319-i*2,239-i*2,TFT_OLIVE);}      //draw the outer border (0+i,0+i,319-i*2,239-i*2)
    //tft.drawRFrame(10,10,299,219,8,TFT_OLIVE);             //draw an inner border with rounded corners

  tft.fillScreen(TFT_BLACK);
  tft.setTextSize(3);
  tft.setTextColor(TFT_YELLOW);
  tft.setCursor(35, 80);
  tft.print("AUDIO PROCEESOR");
  tft.setTextColor(TFT_GREEN);
  tft.setCursor(60, 120);
  tft.print("TONE CONTROL");
  tft.setCursor(120, 160);
  tft.print("HI-END");

}
void to_Timer(){newPosition = myEnc.read()/4;} // interrupt function
void loop() {
     if(digitalRead(encoderSW)==LOW){xxx++;myEnc.write(0);millis();delay(200);screen();k=1;if(xxx>1){xxx=0;}}// encoder button activation analogRead
   tft.setTextSize(1);
   set_menu();
  /////////////////////////////////////////// processing encoder commands  
    if(menu==0&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      vol=vol+newPosition;myEnc.write(0);newPosition=0;w=1;w1=1;if(vol>0){vol=0;}if(vol<-79){vol=-79;}audio();}}
    if(menu==1&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      treb=treb+newPosition;myEnc.write(0);newPosition=0;w=1;w2=1;if(treb>15){treb=15;}if(treb<-15){treb=-15;}audio();}}
    if(menu==2&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      mid=mid+newPosition;myEnc.write(0);newPosition=0;w=1;w3=1;if(mid>15){mid=15;}if(mid<-15){mid=-15;}audio();}}
    if(menu==3&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      bass=bass+newPosition;myEnc.write(0);newPosition=0;w=1;w4=1;if(bass>15){bass=15;}if(bass<-15){bass=-15;}audio();}}
    if(menu==4&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      in0=in0+newPosition;myEnc.write(0);newPosition=0;w=1;w5=1;w6=1;if(in0>5){in0=0;}if(in0<0){in0=5;}
         inn();set_vol_att();audio();}}
         inn();set_vol_att();
    if(menu==5&&xxx==1){inn();
         set_vol_att();
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      vol_att=vol_att+newPosition;myEnc.write(0);newPosition=0;w=1;w6=1;w5=1;if(vol_att<-15){vol_att=-15;}if(vol_att>15){vol_att=15;}audio();}inn();  
      switch(in){case 0: vol0 = vol_att;break;case 1: vol1 = vol_att;break;case 2: vol2 = vol_att;break;case 4: vol5=vol_att;break;case 5: vol3 = vol_att;break;case 6: vol4 = vol_att;break;}}
    if(menu==6&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_lf=att_lf+newPosition;myEnc.write(0);newPosition=0;w=1;w7=1;if(att_lf>0){att_lf=0;}if(att_lf<-30){att_lf=-30;}audio();}}  
   if(menu==7&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_rf=att_rf+newPosition;myEnc.write(0);newPosition=0;w=1;w8=1;if(att_rf>0){att_rf=0;}if(att_rf<-30){att_rf=-30;}audio();}} 
   if(menu==8&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_lr=att_lr+newPosition;myEnc.write(0);newPosition=0;w=1;w9=1;if(att_lr>0){att_lr=0;}if(att_lr<-30){att_lr=-30;}audio();}}
   if(menu==9&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_rr=att_rr+newPosition;myEnc.write(0);newPosition=0;w=1;w10=1;if(att_rr>0){att_rr=0;}if(att_rr<-30){att_rr=-30;}audio();}}
   if(menu==10&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_l=att_l+newPosition;myEnc.write(0);newPosition=0;w=1;w11=1;if(att_l>0){att_l=0;}if(att_l<-30){att_l=-30;}audio();}}
   if(menu==11&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_r=att_r+newPosition;myEnc.write(0);newPosition=0;w=1;w12=1;if(att_r>0){att_r=0;}if(att_r<-30){att_r=-30;}audio();}}
   if(menu==12&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       loun_f=loun_f+newPosition;myEnc.write(0);newPosition=0;w=1;w13=1;if(loun_f>3){loun_f=0;}if(loun_f<0){loun_f=3;}audio();}} 
   if(menu==13&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       loun=loun+newPosition;myEnc.write(0);newPosition=0;w=1;w14=1;if(loun>0){loun=0;}if(loun<-15){loun=-15;}audio();}}
   if(menu==14&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       treb_f=treb_f+newPosition;myEnc.write(0);newPosition=0;w=1;w15=1;if(treb_f>3){treb_f=0;}if(treb_f<0){treb_f=3;}audio();}}
   if(menu==15&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       mid_f=mid_f+newPosition;myEnc.write(0);newPosition=0;w=1;w16=1;if(mid_f>3){mid_f=0;}if(mid_f<0){mid_f=3;}audio();}}
   if(menu==16&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       bass_f=bass_f+newPosition;myEnc.write(0);newPosition=0;w=1;w17=1;if(bass_f>3){bass_f=0;}if(bass_f<0){bass_f=3;}audio();}}
   if(menu==17&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       sub_f=sub_f+newPosition;myEnc.write(0);newPosition=0;w=1;w18=1;if(sub_f>3){sub_f=0;}if(sub_f<0){sub_f=3;}audio();}}
   if(menu==18&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       mid_q=mid_q+newPosition;myEnc.write(0);newPosition=0;w=1;w19=1;if(mid_q>3){mid_q=0;}if(mid_q<0){mid_q=3;}audio();}}
   if(menu==19&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       bass_q=bass_q+newPosition;myEnc.write(0);newPosition=0;w=1;w20=1;if(bass_q>3){bass_q=0;}if(bass_q<0){bass_q=3;}audio();}}
   if(menu==20&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       phase=phase+newPosition;myEnc.write(0);newPosition=0;w=1;w21=1;if(phase>1){phase=0;}if(phase<0){phase=1;}audio();}}

   set_menu();
    ///// Output of tda adjustment names
          if(v0==1){   if(menu==0) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE); // 0xf5,0xe0,0x12
                       else tft.setTextColor(TFT_BLUE);tft.setCursor(5,13);tft.print("VOLUME");tft.setCursor(290,13);tft.print("dB");  v0=0;}
          if(v1==1){   if(menu==1) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_YELLOW);tft.setCursor(5,30);tft.print("TREBLE");tft.setCursor(290,30);tft.print("dB"); v1=0;}
          if(v2==1){   if(menu==2) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_GREEN);tft.setCursor(5,45);tft.print("MIDDLE");tft.setCursor(290,45);tft.print("dB");v2=0;}
          if(v3==1){   if(menu==3) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_RED);tft.setCursor(5,60);tft.print("BASS  ");tft.setCursor(290,60);tft.print("dB");v3=0;}
          if(v4==1){   if(menu==4) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(255,255,255);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,75);tft.print("IN ");v4=0;}
          if(v5==1){   if(menu==5) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(160,75);tft.print("ATT");tft.setCursor(290,75);tft.print("dB");v5=0;}
          if(v6==1){   if(menu==6) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,90);tft.print("ATT LF");v6=0;}
          if(v7==1){   if(menu==7) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(255,255,255);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(160,90);tft.print("ATT RF");v7=0;}
          if(v8==1){   if(menu==8) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,105);tft.print("ATT LR");v8=0;}
          if(v9==1){   if(menu==9) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(160,105);tft.print("ATT RR");v9=0;}
          if(v10==1){ if(menu==10) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,120);tft.print("ATT SL");v10=0;}
          if(v11==1){ if(menu==11) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(160,120);tft.print("ATT SR");v11=0;}
          if(v12==1){ if(menu==12) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,135);tft.print("LN");v12=0;}
          if(v13==1){ if(menu==13) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(180,135);tft.print("ATT");v13=0;}
          if(v14==1){ if(menu==14) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,150);tft.print("Treb CF");v14=0;}
          if(v15==1){ if(menu==15) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(128, 128, 0);tft.setCursor(5,165);tft.print("Midd CF");v15=0;}
          if(v16==1){ if(menu==16) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else{tft.setTextColor(TFT_OLIVE);}tft.setCursor(5,180);tft.print("Bass CF");v16=0;}
          if(v17==1){ if(menu==17) if(xxx==1)tft.setTextColor(0,165,255);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,195);tft.print("Subw CF");v17=0;}
          if(v18==1){ if(menu==18) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,210);tft.print("Midd QF");v18=0;}
          if(v19==1){ if(menu==19) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,225);tft.print("Bass QF");v19=0;}
          if(v20==1){ if(menu==20) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,240);tft.print("Phase Sub");v20=0;}
     set_menu();
///////////////////output of numerical values of parameters
  if(w1==1){tft.setTextColor(TFT_BLUE);tft.drawRect(100,1,100,12,TFT_BLUE); // x,y,w h // drawLine X1,Y1,X2,Y2
   //ucg.setColor(0,0,0);ucg.drawBox(100,1,80,12);
   tft.setTextColor(TFT_WHITE);tft.setCursor(230,15);tft.print(vol);w1=0;}
  if(w2==1){tft.setTextColor(TFT_YELLOW);tft.drawRect(100,16,100,12,TFT_YELLOW);   //ucg.setColor(150+treb*5,150+treb*4,0);ucg.drawLine(110,27,56+treb*4+109,17);
   //ucg.setColor(0,0,0);ucg.drawBox(67+treb*2+110,16,80+treb*2+110,12);
   tft.setTextColor(TFT_WHITE);tft.setCursor(230,30);tft.print(treb);tft.print(" ");w2=0;}
  if(w3==1){tft.setTextColor(TFT_GREEN);tft.drawRect(100,31,100,12,TFT_GREEN); ///ucg.setColor(0,150+mid*5,0);ucg.drawLine(110,42,56+mid*4+109,32);
   //ucg.setColor(0,0,0);ucg.drawLine(57+mid*4+109,42,80+mid*4+109,32);
   tft.setTextColor(TFT_WHITE);tft.setCursor(230,45);tft.print(mid);tft.print(" ");w3=0;}
  if(w4==1){tft.setTextColor(TFT_RED);tft.drawRect(100,46,100,12,TFT_RED); //ucg.setColor(150+bass*5,0,0);ucg.drawLine(110,57,56+bass*4+109,47);
   //ucg.setColor(0,0,0);ucg.drawLine(57+bass*5+109,57,80+bass*4+109,47);
   tft.setTextColor(TFT_WHITE);tft.setCursor(230,60);tft.print(bass);tft.print(" ");w4=0;}
  if(w5==1){tft.setTextColor(TFT_WHITE);  //myGLCD.printNumI(in0,60, 75,1);}
     switch(in0){
      case 0: tft.setCursor(50,75);tft.print("BT_IN");break;
      case 1: tft.setCursor(50,75);tft.print("CD_IN");break;
      case 2: tft.setCursor(50,75);tft.print("TV_IN");break;
      case 3: tft.setCursor(50,75);tft.print("PHONO");break;
      case 4: tft.setCursor(50,75);tft.print("AUX1 ");break;
      case 5: tft.setCursor(50,75);tft.print("AUX2 ");break;
     }
  }  
  if(w5==1||w6==1){tft.setTextColor(TFT_WHITE);tft.setCursor(225,75);tft.print(vol_att);tft.print(" ");w6=0;w5=0;}
  if(w7==1){tft.setTextColor(TFT_WHITE);tft.setCursor(100,90);tft.print(att_lf);tft.print(" ");w7=0;}
  if(w8==1){tft.setTextColor(TFT_WHITE);tft.setCursor(265,90);tft.print(att_rf);tft.print(" ");w8=0;}
  if(w9==1){tft.setTextColor(TFT_WHITE);tft.setCursor(100,105);tft.print(att_lr);tft.print(" ");w9=0;}
  if(w10==1){tft.setTextColor(TFT_WHITE);tft.setCursor(265,105);tft.print(att_rr);tft.print(" ");w10=0;}
  if(w11==1){tft.setTextColor(TFT_WHITE);tft.setCursor(100,120);tft.print(att_l);tft.print(" ");w11=0;}
  if(w12==1){tft.setTextColor(TFT_WHITE);tft.setCursor(265,120);tft.print(att_r);tft.print(" ");w12=0;}
  if(w13==1){tft.setTextColor(TFT_WHITE);
   switch(loun_f){case 0: tft.setCursor(50,135);tft.print(" FLAT  ");break;
                  case 1: tft.setCursor(50,135);tft.print("400 Hz ");break;
                  case 2: tft.setCursor(50,135);tft.print("800 Hz ");break;
                  case 3: tft.setCursor(50,135);tft.print("2.4 kHz");break;};w13=0;}
  if(w14==1){tft.setTextColor(TFT_WHITE);tft.setCursor(265,135);tft.print(loun);tft.print(" ");w14=0;}
  if(w15==1){tft.setTextColor(TFT_WHITE);
    switch(treb_f){case 0: tft.setCursor(210,150);tft.print("10.0 kHz");break;
                   case 1: tft.setCursor(210,150);tft.print("12.5 kHz");break;
                   case 2: tft.setCursor(210,150);tft.print("15.0 kHz");break;
                   case 3: tft.setCursor(210,150);tft.print("17.5 kHz");break;}w15=0;}
  if(w16==1){tft.setTextColor(TFT_WHITE);
    switch(mid_f){case 0: tft.setCursor(220,165);tft.print("0.5 kHz");break;
                  case 1: tft.setCursor(220,165);tft.print("1.0 kHz");break;
                  case 2: tft.setCursor(220,165);tft.print("1.5 kHz");break;
                  case 3: tft.setCursor(220,165);tft.print("2.5 kHz");break;}w16=0;}
  if(w17==1){tft.setTextColor(TFT_WHITE);
    switch(bass_f){case 0: tft.setCursor(220,180);tft.print(" 60 Hz");break;
                   case 1: tft.setCursor(220,180);tft.print(" 80 Hz");break;
                   case 2: tft.setCursor(220,180);tft.print("100 Hz");break;
                   case 3: tft.setCursor(220,180);tft.print("200 Hz");break;}w17=0;}
  if(w18==1){tft.setTextColor(TFT_WHITE);
    switch(sub_f){case 0: tft.setCursor(220,195);tft.print(" FLAT  ");break;
                  case 1: tft.setCursor(220,195);tft.print(" 80 Hz ");break;
                  case 2: tft.setCursor(220,195);tft.print("120 Hz");break;
                  case 3: tft.setCursor(220,195);tft.print("160 Hz");break;}w18=0;}
  if(w19==1){tft.setTextColor(TFT_WHITE);
    switch(mid_q){case 0: tft.setCursor(240,210);tft.print("0.5 ");break;
                  case 1: tft.setCursor(240,210);tft.print("0.75");break;
                  case 2: tft.setCursor(240,210);tft.print("1.0 ");break;
                  case 3: tft.setCursor(240,210);tft.print("1.25");break;}w19=0;}
  if(w20==1){tft.setTextColor(255,255,255);
    switch(bass_q){case 0: tft.setCursor(240,225);tft.print("1.0 ");break;
                   case 1: tft.setCursor(240,225);tft.print("1.25");break;
                   case 2: tft.setCursor(240,225);tft.print("1.5 ");break;
                   case 3: tft.setCursor(240,225);tft.print("2.0 ");break;}w20=0;}
  if(w21==1){tft.setTextColor(TFT_WHITE);
    switch(phase){case 0: tft.setCursor(240,240);tft.print("180");break;
                 case 1: tft.setCursor(240,240);tft.print("  0");break;}w21=0;}

     ///////////////////// EEPROM /////////////////////////////////////////////
 if(millis()>10000&&w==1){ inn();
     EEPROM.write(0,vol+79);EEPROM.write(1,treb+15);EEPROM.write(2,treb_f);EEPROM.write(3,mid+15);EEPROM.write(4,mid_f);EEPROM.write(5,bass+15);EEPROM.write(6,bass_f);
     EEPROM.write(7,loun+15);EEPROM.write(8,loun_f);EEPROM.write(9,att_lf+30);EEPROM.write(10,att_rf+30);EEPROM.write(11,att_lr+30);EEPROM.write(12,att_rr+30);
     EEPROM.write(13,att_l+30);EEPROM.write(14,att_r+30);EEPROM.write(15,sub_f);EEPROM.write(16,phase);EEPROM.write(17,bass_q);EEPROM.write(18,mid_q);
     EEPROM.write(18,mid_q);EEPROM.write(19,in0);EEPROM.write(20,vol0+15);EEPROM.write(21,vol1+15);EEPROM.write(22,vol2+15);EEPROM.write(23,vol3+15);EEPROM.write(24,vol4+15);
     EEPROM.write(25,vol5+15);
     w=0;menu=0;v0=1,v1=1,v2=1,v3=1,v4=1,v5=1,v6=1,v7=1,v8=1,v9=1,v10=1,v11=1,v12=1,v13=1,v14=1,v15=1,v16=1,v17=1,v18=1,v19=1,v20=1;y=0;xxx=1;
     }

}// loop
void screen(){ //////////// to save resources when changing when moving through parameters, update only the last two parameters
  switch(menu){
    case 0: v20=1;v0=1;v1=1; set_menu();break;
    case 1: v0=1;v1=1;v2=1; set_menu();break;
    case 2: v1=1;v2=1;v3=1; set_menu();break;
    case 3: v2=1;v3=1;v4=1; set_menu();break;
    case 4: v3=1;v4=1;v5=1; set_menu();break;
    case 5: v4=1;v5=1;v6=1; set_menu();break;
    case 6: v5=1;v6=1;v7=1; set_menu();break;
    case 7: v6=1;v7=1;v8=1; set_menu();break;
    case 8: v7=1;v8=1;v9=1; set_menu();break;
    case 9: v8=1;v9=1;v10=1; set_menu();break;
    case 10: v9=1;v10=1;v11=1; set_menu();break;
    case 11: v10=1;v11=1;v12=1; set_menu();break;
    case 12: v11=1;v12=1;v13=1; set_menu();break;
    case 13: v12=1;v13=1;v14=1; set_menu();break;
    case 14: v13=1;v14=1;v15=1; set_menu();break;
    case 15: v14=1;v15=1;v16=1; set_menu();break;
    case 16: v15=1;v16=1;v17=1; set_menu();break;
    case 17: v16=1;v17=1;v18=1; set_menu();break;
    case 18: v17=1;v18=1;v19=1; set_menu();break;
    case 19: v18=1;v19=1;v20=1; set_menu();break;
    case 20: v19=1;v20=1;v0=1; set_menu();break;
    }
  }
//////////////////// menu navigation function
 void set_menu(){if(xxx==0){newPosition1 = myEnc.read()/4;
      if (newPosition1 != oldPosition1) {
      oldPosition1 = newPosition1;
      menu=menu+newPosition1;myEnc.write(0);newPosition1=0;millis();w=1;screen();if(menu>20){menu=0;}if(menu<0){menu=20;}}}else{if(k==1);k=0;}
      }

void set_vol_att(){switch(in){case 0: vol_att = vol0;break;case 1: vol_att = vol1;break;case 2: vol_att = vol2;break;
                               case 4: vol_att = vol5;break;case 5: vol_att = vol3;break;case 6: vol_att = vol4;break;}}
void inn(){if(in0==3){in=6;}else{in=in0;}}

void audio(){
tda.setInput(in,1,1,2); // 0...7, 0...1, 0...1, 0...7
tda.setInput_2(0,0,1,1,1,1); // 0...7, 0...1, 0...1, 0...1, 0...1, 0...1 
tda.setMix_source(7,0); // 0...7, 0...-31
tda.setMix_cont(1,1,1,1,1,1,1,1); // all 0...1
tda.setMute(1,0,0,1,0,1,1); // 0...1, 0...1, 0...3, 0...1, 0...1, 0...1, 0...1
tda.setSoft_1(1,1,1,1,1,1,1,1); //all 0...1
tda.setSoft_2(1,1,1,1,0,3); // 0...1, 0...1, 0...1, 0...1, 0...2, 0...3
tda.setLoudness(loun,loun_f,1,1); // 0...-15, 0...3, 0...1, 0...1 
tda.setVol(vol_att,1,1); // -15...+15, 0...1, 0...1
tda.setTreble(treb,treb_f,1); // -15...+15, 0...3, 0...1
tda.setMiddle(mid,mid_q,1); // -15...+15, 0...3, 0...1
tda.setBass(bass,bass_q,1); // -15...+15, 0...3, 0...1
tda.setSMB(sub_f,phase,mid_f,bass_f,1); // 0...3, 0...1, 0...3, 0...3, 0...1
tda.setVol_LF(vol+att_lf,1); // 0...-79, 0...1
tda.setVol_RF(vol+att_rf,1); // 0...-79, 0...1
tda.setVol_LR(vol+att_lr,1); // 0...-79, 0...1
tda.setVol_RR(vol+att_rr,1); // 0...-79, 0...1
tda.setVol_SUB_L(vol+att_l,1); // 0...-79, 0...1
tda.setVol_SUB_R(vol+att_r,1); // 0...-79, 0...1
tda.setTest1(0,14,1,1); // 0...1, 0...15, 0...1, 0...1
tda.setTest2(0,1,1,3); // 0...1, 0...1, 0...1, 0...3
}

2

Re: ESP32-C3 TDA7719 TFT9341

Hello everyone.
After some free time, I modified the program and the result is a screen image and color adjustments.
However, the encoder control isn't working. However, pressing the switch button seems to work. Turning left and right doesn't work. I'm not sure where to connect. Please advise.
As shown in the circuit diagram, I'm using an ESPC32C3 + ILI9341.
Regards.

#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>
#include <TDA7719.h>
#include <Encoder.h>
#include <EEPROM.h>
//#include <MsTimer2.h>
#include <ezButton.h>  // the library to use for SW pin
//#include <Servo.h>
#include "Free_Fonts.h"

//#define TFT_MOSI  PIN_D7  // 20
//#define TFT_SCLK  PIN_D8  // 8
//#define TFT_CS    PIN_D6  // 21 Chip select control
//#define TFT_DC    PIN_D2  // 4 Data Command control pin
//#define TFT_RST   PIN_D3  // 5
#define SDA GPIO8  // D4
#define SCL GPIO9  // D5

TDA7719 tda;
TFT_eSPI tft = TFT_eSPI();       // Invoke custom library
Encoder myEnc(10, 1);//CLK, DT encoder connection

int k=1,i,q=1,y=1,w1=1,w2=1,w3=1,w4=1,w5=1,w6=1,w7=1,w8=1,w9=1,w10=1,w11=1,w12=1,w13=1,w14=1,w15=1,w16=1,w17=1,w18=1,w19=1,w20=1,w21=1;
int v0=1,v1=1,v2=1,v3=1,v4=1,v5=1,v6=1,v7=1,v8=1,v9=1,v10=1,v11=1,v12=1,v13=1,v14=1,v15=1,v16=1,v17=1,v18=1,v19=1,v20=1;
int w=1,ccc,xxx=1,menu=0,menu_old,vol,in,in0,loun,loun_f,vol_att,treb,treb_f,mid,mid_q,bass,bass_q,sub_f,phase,mid_f,bass_f,att_lf,att_rf,att_lr,att_rr,att_l,att_r,vol0,vol1,vol2,vol3,vol4,vol5;
unsigned long newPosition,oldPosition  = -999,newPosition1,oldPosition1  = -999;

//byte power;
//long time0,times1;

// Rotary Encoder Inputs
#define CLK_PIN 10  // ESP32 pin GPIO10 connected to the rotary encoder's CLK pin
#define DT_PIN 1   // ESP32 pin GPIO1 connected to the rotary encoder's DT pin
#define SW_PIN 0   // ESP32 pin GPIO0 connected to the rotary encoder's SW pin

#define DIRECTION_CW 0   // clockwise direction
#define DIRECTION_CCW 1  // counter-clockwise direction

volatile int counter = 0;
volatile int direction = DIRECTION_CW;
volatile unsigned long last_time;  // for debouncing
int prev_counter;
//int direction = DIRECTION_CW;
int CLK_state;
int prev_CLK_state;

ezButton button(SW_PIN);  // create ezButton object that attach to pin 7;

void IRAM_ATTR ISR_encoder() {
  if ((millis() - last_time) < 50)  // debounce time is 50ms
    return;

  if (digitalRead(DT_PIN) == HIGH) {
    // the encoder is rotating in counter-clockwise direction => decrease the counter
    counter--;
    direction = DIRECTION_CCW;
  } else {
    // the encoder is rotating in clockwise direction => increase the counter
    counter++;
    direction = DIRECTION_CW;
  }

  last_time = millis();
}

void setup(void) {
   Serial.begin(9600);
  
  // configure encoder pins as inputs
   pinMode (CLK_PIN,INPUT);
   pinMode (DT_PIN,INPUT);
   //pinMode (SW, INPUT);

   // read the initial state of the rotary encoder's CLK pin
  prev_CLK_state = digitalRead(CLK_PIN);

   button.setDebounceTime(100);  // set debounce time to 50 milliseconds

   // use interrupt for CLK pin is enough
  // call ISR_encoder() when CLK pin changes from LOW to HIGH
  attachInterrupt(digitalPinToInterrupt(CLK_PIN), ISR_encoder, RISING);

   vol = EEPROM.read(0)-79;treb = EEPROM.read(1)-15;treb_f = EEPROM.read(2);mid = EEPROM.read(3)-15;mid_f = EEPROM.read(4);bass = EEPROM.read(5)-15;bass_f = EEPROM.read(6);
   loun = EEPROM.read(7)-15;loun_f = EEPROM.read(8);att_lf=EEPROM.read(9)-30;att_rf=EEPROM.read(10)-30;att_lr=EEPROM.read(11)-30;att_rr=EEPROM.read(12)-30;
   att_l=EEPROM.read(13)-30;att_r=EEPROM.read(14)-30;sub_f=EEPROM.read(15);phase=EEPROM.read(16);bass_q=EEPROM.read(17);mid_q=EEPROM.read(18);
   in0=EEPROM.read(19);vol0=EEPROM.read(20)-15;vol1=EEPROM.read(21)-15;vol2=EEPROM.read(22)-15;vol3=EEPROM.read(23)-15;vol4=EEPROM.read(24)-15;inn();vol5=EEPROM.read(25)-15;inn();
   delay(300);audio();// we transfer all settings from memory to tda

  tft.begin();
  //tft.init();
  tft.fillScreen(TFT_BLACK);
  tft.setRotation(1);
  for(int i=0; i<2; i++){                                                
    tft.drawRect(0+i,0+i,319-i*2,239-i*2,TFT_PURPLE);}      //draw the outer border (0+i,0+i,319-i*2,239-i*2)
    tft.drawRoundRect(10,10,299,219,8,TFT_OLIVE);             //draw an inner border with rounded corners

  //tft.fillScreen(TFT_BLACK);
  tft.setFreeFont(FSB12);
  //tft.setTextSize(3);
  tft.setTextColor(TFT_SKYBLUE);
  tft.setCursor(35, 80);
  tft.print("AUDIO PROCEESOR");
  tft.setTextColor(TFT_GREEN);
  tft.setCursor(60, 120);
  tft.print("TONE CONTROL");
  tft.setTextColor(TFT_VIOLET);
  tft.setCursor(120, 160);
  tft.print("HI-END");
  delay(5000);
  tft.fillScreen(0x10cb);

}
//void to_Timer(){newPosition = myEnc.read()/4;} // interrupt function
void loop() {
  button.loop();  // MUST call the loop() function first
  // read the current state of the rotary encoder's CLK pin
  CLK_state = digitalRead(CLK_PIN);

  if (button.isPressed()) {
    Serial.println("The button is pressed");
  }

     if(digitalRead(SW_PIN)==LOW){xxx++;myEnc.write(0);millis();delay(200);screen();k=1;if(xxx>1){xxx=0;}}// encoder button activation analogRead
   //tft.setTextSize(1);
   tft.setFreeFont(&FreeSans9pt7b);
   set_menu();
  /////////////////////////////////////////// processing encoder commands  
    if(menu==0&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      vol=vol+newPosition;myEnc.write(0);newPosition=0;w=1;w1=1;if(vol>0){vol=0;}if(vol<-79){vol=-79;}audio();}}
    if(menu==1&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      treb=treb+newPosition;myEnc.write(0);newPosition=0;w=1;w2=1;if(treb>15){treb=15;}if(treb<-15){treb=-15;}audio();}}
    if(menu==2&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      mid=mid+newPosition;myEnc.write(0);newPosition=0;w=1;w3=1;if(mid>15){mid=15;}if(mid<-15){mid=-15;}audio();}}
    if(menu==3&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      bass=bass+newPosition;myEnc.write(0);newPosition=0;w=1;w4=1;if(bass>15){bass=15;}if(bass<-15){bass=-15;}audio();}}
    if(menu==4&&xxx==1){
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      in0=in0+newPosition;myEnc.write(0);newPosition=0;w=1;w5=1;w6=1;if(in0>5){in0=0;}if(in0<0){in0=5;}
         inn();set_vol_att();audio();}}
         inn();set_vol_att();
    if(menu==5&&xxx==1){inn();
         set_vol_att();
      if (newPosition != oldPosition) {
      oldPosition = newPosition;
      vol_att=vol_att+newPosition;myEnc.write(0);newPosition=0;w=1;w6=1;w5=1;if(vol_att<-15){vol_att=-15;}if(vol_att>15){vol_att=15;}audio();}inn();  
      switch(in){case 0: vol0 = vol_att;break;case 1: vol1 = vol_att;break;case 2: vol2 = vol_att;break;case 4: vol5=vol_att;break;case 5: vol3 = vol_att;break;case 6: vol4 = vol_att;break;}}
    if(menu==6&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_lf=att_lf+newPosition;myEnc.write(0);newPosition=0;w=1;w7=1;if(att_lf>0){att_lf=0;}if(att_lf<-30){att_lf=-30;}audio();}}  
   if(menu==7&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_rf=att_rf+newPosition;myEnc.write(0);newPosition=0;w=1;w8=1;if(att_rf>0){att_rf=0;}if(att_rf<-30){att_rf=-30;}audio();}} 
   if(menu==8&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_lr=att_lr+newPosition;myEnc.write(0);newPosition=0;w=1;w9=1;if(att_lr>0){att_lr=0;}if(att_lr<-30){att_lr=-30;}audio();}}
   if(menu==9&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_rr=att_rr+newPosition;myEnc.write(0);newPosition=0;w=1;w10=1;if(att_rr>0){att_rr=0;}if(att_rr<-30){att_rr=-30;}audio();}}
   if(menu==10&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_l=att_l+newPosition;myEnc.write(0);newPosition=0;w=1;w11=1;if(att_l>0){att_l=0;}if(att_l<-30){att_l=-30;}audio();}}
   if(menu==11&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       att_r=att_r+newPosition;myEnc.write(0);newPosition=0;w=1;w12=1;if(att_r>0){att_r=0;}if(att_r<-30){att_r=-30;}audio();}}
   if(menu==12&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       loun_f=loun_f+newPosition;myEnc.write(0);newPosition=0;w=1;w13=1;if(loun_f>3){loun_f=0;}if(loun_f<0){loun_f=3;}audio();}} 
   if(menu==13&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       loun=loun+newPosition;myEnc.write(0);newPosition=0;w=1;w14=1;if(loun>0){loun=0;}if(loun<-15){loun=-15;}audio();}}
   if(menu==14&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       treb_f=treb_f+newPosition;myEnc.write(0);newPosition=0;w=1;w15=1;if(treb_f>3){treb_f=0;}if(treb_f<0){treb_f=3;}audio();}}
   if(menu==15&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       mid_f=mid_f+newPosition;myEnc.write(0);newPosition=0;w=1;w16=1;if(mid_f>3){mid_f=0;}if(mid_f<0){mid_f=3;}audio();}}
   if(menu==16&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       bass_f=bass_f+newPosition;myEnc.write(0);newPosition=0;w=1;w17=1;if(bass_f>3){bass_f=0;}if(bass_f<0){bass_f=3;}audio();}}
   if(menu==17&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       sub_f=sub_f+newPosition;myEnc.write(0);newPosition=0;w=1;w18=1;if(sub_f>3){sub_f=0;}if(sub_f<0){sub_f=3;}audio();}}
   if(menu==18&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       mid_q=mid_q+newPosition;myEnc.write(0);newPosition=0;w=1;w19=1;if(mid_q>3){mid_q=0;}if(mid_q<0){mid_q=3;}audio();}}
   if(menu==19&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       bass_q=bass_q+newPosition;myEnc.write(0);newPosition=0;w=1;w20=1;if(bass_q>3){bass_q=0;}if(bass_q<0){bass_q=3;}audio();}}
   if(menu==20&&xxx==1){
       if (newPosition != oldPosition) {
       oldPosition = newPosition;
       phase=phase+newPosition;myEnc.write(0);newPosition=0;w=1;w21=1;if(phase>1){phase=0;}if(phase<0){phase=1;}audio();}}

   set_menu();
    ///// Output of tda adjustment names
          if(v0==1){   if(menu==0) if(xxx==1)tft.setTextColor(TFT_PURPLE);
                       else tft.setTextColor(TFT_WHITE); // 0xf5,0xe0,0x12
                       else tft.setTextColor(TFT_BLUE);tft.setCursor(5,13);tft.print("VOLUME");tft.setCursor(290,13);tft.print("dB");  v0=0;}
          if(v1==1){   if(menu==1) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_YELLOW);tft.setCursor(5,30);tft.print("TREBLE");tft.setCursor(290,30);tft.print("dB"); v1=0;}
          if(v2==1){   if(menu==2) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_GREEN);tft.setCursor(5,45);tft.print("MIDDLE");tft.setCursor(290,45);tft.print("dB");v2=0;}
          if(v3==1){   if(menu==3) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_RED);tft.setCursor(5,60);tft.print("BASS  ");tft.setCursor(290,60);tft.print("dB");v3=0;}
          if(v4==1){   if(menu==4) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(255,255,255);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,75);tft.print("IN ");v4=0;}
          if(v5==1){   if(menu==5) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(160,75);tft.print("ATT");tft.setCursor(290,75);tft.print("dB");v5=0;}
          if(v6==1){   if(menu==6) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,90);tft.print("ATT LF");v6=0;}
          if(v7==1){   if(menu==7) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(255,255,255);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(160,90);tft.print("ATT RF");v7=0;}
          if(v8==1){   if(menu==8) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,105);tft.print("ATT LR");v8=0;}
          if(v9==1){   if(menu==9) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                       else tft.setTextColor(TFT_WHITE);
                       else tft.setTextColor(TFT_OLIVE);tft.setCursor(160,105);tft.print("ATT RR");v9=0;}
          if(v10==1){ if(menu==10) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,120);tft.print("ATT SL");v10=0;}
          if(v11==1){ if(menu==11) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(160,120);tft.print("ATT SR");v11=0;}
          if(v12==1){ if(menu==12) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,135);tft.print("LN");v12=0;}
          if(v13==1){ if(menu==13) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(180,135);tft.print("ATT");v13=0;}
          if(v14==1){ if(menu==14) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,150);tft.print("Treb CF");v14=0;}
          if(v15==1){ if(menu==15) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(128, 128, 0);tft.setCursor(5,165);tft.print("Midd CF");v15=0;}
          if(v16==1){ if(menu==16) if(xxx==1)tft.setTextColor(TFT_ORANGE);
                      else tft.setTextColor(TFT_WHITE);
                      else{tft.setTextColor(TFT_OLIVE);}tft.setCursor(5,180);tft.print("Bass CF");v16=0;}
          if(v17==1){ if(menu==17) if(xxx==1)tft.setTextColor(0,165,255);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,195);tft.print("Subw CF");v17=0;}
          if(v18==1){ if(menu==18) if(xxx==1)tft.setTextColor(TFT_PURPLE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,210);tft.print("Midd QF");v18=0;}
          if(v19==1){ if(menu==19) if(xxx==1)tft.setTextColor(TFT_PURPLE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,225);tft.print("Bass QF");v19=0;}
          if(v20==1){ if(menu==20) if(xxx==1)tft.setTextColor(TFT_PURPLE);
                      else tft.setTextColor(TFT_WHITE);
                      else tft.setTextColor(TFT_OLIVE);tft.setCursor(5,240);tft.print("Phase Sub");v20=0;}
     set_menu();
///////////////////output of numerical values of parameters
  if(w1==1){tft.setTextColor(TFT_BLUE);tft.fillRect(100,1,100,12,TFT_BLUE); // x,y,w h // drawLine X1,Y1,X2,Y2
   //ucg.setColor(0,0,0);ucg.drawBox(100,1,80,12);
   tft.setTextColor(TFT_WHITE);tft.setCursor(230,15);tft.print(vol);w1=0;}
  if(w2==1){tft.setTextColor(TFT_YELLOW);tft.drawRect(100,16,100,12,TFT_YELLOW);   //ucg.setColor(150+treb*5,150+treb*4,0);ucg.drawLine(110,27,56+treb*4+109,17);
   //ucg.setColor(0,0,0);ucg.drawBox(67+treb*2+110,16,80+treb*2+110,12);
   tft.setTextColor(TFT_WHITE);tft.setCursor(230,30);tft.print(treb);tft.print(" ");w2=0;}
  if(w3==1){tft.setTextColor(TFT_GREEN);tft.drawRect(100,31,100,12,TFT_GREEN); ///ucg.setColor(0,150+mid*5,0);ucg.drawLine(110,42,56+mid*4+109,32);
   //ucg.setColor(0,0,0);ucg.drawLine(57+mid*4+109,42,80+mid*4+109,32);
   tft.setTextColor(TFT_WHITE);tft.setCursor(230,45);tft.print(mid);tft.print(" ");w3=0;}
  if(w4==1){tft.setTextColor(TFT_RED);tft.drawRect(100,46,100,12,TFT_RED); //ucg.setColor(150+bass*5,0,0);ucg.drawLine(110,57,56+bass*4+109,47);
   //ucg.setColor(0,0,0);ucg.drawLine(57+bass*5+109,57,80+bass*4+109,47);
   tft.setTextColor(TFT_WHITE);tft.setCursor(230,60);tft.print(bass);tft.print(" ");w4=0;}
  if(w5==1){tft.setTextColor(TFT_WHITE);  //myGLCD.printNumI(in0,60, 75,1);}
     switch(in0){
      case 0: tft.setCursor(50,75);tft.print("BT_IN");break;
      case 1: tft.setCursor(50,75);tft.print("CD_IN");break;
      case 2: tft.setCursor(50,75);tft.print("TV_IN");break;
      case 3: tft.setCursor(50,75);tft.print("PHONO");break;
      case 4: tft.setCursor(50,75);tft.print("AUX1 ");break;
      case 5: tft.setCursor(50,75);tft.print("AUX2 ");break;
     }
  }  
  if(w5==1||w6==1){tft.setTextColor(TFT_WHITE);tft.setCursor(225,75);tft.print(vol_att);tft.print(" ");w6=0;w5=0;}
  if(w7==1){tft.setTextColor(TFT_WHITE);tft.setCursor(100,90);tft.print(att_lf);tft.print(" ");w7=0;}
  if(w8==1){tft.setTextColor(TFT_WHITE);tft.setCursor(265,90);tft.print(att_rf);tft.print(" ");w8=0;}
  if(w9==1){tft.setTextColor(TFT_WHITE);tft.setCursor(100,105);tft.print(att_lr);tft.print(" ");w9=0;}
  if(w10==1){tft.setTextColor(TFT_WHITE);tft.setCursor(265,105);tft.print(att_rr);tft.print(" ");w10=0;}
  if(w11==1){tft.setTextColor(TFT_WHITE);tft.setCursor(100,120);tft.print(att_l);tft.print(" ");w11=0;}
  if(w12==1){tft.setTextColor(TFT_WHITE);tft.setCursor(265,120);tft.print(att_r);tft.print(" ");w12=0;}
  if(w13==1){tft.setTextColor(TFT_WHITE);
   switch(loun_f){case 0: tft.setCursor(50,135);tft.print(" FLAT  ");break;
                  case 1: tft.setCursor(50,135);tft.print("400 Hz ");break;
                  case 2: tft.setCursor(50,135);tft.print("800 Hz ");break;
                  case 3: tft.setCursor(50,135);tft.print("2.4 kHz");break;};w13=0;}
  if(w14==1){tft.setTextColor(TFT_WHITE);tft.setCursor(265,135);tft.print(loun);tft.print(" ");w14=0;}
  if(w15==1){tft.setTextColor(TFT_WHITE);
    switch(treb_f){case 0: tft.setCursor(210,150);tft.print("10.0 kHz");break;
                   case 1: tft.setCursor(210,150);tft.print("12.5 kHz");break;
                   case 2: tft.setCursor(210,150);tft.print("15.0 kHz");break;
                   case 3: tft.setCursor(210,150);tft.print("17.5 kHz");break;}w15=0;}
  if(w16==1){tft.setTextColor(TFT_WHITE);
    switch(mid_f){case 0: tft.setCursor(220,165);tft.print("0.5 kHz");break;
                  case 1: tft.setCursor(220,165);tft.print("1.0 kHz");break;
                  case 2: tft.setCursor(220,165);tft.print("1.5 kHz");break;
                  case 3: tft.setCursor(220,165);tft.print("2.5 kHz");break;}w16=0;}
  if(w17==1){tft.setTextColor(TFT_WHITE);
    switch(bass_f){case 0: tft.setCursor(220,180);tft.print(" 60 Hz");break;
                   case 1: tft.setCursor(220,180);tft.print(" 80 Hz");break;
                   case 2: tft.setCursor(220,180);tft.print("100 Hz");break;
                   case 3: tft.setCursor(220,180);tft.print("200 Hz");break;}w17=0;}
  if(w18==1){tft.setTextColor(TFT_WHITE);
    switch(sub_f){case 0: tft.setCursor(220,195);tft.print(" FLAT  ");break;
                  case 1: tft.setCursor(220,195);tft.print(" 80 Hz ");break;
                  case 2: tft.setCursor(220,195);tft.print("120 Hz");break;
                  case 3: tft.setCursor(220,195);tft.print("160 Hz");break;}w18=0;}
  if(w19==1){tft.setTextColor(TFT_WHITE);
    switch(mid_q){case 0: tft.setCursor(240,210);tft.print("0.5 ");break;
                  case 1: tft.setCursor(240,210);tft.print("0.75");break;
                  case 2: tft.setCursor(240,210);tft.print("1.0 ");break;
                  case 3: tft.setCursor(240,210);tft.print("1.25");break;}w19=0;}
  if(w20==1){tft.setTextColor(255,255,255);
    switch(bass_q){case 0: tft.setCursor(240,225);tft.print("1.0 ");break;
                   case 1: tft.setCursor(240,225);tft.print("1.25");break;
                   case 2: tft.setCursor(240,225);tft.print("1.5 ");break;
                   case 3: tft.setCursor(240,225);tft.print("2.0 ");break;}w20=0;}
  if(w21==1){tft.setTextColor(TFT_WHITE);
    switch(phase){case 0: tft.setCursor(240,240);tft.print("180");break;
                 case 1: tft.setCursor(240,240);tft.print("  0");break;}w21=0;}

     ///////////////////// EEPROM /////////////////////////////////////////////
 if(millis()>10000&&w==1){ inn();
     EEPROM.write(0,vol+79);EEPROM.write(1,treb+15);EEPROM.write(2,treb_f);EEPROM.write(3,mid+15);EEPROM.write(4,mid_f);EEPROM.write(5,bass+15);EEPROM.write(6,bass_f);
     EEPROM.write(7,loun+15);EEPROM.write(8,loun_f);EEPROM.write(9,att_lf+30);EEPROM.write(10,att_rf+30);EEPROM.write(11,att_lr+30);EEPROM.write(12,att_rr+30);
     EEPROM.write(13,att_l+30);EEPROM.write(14,att_r+30);EEPROM.write(15,sub_f);EEPROM.write(16,phase);EEPROM.write(17,bass_q);EEPROM.write(18,mid_q);
     EEPROM.write(18,mid_q);EEPROM.write(19,in0);EEPROM.write(20,vol0+15);EEPROM.write(21,vol1+15);EEPROM.write(22,vol2+15);EEPROM.write(23,vol3+15);EEPROM.write(24,vol4+15);
     EEPROM.write(25,vol5+15);
     w=0;menu=0;v0=1,v1=1,v2=1,v3=1,v4=1,v5=1,v6=1,v7=1,v8=1,v9=1,v10=1,v11=1,v12=1,v13=1,v14=1,v15=1,v16=1,v17=1,v18=1,v19=1,v20=1;y=0;xxx=1;
     }

}// loop
void screen(){ //////////// to save resources when changing when moving through parameters, update only the last two parameters
  switch(menu){
    case 0: v20=1;v0=1;v1=1; set_menu();break;
    case 1: v0=1;v1=1;v2=1; set_menu();break;
    case 2: v1=1;v2=1;v3=1; set_menu();break;
    case 3: v2=1;v3=1;v4=1; set_menu();break;
    case 4: v3=1;v4=1;v5=1; set_menu();break;
    case 5: v4=1;v5=1;v6=1; set_menu();break;
    case 6: v5=1;v6=1;v7=1; set_menu();break;
    case 7: v6=1;v7=1;v8=1; set_menu();break;
    case 8: v7=1;v8=1;v9=1; set_menu();break;
    case 9: v8=1;v9=1;v10=1; set_menu();break;
    case 10: v9=1;v10=1;v11=1; set_menu();break;
    case 11: v10=1;v11=1;v12=1; set_menu();break;
    case 12: v11=1;v12=1;v13=1; set_menu();break;
    case 13: v12=1;v13=1;v14=1; set_menu();break;
    case 14: v13=1;v14=1;v15=1; set_menu();break;
    case 15: v14=1;v15=1;v16=1; set_menu();break;
    case 16: v15=1;v16=1;v17=1; set_menu();break;
    case 17: v16=1;v17=1;v18=1; set_menu();break;
    case 18: v17=1;v18=1;v19=1; set_menu();break;
    case 19: v18=1;v19=1;v20=1; set_menu();break;
    case 20: v19=1;v20=1;v0=1; set_menu();break;
    }
  }
//////////////////// menu navigation function
 void set_menu(){if(xxx==0){newPosition1 = myEnc.read()/4;
      if (newPosition1 != oldPosition1) {
      oldPosition1 = newPosition1;
      menu=menu+newPosition1;myEnc.write(0);newPosition1=0;millis();w=1;screen();if(menu>20){menu=0;}if(menu<0){menu=20;}}}else{if(k==1);k=0;}
      }

void set_vol_att(){switch(in){case 0: vol_att = vol0;break;case 1: vol_att = vol1;break;case 2: vol_att = vol2;break;
                               case 4: vol_att = vol5;break;case 5: vol_att = vol3;break;case 6: vol_att = vol4;break;}}
void inn(){if(in0==3){in=6;}else{in=in0;}}

void audio(){
tda.setInput(in,1,1,2); // 0...7, 0...1, 0...1, 0...7
tda.setInput_2(0,0,1,1,1,1); // 0...7, 0...1, 0...1, 0...1, 0...1, 0...1 
tda.setMix_source(7,0); // 0...7, 0...-31
tda.setMix_cont(1,1,1,1,1,1,1,1); // all 0...1
tda.setMute(1,0,0,1,0,1,1); // 0...1, 0...1, 0...3, 0...1, 0...1, 0...1, 0...1
tda.setSoft_1(1,1,1,1,1,1,1,1); //all 0...1
tda.setSoft_2(1,1,1,1,0,3); // 0...1, 0...1, 0...1, 0...1, 0...2, 0...3
tda.setLoudness(loun,loun_f,1,1); // 0...-15, 0...3, 0...1, 0...1 
tda.setVol(vol_att,1,1); // -15...+15, 0...1, 0...1
tda.setTreble(treb,treb_f,1); // -15...+15, 0...3, 0...1
tda.setMiddle(mid,mid_q,1); // -15...+15, 0...3, 0...1
tda.setBass(bass,bass_q,1); // -15...+15, 0...3, 0...1
tda.setSMB(sub_f,phase,mid_f,bass_f,1); // 0...3, 0...1, 0...3, 0...3, 0...1
tda.setVol_LF(vol+att_lf,1); // 0...-79, 0...1
tda.setVol_RF(vol+att_rf,1); // 0...-79, 0...1
tda.setVol_LR(vol+att_lr,1); // 0...-79, 0...1
tda.setVol_RR(vol+att_rr,1); // 0...-79, 0...1
tda.setVol_SUB_L(vol+att_l,1); // 0...-79, 0...1
tda.setVol_SUB_R(vol+att_r,1); // 0...-79, 0...1
tda.setTest1(0,14,1,1); // 0...1, 0...15, 0...1, 0...1
tda.setTest2(0,1,1,3); // 0...1, 0...1, 0...1, 0...3
}

http://forum.rcl-radio.ru/uploads/images/2025/08/9889ca223332a351614dfaad1b120230.jpg