51

Re: PT2314

Я не вижу ошибок, опубликуйте весь скетч который Вы используете.

52

Re: PT2314

#define IR_1 0x807F6897 // Кнопка вверх
#define IR_2 0x807F58A7 // Кнопка вниз
#define IR_3 0x807F0AF5 // Кнопка >
#define IR_4 0x807F8A75 // Кнопка <
#define IR_5 0x807F9867 // Кнопка IN
#define IR_6 0x807FC837 // Кнопка SET
#define IR_7 0x807F827D // Кнопка MUTE
#define IR_8 0x807F02FD // Кнопка STANDBY (POWER)
#define IR_9 0x807F728D // Кнопка сон 10 минут
//#define IR_10 0x807FB04F // Кнопка сон 20 минут
//#define IR_11 0x807F30CF // Кнопка сон 30 минут
#define BRIG 100        // Яркость подсветки экрана в режиме POWER OFF (0...255)
#include <Wire.h>
#include <PT2314.h>            // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=434&download=1
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip       
#include <EEPROM.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <DS3231.h>            // https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
DS3231 clock; RTCDateTime DateTime;
unsigned long times_son;
bool son_k,son;
PT2314 pt;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Устанавливаем дисплей
IRrecv irrecv(12); // указываем вывод модуля IR приемника
Encoder myEnc(8, 9);// DT, CLK
decode_results ir;
byte v1[8] = {0b00111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111};
byte v2[8] = {0b00111, 0b00111, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000};
byte v3[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111};
byte v4[8] = {0b11111, 0b11111, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111};
byte v5[8] = {0b11100, 0b11100, 0b00000, 0b00000, 0b00000, 0b00000, 0b11100, 0b11100};
byte v6[8] = {0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100};
byte v7[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00111, 0b00111};
byte v8[8] = {0b11111, 0b11111, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000};
byte a[6], d1, d2, d3, d4, d5, d6, e1, e2, e3, w, w2, i, www, power, save, gr1, gr2;
int menu, menu0, menu1 = 1, menu2 = 0, vol, bass, treb, att_l, att_r, in, loud_on, gain0, gain1, gain2, gain3, gain4, mute, mute1, mute2, brig, hour, minut, secon;
unsigned long times, oldPosition  = -999, newPosition;
void setup() {
  irrecv.enableIRIn(); lcd.init(); lcd.backlight(); clock.begin(); Serial.begin(9600);
  pinMode(10, INPUT); // МЕНЮ КНОПКА SW энкодера
  pinMode(2, INPUT);  // КНОПКА SET
  pinMode(3, INPUT);  // КНОПКА IN
  pinMode(4, INPUT);  // КНОПКА MUTE
  pinMode(5, INPUT);  // КНОПКА STANDBY
  pinMode(7, OUTPUT); // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6, OUTPUT); // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  analogWrite(6, 255);
  lcd.setCursor(0, 0); lcd.print("AmplifieR ClassA"); lcd.setCursor(0, 1); lcd.print("    JLH 1969"); delay(2000); lcd.clear();
  MsTimer2::set(1, to_Timer); MsTimer2::start();
  //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  lcd.createChar(1, v1); lcd.createChar(2, v2); lcd.createChar(3, v3); lcd.createChar(4, v4);
  lcd.createChar(5, v5); lcd.createChar(6, v6); lcd.createChar(7, v7); lcd.createChar(8, v8);
  if (EEPROM.read(100) != 0) {
    for (int i = 0; i < 101; i++) {
      EEPROM.update(i, 0); // очистка памяти при первом включении
    }
  }
  vol = EEPROM.read(0); treb = EEPROM.read(1) - 7; bass = EEPROM.read(2) - 7; in = EEPROM.read(3);
  att_l = EEPROM.read(4); att_r = EEPROM.read(5); gain1 = EEPROM.read(6); gain2 = EEPROM.read(7);
  gain3 = EEPROM.read(8); gain4 = EEPROM.read(9); loud_on = EEPROM.read(10); brig = EEPROM.read(11);
  audio();
  analogWrite(6, brig);
}

void loop() {
  DateTime = clock.getDateTime(); hour = DateTime.hour; minut = DateTime.minute; secon = DateTime.second;

  ////////////////////// IR ///////////////////////////////////////////////////////////////
  if ( irrecv.decode( &ir )) {
    Serial.print("0x");  // IR приемник - чтение, в мониторе порта отображаются коды кнопок
    Serial.println( ir.value, HEX);
    irrecv.resume();
    times = millis();
    w = 1;
  }
  if (ir.value == 0) {
    gr1 = 0;  // запрет нажатий не активных кнопок пульта
    gr2 = 0;
  }

  if (mute == 0 && power == 0) {
    if (ir.value == IR_6 && menu1 == 1) {
      menu1 = 0;
      menu2 = 1;
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("SYSTEM");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }
    if (ir.value == IR_6 && menu2 == 1) {
      menu1 = 1;
      menu2 = 0;
      menu = 0;
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("AUDIO");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }

    if (ir.value == IR_1 && menu1 == 1) {
      menu++;  //меню 1
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu > 2) {
        menu = 0;
      }
    }
    if (ir.value == IR_2 && menu1 == 1) {
      menu--;  //меню 1
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu < 0) {
        menu = 2;
      }
    }

    if (ir.value == IR_1 && menu2 == 1) {
      menu0++;  //меню 2
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu0 > 4) {
        menu0 = 0;
      }
    }
    if (ir.value == IR_2 && menu2 == 1) {
      menu0--;  //меню 2
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu0 < 0) {
        menu0 = 4;
      }
    }

    if (ir.value == IR_5) {
      in++;  // IN
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (in > 3) {
        in = 0;
      } lcd.setCursor(4, 0);
      lcd.print("INPUT ");
      lcd.print(in + 1);
      audio();
      delay(1000);
      lcd.clear();
    }
  }

  if (ir.value == IR_7 && mute == 0 && power == 0) {
    mute = 1;  // MUTE
    pt.setAttR(31);
    pt.setAttL(31);
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.setCursor(6, 0);
    lcd.print("MUTE");
    menu1 = 100;
    menu2 = 100;
    delay(500);
  }
  if (ir.value == IR_7 && mute == 1 && power == 0) {
    mute = 0;  // MUTE
    cl();
    menu1 = 1;
    menu = 0;
    gr1 = 0;
    gr2 = 0;
    cl();
    audio();
  }

  if (ir.value == IR_8 && power == 0) {
    power = 1;  // power off
    pt.setAttR(31);
    pt.setAttL(31);
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    menu0 = 0;
    menu1 = 0;
    menu2 = 0;
    save = 1;
    analogWrite(6, BRIG);
    delay(2000);
    lcd.clear();
  }
  if (ir.value == IR_8 && power == 1) {
    power = 0;  // power on
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER   ON ");
    menu1 = 1;
    menu = 0;
    myEnc.write(0);
    audio();
    analogWrite(6, brig);
    delay(2000);
    lcd.clear();
  }
 if (ir.value == IR_9) {
    son_k = 1;
  }
  if (son_k == 0) {
  times_son = millis();
  }
  if (millis() - times_son > 600000) {                //Время таймера в милисек
    son = 1;
  }
  if ((ir.value == IR_8 && power == 0) || son == 1) {
    power = 1;  // power off
    pt.setAttR(31);
    pt.setAttL(31);
    audio();
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    menu0 = 0;
    menu1 = 0;
    menu2 = 0;
    save = 1;
    analogWrite(6, BRIG);
    delay(3000);
    lcd.clear();
  }
  if (ir.value == IR_8 && power == 1) {
    son = 0;  // power on
    son_k = 0;
    times_son = millis();
    power = 0;
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER   ON ");
    menu1 = 1;
    menu = 0;
    myEnc.write(0);
    audio();
    analogWrite(6, brig);
    delay(3000);
    lcd.clear();
  }
  /////////////////////////////////////////////////////////////////////////////////////////

  /////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////
  if (mute == 0 && power == 0) {
    if (digitalRead(2) == HIGH && menu1 == 1) {
      menu1 = 0;
      menu2 = 1;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("SYSTEM");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }
    if (digitalRead(2) == HIGH && menu2 == 1) {
      menu1 = 1;
      menu2 = 0;
      menu = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("AUDIO");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }

    if (digitalRead(10) == LOW && menu1 == 1) {
      menu++;  //меню 1
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu > 2) {
        menu = 0;
      }
    }
    if (digitalRead(10) == LOW && menu2 == 1) {
      menu0++;  //меню 2
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu0 > 4) {
        menu0 = 0;
      }
    }

    if (digitalRead(3) == HIGH) {
      in++;  // IN
      cl();;
      times = millis();
      w = 1;
      w2 = 1;
      if (in > 3) {
        in = 0;
      } lcd.setCursor(4, 0);
      lcd.print("INPUT ");
      lcd.print(in + 1);
      audio();
      delay(1000);
      lcd.clear();
    }
  }

  if (digitalRead(4) == HIGH && mute == 0 && power == 0) {
    mute = 1;  // MUTE
    pt.setAttR(31);
    pt.setAttL(31);
    cl();
    lcd.setCursor(6, 0);
    lcd.print("MUTE");
    menu1 = 100;
    menu2 = 100;
    delay(500);
  }
  if (digitalRead(4) == HIGH && mute == 1 && power == 0) {
    mute = 0;  // MUTE
    cl();
    menu1 = 1;
    menu = 0;
    cl();
    audio();
  }

  if (digitalRead(5) == HIGH && power == 0) {
    power = 1;  // power off
    pt.setAttR(31);
    pt.setAttL(31);
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    menu0 = 0;
    menu1 = 0;
    menu2 = 0;
    save = 1;
    analogWrite(6, BRIG);
    delay(3000);
    lcd.clear();
  }
  if (digitalRead(5) == HIGH && power == 1) {
    power = 0;  // power on
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER   ON ");
    menu1 = 1;
    menu = 0;
    myEnc.write(0);
    audio();
    analogWrite(6, brig);
    delay(3000);
    lcd.clear();
  }
  if (power == 0) {
    digitalWrite(7, HIGH);
  }
  //if(power==0){digitalWrite(7,LOW);}// инверсия выхода STANDBY

  if (save == 1 && w2 == 1) {
    save = 0; w2 = 0;
    EEPROM.update(0, vol); EEPROM.update(1, treb + 7); EEPROM.update(2, bass + 7); EEPROM.update(3, in);
    EEPROM.update(4, att_l); EEPROM.update(5, att_r); EEPROM.update(6, gain1); EEPROM.update(7, gain2);
    EEPROM.update(8, gain3); EEPROM.update(9, gain4); EEPROM.update(10, loud_on); EEPROM.update(11, brig);
  }
  /////////////////////////////////////////////////////////////////////////////////////////

  ////////////// VOLUME ///////////////////////////////////////////////////////////////////
  if (menu == 0 && menu1 == 1) {
    if (ir.value == IR_3) {
      vol++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      vol++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    if (ir.value == IR_4) {
      vol--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      vol--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      vol = vol + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    a[0] = vol / 10; a[1] = vol % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("IN"); lcd.print(in + 1); lcd.print("  VOL");
    if (vol < 0) {
      lcd.setCursor(9, 1);
      lcd.write((uint8_t)8);
    } else {
      lcd.setCursor(9, 1);
      lcd.print(" ");
    }
    times_f();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// BASS ///////////////////////////////////////////////////////////////////
  if (menu == 1 && menu1 == 1) {
    if (ir.value == IR_3) {
      bass++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      bass++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    if (ir.value == IR_4) {
      bass--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      bass--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      bass = bass + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    a[0] = abs(bass * 2) / 10; a[1] = abs(bass * 2) % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("BASS   dB");
    if (bass < 0) {
      lcd.setCursor(9, 1);
      lcd.write((uint8_t)8);
    } else {
      lcd.setCursor(9, 1);
      lcd.print(" ");
    }
    times_f();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// TREBLE ///////////////////////////////////////////////////////////////////
  if (menu == 2 && menu1 == 1) {
    if (ir.value == IR_3) {
      treb++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      treb++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    if (ir.value == IR_4) {
      treb--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      treb--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      treb = treb + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    a[0] = abs(treb * 2) / 10; a[1] = abs(treb * 2) % 10;

    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("TREBLE dB");
    if (treb < 0) {
      lcd.setCursor(9, 1);
      lcd.write((uint8_t)8);
    } else {
      lcd.setCursor(9, 1);
      lcd.print(" ");
    }
    times_f();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// ATT_L ///////////////////////////////////////////////////////////////////
  if (menu0 == 0 && menu2 == 1) {
    if (ir.value == IR_3) {
      att_l++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      att_l++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    if (ir.value == IR_4) {
      att_l--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      att_l--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      att_l = att_l + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    a[0] = abs(att_l) / 10; a[1] = abs(att_l) % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("ATT_L");
    lcd.setCursor(0, 1); lcd.print(-att_l * 1.25, 2); lcd.print(" "); lcd.setCursor(6, 1); lcd.print("dB");
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// ATT_R ///////////////////////////////////////////////////////////////////
  if (menu0 == 1 && menu2 == 1) {
    if (ir.value == IR_3) {
      att_r++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      att_r++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    if (ir.value == IR_4) {
      att_r--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      att_r--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      att_r = att_r + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    a[0] = abs(att_r) / 10; a[1] = abs(att_r) % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("ATT_R");
    lcd.setCursor(0, 1); lcd.print(-att_r * 1.25, 2); lcd.print(" "); lcd.setCursor(6, 1); lcd.print("dB");
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
  if (menu0 == 2 && menu2 == 1) {
    switch (in) {
      case 0: gain0 = gain1; break;
      case 1: gain0 = gain2; break;
      case 2: gain0 = gain3; break;
      case 3: gain0 = gain4; break;
    }

    if (ir.value == IR_3) {
      gain0++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      gain0++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }
    if (ir.value == IR_4) {
      gain0--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      gain0--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      gain0 = gain0 + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      www = 1;
      w = 1;
      w2 = 1;
      gain_func();
    }

    switch (in) {
      case 0: gain1 = gain0; break;
      case 1: gain2 = gain0; break;
      case 2: gain3 = gain0; break;
      case 3: gain4 = gain0; break;
    }
    a[0] = abs(gain0);

    for (i = 0; i < 1; i++) {
      switch (i) {
        case 0: e1 = 13, e2 = 14, e3 = 15;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }
    lcd.setCursor(0, 1); lcd.print("GAIN "); lcd.print(gain0 * 3.75, 2); lcd.print(" "); lcd.setCursor(10, 1); lcd.print("dB");
    if (www == 1) {
      audio();
      www = 0;
    }
    lcd.setCursor(0, 0); lcd.print("INPUT "); lcd.print(in + 1);
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// LOUDNESS ///////////////////////////////////////////////////////////////////
  if (menu0 == 3 && menu2 == 1) {
    if (ir.value == IR_3) {
      loud_on++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      loud_on++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }
    if (ir.value == IR_4) {
      loud_on--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      loud_on--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      loud_on = loud_on + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      };
      audio();
    }
    if (loud_on == 1) {
      lcd.setCursor(2, 0);
      lcd.print("LOUDNESS  ON ");
    }
    else {
      lcd.setCursor(2, 0);
      lcd.print("LOUDNESS  OFF");
    }
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// BRIGHTNESS ///////////////////////////////////////////////////////////////////
  if (menu0 == 4 && menu2 == 1) {
    if (ir.value == IR_3) {
      brig++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      brig++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    if (ir.value == IR_4) {
      brig--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      brig--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      brig = brig + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    a[0] = abs(brig) / 100; a[1] = abs(brig) / 10 % 10; a[2] = abs(brig) % 10;
    for (i = 0; i < 3; i++) {
      switch (i) {
        case 0: e1 = 7, e2 = 8, e3 = 9; break;
        case 1: e1 = 10, e2 = 11, e3 = 12; break;
        case 2: e1 = 13, e2 = 14, e3 = 15; break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("BRIGHT");
    lcd.setCursor(0, 1); lcd.print(brig * 100 / 255); lcd.print(" "); lcd.setCursor(4, 1); lcd.print("%");
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  if (millis() - times > 10000 && w == 1 && mute == 0 && power == 0) {
    w = 0;
    menu2 = 0;
    menu1 = 1;
    menu = 0;
    cl();
  }

  /////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
  if (power == 1) {
    digitalWrite(7, LOW);
    a[0] = DateTime.hour / 10;
    a[1] = DateTime.hour % 10;
    a[2] = DateTime.minute / 10;
    a[3] = DateTime.minute % 10;
    a[4] = DateTime.second / 10;
    a[5] = DateTime.second % 10;
    for (i = 0; i < 4; i++) {
      switch (i) {
        case 0: e1 = 0, e2 = 1, e3 = 2; break;
        case 1: e1 = 3, e2 = 4, e3 = 5; break;
        case 2: e1 = 7, e2 = 8, e3 = 9; break;
        case 3: e1 = 10, e2 = 11, e3 = 12; break;
      } digit();
    }

    lcd.setCursor(6, 0); lcd.print("."); lcd.setCursor(6, 1); lcd.print(".");
    lcd.setCursor(14, 1); lcd.print(a[4]); lcd.setCursor(15, 1); lcd.print(a[5]);
    //// set time ////
    if (digitalRead(10) == LOW && digitalRead(2) == HIGH) {
      hour++;
      if (hour > 23) {
        hour = 0;
      } clock.setDateTime(2020, 9, 15, hour, minut, secon);
      delay(100);
    }
    if (digitalRead(10) == LOW && digitalRead(3) == HIGH) {
      minut++;
      if (minut > 59) {
        minut = 0;
      } clock.setDateTime(2020, 9, 15, hour, minut, secon);
      delay(100);
    }
    if (digitalRead(10) == LOW && digitalRead(4) == HIGH) {
      secon = 0;
      clock.setDateTime(2020, 9, 15, hour, minut, secon);
      delay(100);
    }
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
}// loop


void times_f() {
  lcd.setCursor(0, 1);
  lcd.print(DateTime.hour / 10);
  lcd.print(DateTime.hour % 10);
  lcd.print(":");
  lcd.print(DateTime.minute / 10);
  lcd.print(DateTime.minute % 10);
  lcd.print(":");
  lcd.print(DateTime.second / 10);
  lcd.print(DateTime.second % 10);
}
void brig_func() {
  if (brig < 0) {
    brig = 0;
  } if (brig > 255) {
    brig = 255;
  }
}
void gain_func() {
  if (gain0 < 0) {
    gain0 = 0;
  } if (gain0 > 3) {
    gain0 = 3;
  }
}
void att_r_func() {
  if (att_r < 0) {
    att_r = 0;
  } if (att_r > 24) {
    att_r = 24;
  }
}
void att_l_func() {
  if (att_l < 0) {
    att_l = 0;
  } if (att_l > 24) {
    att_l = 24;
  }
}
void treb_func() {
  if (treb < -7) {
    treb = -7;
  } if (treb > 7) {
    treb = 7;
  }
}
void bass_func() {
  if (bass < -7) {
    bass = -7;
  } if (bass > 7) {
    bass = 7;
  }
}
void vol_func() {
  if (vol < 0) {
    vol = 0;
  } if (vol > 56) {
    vol = 56;
  }
}
void cl() {
  ir.value = 0;
  delay(300);
  lcd.clear();
}
void cl1() {
  ir.value = 0;
  delay(200);
}
void audio() {
  pt.setVolume(vol); // int 0...56 === -70...0 dB step 1.25 dB
  pt.setAttL(att_l); // int 0...24 === 0...-30 db step 1.25 dB > int 31 === mute on
  pt.setAttR(att_r); // int 0...24 === 0...-30 dB step 1.25 dB > int 31 === mute on
  pt.setSwitch(in, loud_on, gain0);
  // input      int 0..3 === IN 1...4
  // loudness   int 0...1 === 1-on 0-off
  // input gain int 0...3 === 0...11.25dB step 3.75 dB
  pt.setBass(bass);   // int -7...+7 === -14...+14 dB step 2 dB
  pt.setTreble(treb); // int -7...+7 === -14...+14 dB step 2 dB
}

void to_Timer() {
  newPosition = myEnc.read() / 4;
}

void digit() {
  switch (a[i]) {
    case 0: d1 = 1, d2 = 8, d3 = 6, d4 = 1, d5 = 3, d6 = 6; break; case 1: d1 = 32, d2 = 2, d3 = 6, d4 = 32, d5 = 32, d6 = 6; break;
    case 2: d1 = 2, d2 = 8, d3 = 6, d4 = 1, d5 = 4, d6 = 5; break; case 3: d1 = 2, d2 = 4, d3 = 6, d4 = 7, d5 = 3, d6 = 6; break;
    case 4: d1 = 1, d2 = 3, d3 = 6, d4 = 32, d5 = 32, d6 = 6; break; case 5: d1 = 1, d2 = 4, d3 = 5, d4 = 7, d5 = 3, d6 = 6; break;
    case 6: d1 = 1, d2 = 4, d3 = 5, d4 = 1, d5 = 3, d6 = 6; break; case 7: d1 = 1, d2 = 8, d3 = 6, d4 = 32, d5 = 32, d6 = 6; break;
    case 8: d1 = 1, d2 = 4, d3 = 6, d4 = 1, d5 = 3, d6 = 6; break; case 9: d1 = 1, d2 = 4, d3 = 6, d4 = 7, d5 = 3, d6 = 6; break;
  }
  lcd.setCursor(e1, 0); lcd.write((uint8_t)d1); lcd.setCursor(e2, 0); lcd.write((uint8_t)d2); lcd.setCursor(e3, 0); lcd.write((uint8_t)d3);
  lcd.setCursor(e1, 1); lcd.write((uint8_t)d4); lcd.setCursor(e2, 1); lcd.write((uint8_t)d5); lcd.setCursor(e3, 1); lcd.write((uint8_t)d6);
}

53

Re: PT2314

#define IR_1 0x807F6897 // Кнопка вверх
#define IR_2 0x807F58A7 // Кнопка вниз
#define IR_3 0x807F0AF5 // Кнопка >
#define IR_4 0x807F8A75 // Кнопка <
#define IR_5 0x807F9867 // Кнопка IN
#define IR_6 0x807FC837 // Кнопка SET
#define IR_7 0x807F827D // Кнопка MUTE
#define IR_8 0x807F02FD // Кнопка STANDBY (POWER)
#define IR_9 0x807F728D // Кнопка сон 10 минут
//#define IR_10 0x807FB04F // Кнопка сон 20 минут
//#define IR_11 0x807F30CF // Кнопка сон 30 минут
#define BRIG 100        // Яркость подсветки экрана в режиме POWER OFF (0...255)
#include <Wire.h>
#include <PT2314.h>            // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=434&download=1
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip       
#include <EEPROM.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <DS3231.h>            // https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
DS3231 clock; RTCDateTime DateTime;
unsigned long times_son;
bool son_k,son;
PT2314 pt;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Устанавливаем дисплей
IRrecv irrecv(12); // указываем вывод модуля IR приемника
Encoder myEnc(8, 9);// DT, CLK
decode_results ir;
byte v1[8] = {0b00111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111};
byte v2[8] = {0b00111, 0b00111, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000};
byte v3[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111};
byte v4[8] = {0b11111, 0b11111, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111};
byte v5[8] = {0b11100, 0b11100, 0b00000, 0b00000, 0b00000, 0b00000, 0b11100, 0b11100};
byte v6[8] = {0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100};
byte v7[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00111, 0b00111};
byte v8[8] = {0b11111, 0b11111, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000};
byte a[6], d1, d2, d3, d4, d5, d6, e1, e2, e3, w, w2, i, www, power, save, gr1, gr2;
int menu, menu0, menu1 = 1, menu2 = 0, vol, bass, treb, att_l, att_r, in, loud_on, gain0, gain1, gain2, gain3, gain4, mute, mute1, mute2, brig, hour, minut, secon;
unsigned long times, oldPosition  = -999, newPosition;
void setup() {
  irrecv.enableIRIn(); lcd.init(); lcd.backlight(); clock.begin(); Serial.begin(9600);
  pinMode(10, INPUT); // МЕНЮ КНОПКА SW энкодера
  pinMode(2, INPUT);  // КНОПКА SET
  pinMode(3, INPUT);  // КНОПКА IN
  pinMode(4, INPUT);  // КНОПКА MUTE
  pinMode(5, INPUT);  // КНОПКА STANDBY
  pinMode(7, OUTPUT); // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6, OUTPUT); // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  analogWrite(6, 255);
  lcd.setCursor(0, 0); lcd.print("AmplifieR ClassA"); lcd.setCursor(0, 1); lcd.print("    JLH 1969"); delay(2000); lcd.clear();
  MsTimer2::set(1, to_Timer); MsTimer2::start();
  //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  lcd.createChar(1, v1); lcd.createChar(2, v2); lcd.createChar(3, v3); lcd.createChar(4, v4);
  lcd.createChar(5, v5); lcd.createChar(6, v6); lcd.createChar(7, v7); lcd.createChar(8, v8);
  if (EEPROM.read(100) != 0) {
    for (int i = 0; i < 101; i++) {
      EEPROM.update(i, 0); // очистка памяти при первом включении
    }
  }
  vol = EEPROM.read(0); treb = EEPROM.read(1) - 7; bass = EEPROM.read(2) - 7; in = EEPROM.read(3);
  att_l = EEPROM.read(4); att_r = EEPROM.read(5); gain1 = EEPROM.read(6); gain2 = EEPROM.read(7);
  gain3 = EEPROM.read(8); gain4 = EEPROM.read(9); loud_on = EEPROM.read(10); brig = EEPROM.read(11);
  audio();
  analogWrite(6, brig);
}

void loop() {
  DateTime = clock.getDateTime(); hour = DateTime.hour; minut = DateTime.minute; secon = DateTime.second;

  ////////////////////// IR ///////////////////////////////////////////////////////////////
  if ( irrecv.decode( &ir )) {
    Serial.print("0x");  // IR приемник - чтение, в мониторе порта отображаются коды кнопок
    Serial.println( ir.value, HEX);
    irrecv.resume();
    times = millis();
    w = 1;
  }
  if (ir.value == 0) {
    gr1 = 0;  // запрет нажатий не активных кнопок пульта
    gr2 = 0;
  }

  if (mute == 0 && power == 0) {
    if (ir.value == IR_6 && menu1 == 1) {
      menu1 = 0;
      menu2 = 1;
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("SYSTEM");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }
    if (ir.value == IR_6 && menu2 == 1) {
      menu1 = 1;
      menu2 = 0;
      menu = 0;
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("AUDIO");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }

    if (ir.value == IR_1 && menu1 == 1) {
      menu++;  //меню 1
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu > 2) {
        menu = 0;
      }
    }
    if (ir.value == IR_2 && menu1 == 1) {
      menu--;  //меню 1
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu < 0) {
        menu = 2;
      }
    }

    if (ir.value == IR_1 && menu2 == 1) {
      menu0++;  //меню 2
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu0 > 4) {
        menu0 = 0;
      }
    }
    if (ir.value == IR_2 && menu2 == 1) {
      menu0--;  //меню 2
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu0 < 0) {
        menu0 = 4;
      }
    }

    if (ir.value == IR_5) {
      in++;  // IN
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (in > 3) {
        in = 0;
      } lcd.setCursor(4, 0);
      lcd.print("INPUT ");
      lcd.print(in + 1);
      audio();
      delay(1000);
      lcd.clear();
    }
  }

  if (ir.value == IR_7 && mute == 0 && power == 0) {
    mute = 1;  // MUTE
    pt.setAttR(31);
    pt.setAttL(31);
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.setCursor(6, 0);
    lcd.print("MUTE");
    menu1 = 100;
    menu2 = 100;
    delay(500);
  }
  if (ir.value == IR_7 && mute == 1 && power == 0) {
    mute = 0;  // MUTE
    cl();
    menu1 = 1;
    menu = 0;
    gr1 = 0;
    gr2 = 0;
    cl();
    audio();
  }

  if (ir.value == IR_8 && power == 0) {
    power = 1;  // power off
    pt.setAttR(31);
    pt.setAttL(31);
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    menu0 = 0;
    menu1 = 0;
    menu2 = 0;
    save = 1;
    analogWrite(6, BRIG);
    delay(2000);
    lcd.clear();
  }
  if (ir.value == IR_8 && power == 1) {
    power = 0;  // power on
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER   ON ");
    menu1 = 1;
    menu = 0;
    myEnc.write(0);
    audio();
    analogWrite(6, brig);
    delay(2000);
    lcd.clear();
  }
 if (ir.value == IR_9) {
     cl();
     son_k = 1;
  }
  if (son_k == 0) {
  times_son = millis();
  }
  if (millis() - times_son > 600000) {                //Время таймера в милисек
    son = 1;
  }
  if ((ir.value == IR_8 && power == 0) || son == 1) {
    power = 1;  // power off
    pt.setAttR(31);
    pt.setAttL(31);
    audio();
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    menu0 = 0;
    menu1 = 0;
    menu2 = 0;
    save = 1;
    analogWrite(6, BRIG);
    delay(3000);
    lcd.clear();
  }
  if (ir.value == IR_8 && power == 1) {
    son = 0;  // power on
    son_k = 0;
    times_son = millis();
    power = 0;
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER   ON ");
    menu1 = 1;
    menu = 0;
    myEnc.write(0);
    audio();
    analogWrite(6, brig);
    delay(3000);
    lcd.clear();
  }
  /////////////////////////////////////////////////////////////////////////////////////////

  /////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////
  if (mute == 0 && power == 0) {
    if (digitalRead(2) == HIGH && menu1 == 1) {
      menu1 = 0;
      menu2 = 1;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("SYSTEM");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }
    if (digitalRead(2) == HIGH && menu2 == 1) {
      menu1 = 1;
      menu2 = 0;
      menu = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("AUDIO");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }

    if (digitalRead(10) == LOW && menu1 == 1) {
      menu++;  //меню 1
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu > 2) {
        menu = 0;
      }
    }
    if (digitalRead(10) == LOW && menu2 == 1) {
      menu0++;  //меню 2
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu0 > 4) {
        menu0 = 0;
      }
    }

    if (digitalRead(3) == HIGH) {
      in++;  // IN
      cl();;
      times = millis();
      w = 1;
      w2 = 1;
      if (in > 3) {
        in = 0;
      } lcd.setCursor(4, 0);
      lcd.print("INPUT ");
      lcd.print(in + 1);
      audio();
      delay(1000);
      lcd.clear();
    }
  }

  if (digitalRead(4) == HIGH && mute == 0 && power == 0) {
    mute = 1;  // MUTE
    pt.setAttR(31);
    pt.setAttL(31);
    cl();
    lcd.setCursor(6, 0);
    lcd.print("MUTE");
    menu1 = 100;
    menu2 = 100;
    delay(500);
  }
  if (digitalRead(4) == HIGH && mute == 1 && power == 0) {
    mute = 0;  // MUTE
    cl();
    menu1 = 1;
    menu = 0;
    cl();
    audio();
  }

  if (digitalRead(5) == HIGH && power == 0) {
    power = 1;  // power off
    pt.setAttR(31);
    pt.setAttL(31);
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    menu0 = 0;
    menu1 = 0;
    menu2 = 0;
    save = 1;
    analogWrite(6, BRIG);
    delay(3000);
    lcd.clear();
  }
  if (digitalRead(5) == HIGH && power == 1) {
    power = 0;  // power on
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER   ON ");
    menu1 = 1;
    menu = 0;
    myEnc.write(0);
    audio();
    analogWrite(6, brig);
    delay(3000);
    lcd.clear();
  }
  if (power == 0) {
    digitalWrite(7, HIGH);
  }
  //if(power==0){digitalWrite(7,LOW);}// инверсия выхода STANDBY

  if (save == 1 && w2 == 1) {
    save = 0; w2 = 0;
    EEPROM.update(0, vol); EEPROM.update(1, treb + 7); EEPROM.update(2, bass + 7); EEPROM.update(3, in);
    EEPROM.update(4, att_l); EEPROM.update(5, att_r); EEPROM.update(6, gain1); EEPROM.update(7, gain2);
    EEPROM.update(8, gain3); EEPROM.update(9, gain4); EEPROM.update(10, loud_on); EEPROM.update(11, brig);
  }
  /////////////////////////////////////////////////////////////////////////////////////////

  ////////////// VOLUME ///////////////////////////////////////////////////////////////////
  if (menu == 0 && menu1 == 1) {
    if (ir.value == IR_3) {
      vol++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      vol++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    if (ir.value == IR_4) {
      vol--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      vol--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      vol = vol + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    a[0] = vol / 10; a[1] = vol % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("IN"); lcd.print(in + 1); lcd.print("  VOL");
    if (vol < 0) {
      lcd.setCursor(9, 1);
      lcd.write((uint8_t)8);
    } else {
      lcd.setCursor(9, 1);
      lcd.print(" ");
    }
    times_f();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// BASS ///////////////////////////////////////////////////////////////////
  if (menu == 1 && menu1 == 1) {
    if (ir.value == IR_3) {
      bass++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      bass++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    if (ir.value == IR_4) {
      bass--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      bass--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      bass = bass + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    a[0] = abs(bass * 2) / 10; a[1] = abs(bass * 2) % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("BASS   dB");
    if (bass < 0) {
      lcd.setCursor(9, 1);
      lcd.write((uint8_t)8);
    } else {
      lcd.setCursor(9, 1);
      lcd.print(" ");
    }
    times_f();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// TREBLE ///////////////////////////////////////////////////////////////////
  if (menu == 2 && menu1 == 1) {
    if (ir.value == IR_3) {
      treb++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      treb++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    if (ir.value == IR_4) {
      treb--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      treb--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      treb = treb + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    a[0] = abs(treb * 2) / 10; a[1] = abs(treb * 2) % 10;

    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("TREBLE dB");
    if (treb < 0) {
      lcd.setCursor(9, 1);
      lcd.write((uint8_t)8);
    } else {
      lcd.setCursor(9, 1);
      lcd.print(" ");
    }
    times_f();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// ATT_L ///////////////////////////////////////////////////////////////////
  if (menu0 == 0 && menu2 == 1) {
    if (ir.value == IR_3) {
      att_l++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      att_l++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    if (ir.value == IR_4) {
      att_l--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      att_l--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      att_l = att_l + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    a[0] = abs(att_l) / 10; a[1] = abs(att_l) % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("ATT_L");
    lcd.setCursor(0, 1); lcd.print(-att_l * 1.25, 2); lcd.print(" "); lcd.setCursor(6, 1); lcd.print("dB");
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// ATT_R ///////////////////////////////////////////////////////////////////
  if (menu0 == 1 && menu2 == 1) {
    if (ir.value == IR_3) {
      att_r++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      att_r++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    if (ir.value == IR_4) {
      att_r--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      att_r--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      att_r = att_r + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    a[0] = abs(att_r) / 10; a[1] = abs(att_r) % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("ATT_R");
    lcd.setCursor(0, 1); lcd.print(-att_r * 1.25, 2); lcd.print(" "); lcd.setCursor(6, 1); lcd.print("dB");
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
  if (menu0 == 2 && menu2 == 1) {
    switch (in) {
      case 0: gain0 = gain1; break;
      case 1: gain0 = gain2; break;
      case 2: gain0 = gain3; break;
      case 3: gain0 = gain4; break;
    }

    if (ir.value == IR_3) {
      gain0++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      gain0++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }
    if (ir.value == IR_4) {
      gain0--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      gain0--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      gain0 = gain0 + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      www = 1;
      w = 1;
      w2 = 1;
      gain_func();
    }

    switch (in) {
      case 0: gain1 = gain0; break;
      case 1: gain2 = gain0; break;
      case 2: gain3 = gain0; break;
      case 3: gain4 = gain0; break;
    }
    a[0] = abs(gain0);

    for (i = 0; i < 1; i++) {
      switch (i) {
        case 0: e1 = 13, e2 = 14, e3 = 15;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }
    lcd.setCursor(0, 1); lcd.print("GAIN "); lcd.print(gain0 * 3.75, 2); lcd.print(" "); lcd.setCursor(10, 1); lcd.print("dB");
    if (www == 1) {
      audio();
      www = 0;
    }
    lcd.setCursor(0, 0); lcd.print("INPUT "); lcd.print(in + 1);
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// LOUDNESS ///////////////////////////////////////////////////////////////////
  if (menu0 == 3 && menu2 == 1) {
    if (ir.value == IR_3) {
      loud_on++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      loud_on++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }
    if (ir.value == IR_4) {
      loud_on--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      loud_on--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      loud_on = loud_on + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      };
      audio();
    }
    if (loud_on == 1) {
      lcd.setCursor(2, 0);
      lcd.print("LOUDNESS  ON ");
    }
    else {
      lcd.setCursor(2, 0);
      lcd.print("LOUDNESS  OFF");
    }
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// BRIGHTNESS ///////////////////////////////////////////////////////////////////
  if (menu0 == 4 && menu2 == 1) {
    if (ir.value == IR_3) {
      brig++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      brig++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    if (ir.value == IR_4) {
      brig--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      brig--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      brig = brig + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    a[0] = abs(brig) / 100; a[1] = abs(brig) / 10 % 10; a[2] = abs(brig) % 10;
    for (i = 0; i < 3; i++) {
      switch (i) {
        case 0: e1 = 7, e2 = 8, e3 = 9; break;
        case 1: e1 = 10, e2 = 11, e3 = 12; break;
        case 2: e1 = 13, e2 = 14, e3 = 15; break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("BRIGHT");
    lcd.setCursor(0, 1); lcd.print(brig * 100 / 255); lcd.print(" "); lcd.setCursor(4, 1); lcd.print("%");
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  if (millis() - times > 10000 && w == 1 && mute == 0 && power == 0) {
    w = 0;
    menu2 = 0;
    menu1 = 1;
    menu = 0;
    cl();
  }

  /////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
  if (power == 1) {
    digitalWrite(7, LOW);
    a[0] = DateTime.hour / 10;
    a[1] = DateTime.hour % 10;
    a[2] = DateTime.minute / 10;
    a[3] = DateTime.minute % 10;
    a[4] = DateTime.second / 10;
    a[5] = DateTime.second % 10;
    for (i = 0; i < 4; i++) {
      switch (i) {
        case 0: e1 = 0, e2 = 1, e3 = 2; break;
        case 1: e1 = 3, e2 = 4, e3 = 5; break;
        case 2: e1 = 7, e2 = 8, e3 = 9; break;
        case 3: e1 = 10, e2 = 11, e3 = 12; break;
      } digit();
    }

    lcd.setCursor(6, 0); lcd.print("."); lcd.setCursor(6, 1); lcd.print(".");
    lcd.setCursor(14, 1); lcd.print(a[4]); lcd.setCursor(15, 1); lcd.print(a[5]);
    //// set time ////
    if (digitalRead(10) == LOW && digitalRead(2) == HIGH) {
      hour++;
      if (hour > 23) {
        hour = 0;
      } clock.setDateTime(2020, 9, 15, hour, minut, secon);
      delay(100);
    }
    if (digitalRead(10) == LOW && digitalRead(3) == HIGH) {
      minut++;
      if (minut > 59) {
        minut = 0;
      } clock.setDateTime(2020, 9, 15, hour, minut, secon);
      delay(100);
    }
    if (digitalRead(10) == LOW && digitalRead(4) == HIGH) {
      secon = 0;
      clock.setDateTime(2020, 9, 15, hour, minut, secon);
      delay(100);
    }
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
}// loop


void times_f() {
  lcd.setCursor(0, 1);
  lcd.print(DateTime.hour / 10);
  lcd.print(DateTime.hour % 10);
  lcd.print(":");
  lcd.print(DateTime.minute / 10);
  lcd.print(DateTime.minute % 10);
  lcd.print(":");
  lcd.print(DateTime.second / 10);
  lcd.print(DateTime.second % 10);
}
void brig_func() {
  if (brig < 0) {
    brig = 0;
  } if (brig > 255) {
    brig = 255;
  }
}
void gain_func() {
  if (gain0 < 0) {
    gain0 = 0;
  } if (gain0 > 3) {
    gain0 = 3;
  }
}
void att_r_func() {
  if (att_r < 0) {
    att_r = 0;
  } if (att_r > 24) {
    att_r = 24;
  }
}
void att_l_func() {
  if (att_l < 0) {
    att_l = 0;
  } if (att_l > 24) {
    att_l = 24;
  }
}
void treb_func() {
  if (treb < -7) {
    treb = -7;
  } if (treb > 7) {
    treb = 7;
  }
}
void bass_func() {
  if (bass < -7) {
    bass = -7;
  } if (bass > 7) {
    bass = 7;
  }
}
void vol_func() {
  if (vol < 0) {
    vol = 0;
  } if (vol > 56) {
    vol = 56;
  }
}
void cl() {
  ir.value = 0;
  delay(300);
  lcd.clear();
}
void cl1() {
  ir.value = 0;
  delay(200);
}
void audio() {
  pt.setVolume(vol); // int 0...56 === -70...0 dB step 1.25 dB
  pt.setAttL(att_l); // int 0...24 === 0...-30 db step 1.25 dB > int 31 === mute on
  pt.setAttR(att_r); // int 0...24 === 0...-30 dB step 1.25 dB > int 31 === mute on
  pt.setSwitch(in, loud_on, gain0);
  // input      int 0..3 === IN 1...4
  // loudness   int 0...1 === 1-on 0-off
  // input gain int 0...3 === 0...11.25dB step 3.75 dB
  pt.setBass(bass);   // int -7...+7 === -14...+14 dB step 2 dB
  pt.setTreble(treb); // int -7...+7 === -14...+14 dB step 2 dB
}

void to_Timer() {
  newPosition = myEnc.read() / 4;
}

void digit() {
  switch (a[i]) {
    case 0: d1 = 1, d2 = 8, d3 = 6, d4 = 1, d5 = 3, d6 = 6; break; case 1: d1 = 32, d2 = 2, d3 = 6, d4 = 32, d5 = 32, d6 = 6; break;
    case 2: d1 = 2, d2 = 8, d3 = 6, d4 = 1, d5 = 4, d6 = 5; break; case 3: d1 = 2, d2 = 4, d3 = 6, d4 = 7, d5 = 3, d6 = 6; break;
    case 4: d1 = 1, d2 = 3, d3 = 6, d4 = 32, d5 = 32, d6 = 6; break; case 5: d1 = 1, d2 = 4, d3 = 5, d4 = 7, d5 = 3, d6 = 6; break;
    case 6: d1 = 1, d2 = 4, d3 = 5, d4 = 1, d5 = 3, d6 = 6; break; case 7: d1 = 1, d2 = 8, d3 = 6, d4 = 32, d5 = 32, d6 = 6; break;
    case 8: d1 = 1, d2 = 4, d3 = 6, d4 = 1, d5 = 3, d6 = 6; break; case 9: d1 = 1, d2 = 4, d3 = 6, d4 = 7, d5 = 3, d6 = 6; break;
  }
  lcd.setCursor(e1, 0); lcd.write((uint8_t)d1); lcd.setCursor(e2, 0); lcd.write((uint8_t)d2); lcd.setCursor(e3, 0); lcd.write((uint8_t)d3);
  lcd.setCursor(e1, 1); lcd.write((uint8_t)d4); lcd.setCursor(e2, 1); lcd.write((uint8_t)d5); lcd.setCursor(e3, 1); lcd.write((uint8_t)d6);
}

54

Re: PT2314

Спасибо пробую !

55

Re: PT2314

Протестировал в железе, все работает:

#define IR_1 0x807F6897 // Кнопка вверх
#define IR_2 0x807F58A7 // Кнопка вниз
#define IR_3 0x807F0AF5 // Кнопка >
#define IR_4 0x807F8A75 // Кнопка <
#define IR_5 0x807F9867 // Кнопка IN
#define IR_6 0x807FC837 // Кнопка SET
#define IR_7 0x807F827D // Кнопка MUTE
#define IR_8 0x807F02FD // Кнопка STANDBY (POWER)
#define IR_9 0x807F728D // Кнопка сон 10 минут
//#define IR_10 0x807FB04F // Кнопка сон 20 минут
//#define IR_11 0x807F30CF // Кнопка сон 30 минут
#define BRIG 100        // Яркость подсветки экрана в режиме POWER OFF (0...255)
#include <Wire.h>
#include <PT2314.h>            // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=434&download=1
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip       
#include <EEPROM.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <DS3231.h>            // https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
DS3231 clock; RTCDateTime DateTime;
unsigned long times_son;
bool son_k,son;
PT2314 pt;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Устанавливаем дисплей
IRrecv irrecv(12); // указываем вывод модуля IR приемника
Encoder myEnc(8, 9);// DT, CLK
decode_results ir;
byte v1[8] = {0b00111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111, 0b00111};
byte v2[8] = {0b00111, 0b00111, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000};
byte v3[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111};
byte v4[8] = {0b11111, 0b11111, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111};
byte v5[8] = {0b11100, 0b11100, 0b00000, 0b00000, 0b00000, 0b00000, 0b11100, 0b11100};
byte v6[8] = {0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100};
byte v7[8] = {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00111, 0b00111};
byte v8[8] = {0b11111, 0b11111, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000};
byte a[6], d1, d2, d3, d4, d5, d6, e1, e2, e3, w, w2, i, www, power, save, gr1, gr2;
int menu, menu0, menu1 = 1, menu2 = 0, vol, bass, treb, att_l, att_r, in, loud_on, gain0, gain1, gain2, gain3, gain4, mute, mute1, mute2, brig, hour, minut, secon;
unsigned long times, oldPosition  = -999, newPosition;
void setup() {
  irrecv.enableIRIn(); lcd.init(); lcd.backlight(); clock.begin(); Serial.begin(9600);
  pinMode(10, INPUT); // МЕНЮ КНОПКА SW энкодера
  pinMode(2, INPUT);  // КНОПКА SET
  pinMode(3, INPUT);  // КНОПКА IN
  pinMode(4, INPUT);  // КНОПКА MUTE
  pinMode(5, INPUT);  // КНОПКА STANDBY
  pinMode(7, OUTPUT); // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6, OUTPUT); // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  analogWrite(6, 255);
  lcd.setCursor(0, 0); lcd.print("AmplifieR ClassA"); lcd.setCursor(0, 1); lcd.print("    JLH 1969"); delay(2000); lcd.clear();
  MsTimer2::set(1, to_Timer); MsTimer2::start();
  //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  lcd.createChar(1, v1); lcd.createChar(2, v2); lcd.createChar(3, v3); lcd.createChar(4, v4);
  lcd.createChar(5, v5); lcd.createChar(6, v6); lcd.createChar(7, v7); lcd.createChar(8, v8);
  if (EEPROM.read(100) != 0) {
    for (int i = 0; i < 101; i++) {
      EEPROM.update(i, 0); // очистка памяти при первом включении
    }
  }
  vol = EEPROM.read(0); treb = EEPROM.read(1) - 7; bass = EEPROM.read(2) - 7; in = EEPROM.read(3);
  att_l = EEPROM.read(4); att_r = EEPROM.read(5); gain1 = EEPROM.read(6); gain2 = EEPROM.read(7);
  gain3 = EEPROM.read(8); gain4 = EEPROM.read(9); loud_on = EEPROM.read(10); brig = EEPROM.read(11);
  audio();
  analogWrite(6, brig);
}

void loop() {
  DateTime = clock.getDateTime(); hour = DateTime.hour; minut = DateTime.minute; secon = DateTime.second;

  ////////////////////// IR ///////////////////////////////////////////////////////////////
  if ( irrecv.decode( &ir )) {
    Serial.print("0x");  // IR приемник - чтение, в мониторе порта отображаются коды кнопок
    Serial.println( ir.value, HEX);
    irrecv.resume();
    times = millis();
    w = 1;
  }
  if (ir.value == 0) {
    gr1 = 0;  // запрет нажатий не активных кнопок пульта
    gr2 = 0;
  }

  if (mute == 0 && power == 0) {
    if (ir.value == IR_6 && menu1 == 1) {
      menu1 = 0;
      menu2 = 1;
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("SYSTEM");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }
    if (ir.value == IR_6 && menu2 == 1) {
      menu1 = 1;
      menu2 = 0;
      menu = 0;
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("AUDIO");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }

    if (ir.value == IR_1 && menu1 == 1) {
      menu++;  //меню 1
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu > 2) {
        menu = 0;
      }
    }
    if (ir.value == IR_2 && menu1 == 1) {
      menu--;  //меню 1
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu < 0) {
        menu = 2;
      }
    }

    if (ir.value == IR_1 && menu2 == 1) {
      menu0++;  //меню 2
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu0 > 4) {
        menu0 = 0;
      }
    }
    if (ir.value == IR_2 && menu2 == 1) {
      menu0--;  //меню 2
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu0 < 0) {
        menu0 = 4;
      }
    }

    if (ir.value == IR_5) {
      in++;  // IN
      gr1 = 0;
      gr2 = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (in > 3) {
        in = 0;
      } lcd.setCursor(4, 0);
      lcd.print("INPUT ");
      lcd.print(in + 1);
      audio();
      delay(1000);
      lcd.clear();
    }
  }

  if (ir.value == IR_7 && mute == 0 && power == 0) {
    mute = 1;  // MUTE
    pt.setAttR(31);
    pt.setAttL(31);
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.setCursor(6, 0);
    lcd.print("MUTE");
    menu1 = 100;
    menu2 = 100;
    delay(500);
  }
  if (ir.value == IR_7 && mute == 1 && power == 0) {
    mute = 0;  // MUTE
    cl();
    menu1 = 1;
    menu = 0;
    gr1 = 0;
    gr2 = 0;
    cl();
    audio();
  }

  if (ir.value == IR_8 && power == 0) {
    power = 1;  // power off
    pt.setAttR(31);
    pt.setAttL(31);
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    menu0 = 0;
    menu1 = 0;
    menu2 = 0;
    save = 1;
    analogWrite(6, BRIG);
    delay(2000);
    lcd.clear();
  }
  if (ir.value == IR_8 && power == 1) {
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER   ON ");
    menu1 = 1;
    menu = 0;
    myEnc.write(0);
    audio();
    analogWrite(6, brig);
    delay(2000);
    power = 0;  // power on
    lcd.clear();
  }
  
  if (ir.value == IR_9) {cl();son_k = 1;
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    lcd.setCursor(5, 1);
    lcd.print("10 MIN"); 
    delay(2000);
    lcd.clear();   
    }
  if (son_k == 0) {times_son = millis();}
  if (millis() - times_son > 600000) {                //Время таймера в милисек
    son = 1;
  }
  
  if ((ir.value == IR_8 && power == 0) || son == 1) {
    power = 1;  // power off
    son = 0;  // power on
    son_k = 0;
    times_son = millis();
    pt.setAttR(31);
    pt.setAttL(31);
    audio();
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    menu0 = 0;
    menu1 = 0;
    menu2 = 0;
    save = 1;
    analogWrite(6, BRIG);
    delay(3000);
    lcd.clear();
  }
  if (ir.value == IR_8 && power == 1) {
    power = 0;
    gr1 = 0;
    gr2 = 0;
    cl();
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER   ON ");
    menu1 = 1;
    menu = 0;
    myEnc.write(0);
    audio();
    analogWrite(6, brig);
    delay(3000);
    lcd.clear();
  }
  /////////////////////////////////////////////////////////////////////////////////////////

  /////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////
  if (mute == 0 && power == 0) {
    if (digitalRead(2) == HIGH && menu1 == 1) {
      menu1 = 0;
      menu2 = 1;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("SYSTEM");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }
    if (digitalRead(2) == HIGH && menu2 == 1) {
      menu1 = 1;
      menu2 = 0;
      menu = 0;
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      lcd.setCursor(3, 0);
      lcd.print("AUDIO");
      lcd.setCursor(6, 1);
      lcd.print("SETTINGS");
      delay(1000);
      lcd.clear();
    }

    if (digitalRead(10) == LOW && menu1 == 1) {
      menu++;  //меню 1
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu > 2) {
        menu = 0;
      }
    }
    if (digitalRead(10) == LOW && menu2 == 1) {
      menu0++;  //меню 2
      cl();
      times = millis();
      w = 1;
      w2 = 1;
      if (menu0 > 4) {
        menu0 = 0;
      }
    }

    if (digitalRead(3) == HIGH) {
      in++;  // IN
      cl();;
      times = millis();
      w = 1;
      w2 = 1;
      if (in > 3) {
        in = 0;
      } lcd.setCursor(4, 0);
      lcd.print("INPUT ");
      lcd.print(in + 1);
      audio();
      delay(1000);
      lcd.clear();
    }
  }

  if (digitalRead(4) == HIGH && mute == 0 && power == 0) {
    mute = 1;  // MUTE
    pt.setAttR(31);
    pt.setAttL(31);
    cl();
    lcd.setCursor(6, 0);
    lcd.print("MUTE");
    menu1 = 100;
    menu2 = 100;
    delay(500);
  }
  if (digitalRead(4) == HIGH && mute == 1 && power == 0) {
    mute = 0;  // MUTE
    cl();
    menu1 = 1;
    menu = 0;
    cl();
    audio();
  }

  if (digitalRead(5) == HIGH && power == 0) {
    power = 1;  // power off
    pt.setAttR(31);
    pt.setAttL(31);
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER  OFF");
    menu0 = 0;
    menu1 = 0;
    menu2 = 0;
    save = 1;
    analogWrite(6, BRIG);
    delay(3000);
    lcd.clear();
  }
  if (digitalRead(5) == HIGH && power == 1) {
    power = 0;  // power on
    lcd.backlight();
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("POWER   ON ");
    menu1 = 1;
    menu = 0;
    myEnc.write(0);
    audio();
    analogWrite(6, brig);
    delay(3000);
    lcd.clear();
  }
  if (power == 0) {
    digitalWrite(7, HIGH);
  }
  //if(power==0){digitalWrite(7,LOW);}// инверсия выхода STANDBY

  if (save == 1 && w2 == 1) {
    save = 0; w2 = 0;
    EEPROM.update(0, vol); EEPROM.update(1, treb + 7); EEPROM.update(2, bass + 7); EEPROM.update(3, in);
    EEPROM.update(4, att_l); EEPROM.update(5, att_r); EEPROM.update(6, gain1); EEPROM.update(7, gain2);
    EEPROM.update(8, gain3); EEPROM.update(9, gain4); EEPROM.update(10, loud_on); EEPROM.update(11, brig);
  }
  /////////////////////////////////////////////////////////////////////////////////////////

  ////////////// VOLUME ///////////////////////////////////////////////////////////////////
  if (menu == 0 && menu1 == 1) {
    if (ir.value == IR_3) {
      vol++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      vol++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    if (ir.value == IR_4) {
      vol--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      vol--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      vol = vol + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      vol_func();
      audio();
    }
    a[0] = vol / 10; a[1] = vol % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("IN"); lcd.print(in + 1); lcd.print("  VOL");
    if (vol < 0) {
      lcd.setCursor(9, 1);
      lcd.write((uint8_t)8);
    } else {
      lcd.setCursor(9, 1);
      lcd.print(" ");
    }
    times_f();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// BASS ///////////////////////////////////////////////////////////////////
  if (menu == 1 && menu1 == 1) {
    if (ir.value == IR_3) {
      bass++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      bass++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    if (ir.value == IR_4) {
      bass--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      bass--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      bass = bass + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      bass_func();
      audio();
    }
    a[0] = abs(bass * 2) / 10; a[1] = abs(bass * 2) % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("BASS   dB");
    if (bass < 0) {
      lcd.setCursor(9, 1);
      lcd.write((uint8_t)8);
    } else {
      lcd.setCursor(9, 1);
      lcd.print(" ");
    }
    times_f();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// TREBLE ///////////////////////////////////////////////////////////////////
  if (menu == 2 && menu1 == 1) {
    if (ir.value == IR_3) {
      treb++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      treb++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    if (ir.value == IR_4) {
      treb--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      treb--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      treb = treb + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      treb_func();
      audio();
    }
    a[0] = abs(treb * 2) / 10; a[1] = abs(treb * 2) % 10;

    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("TREBLE dB");
    if (treb < 0) {
      lcd.setCursor(9, 1);
      lcd.write((uint8_t)8);
    } else {
      lcd.setCursor(9, 1);
      lcd.print(" ");
    }
    times_f();
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// ATT_L ///////////////////////////////////////////////////////////////////
  if (menu0 == 0 && menu2 == 1) {
    if (ir.value == IR_3) {
      att_l++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      att_l++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    if (ir.value == IR_4) {
      att_l--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      att_l--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      att_l = att_l + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      att_l_func();
      audio();
    }
    a[0] = abs(att_l) / 10; a[1] = abs(att_l) % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("ATT_L");
    lcd.setCursor(0, 1); lcd.print(-att_l * 1.25, 2); lcd.print(" "); lcd.setCursor(6, 1); lcd.print("dB");
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// ATT_R ///////////////////////////////////////////////////////////////////
  if (menu0 == 1 && menu2 == 1) {
    if (ir.value == IR_3) {
      att_r++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      att_r++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    if (ir.value == IR_4) {
      att_r--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      att_r--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      att_r = att_r + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      att_r_func();
      audio();
    }
    a[0] = abs(att_r) / 10; a[1] = abs(att_r) % 10;
    for (i = 0; i < 2; i++) {
      switch (i) {
        case 0: e1 = 10, e2 = 11, e3 = 12;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("ATT_R");
    lcd.setCursor(0, 1); lcd.print(-att_r * 1.25, 2); lcd.print(" "); lcd.setCursor(6, 1); lcd.print("dB");
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
  if (menu0 == 2 && menu2 == 1) {
    switch (in) {
      case 0: gain0 = gain1; break;
      case 1: gain0 = gain2; break;
      case 2: gain0 = gain3; break;
      case 3: gain0 = gain4; break;
    }

    if (ir.value == IR_3) {
      gain0++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      gain0++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }
    if (ir.value == IR_4) {
      gain0--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      gain0--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      gain_func();
      www = 1;
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      gain0 = gain0 + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      www = 1;
      w = 1;
      w2 = 1;
      gain_func();
    }

    switch (in) {
      case 0: gain1 = gain0; break;
      case 1: gain2 = gain0; break;
      case 2: gain3 = gain0; break;
      case 3: gain4 = gain0; break;
    }
    a[0] = abs(gain0);

    for (i = 0; i < 1; i++) {
      switch (i) {
        case 0: e1 = 13, e2 = 14, e3 = 15;
          break;
        case 1: e1 = 13, e2 = 14, e3 = 15;
          break;
      } digit();
    }
    lcd.setCursor(0, 1); lcd.print("GAIN "); lcd.print(gain0 * 3.75, 2); lcd.print(" "); lcd.setCursor(10, 1); lcd.print("dB");
    if (www == 1) {
      audio();
      www = 0;
    }
    lcd.setCursor(0, 0); lcd.print("INPUT "); lcd.print(in + 1);
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// LOUDNESS ///////////////////////////////////////////////////////////////////
  if (menu0 == 3 && menu2 == 1) {
    if (ir.value == IR_3) {
      loud_on++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      loud_on++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }
    if (ir.value == IR_4) {
      loud_on--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      loud_on--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      } audio();
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      loud_on = loud_on + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      if (loud_on > 1) {
        loud_on = 0;
      };
      if (loud_on < 0) {
        loud_on = 1;
      };
      audio();
    }
    if (loud_on == 1) {
      lcd.setCursor(2, 0);
      lcd.print("LOUDNESS  ON ");
    }
    else {
      lcd.setCursor(2, 0);
      lcd.print("LOUDNESS  OFF");
    }
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  ////////////// BRIGHTNESS ///////////////////////////////////////////////////////////////////
  if (menu0 == 4 && menu2 == 1) {
    if (ir.value == IR_3) {
      brig++;  // кнопка >
      gr1 = 1;
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    if (ir.value == 0xFFFFFFFF and gr1 == 1) {
      brig++;  // кнопка >>>>>>
      gr2 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    if (ir.value == IR_4) {
      brig--;  // кнопка <
      gr1 = 0;
      gr2 = 1;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    if (ir.value == 0xFFFFFFFF and gr2 == 1) {
      brig--;  // кнопка <<<<<<
      gr1 = 0;
      cl1();
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }

    if (newPosition != oldPosition) {
      oldPosition = newPosition;
      brig = brig + newPosition;
      myEnc.write(0);
      newPosition = 0;
      times = millis();
      w = 1;
      w2 = 1;
      brig_func();
      analogWrite(6, brig);
    }
    a[0] = abs(brig) / 100; a[1] = abs(brig) / 10 % 10; a[2] = abs(brig) % 10;
    for (i = 0; i < 3; i++) {
      switch (i) {
        case 0: e1 = 7, e2 = 8, e3 = 9; break;
        case 1: e1 = 10, e2 = 11, e3 = 12; break;
        case 2: e1 = 13, e2 = 14, e3 = 15; break;
      } digit();
    }

    lcd.setCursor(0, 0); lcd.print("BRIGHT");
    lcd.setCursor(0, 1); lcd.print(brig * 100 / 255); lcd.print(" "); lcd.setCursor(4, 1); lcd.print("%");
  }
  ////////////////////////////////////////////////////////////////////////////////////////////

  if (millis() - times > 10000 && w == 1 && mute == 0 && power == 0) {
    w = 0;
    menu2 = 0;
    menu1 = 1;
    menu = 0;
    cl();
  }

  /////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
  if (power == 1) {
    digitalWrite(7, LOW);
    a[0] = DateTime.hour / 10;
    a[1] = DateTime.hour % 10;
    a[2] = DateTime.minute / 10;
    a[3] = DateTime.minute % 10;
    a[4] = DateTime.second / 10;
    a[5] = DateTime.second % 10;
    for (i = 0; i < 4; i++) {
      switch (i) {
        case 0: e1 = 0, e2 = 1, e3 = 2; break;
        case 1: e1 = 3, e2 = 4, e3 = 5; break;
        case 2: e1 = 7, e2 = 8, e3 = 9; break;
        case 3: e1 = 10, e2 = 11, e3 = 12; break;
      } digit();
    }

    lcd.setCursor(6, 0); lcd.print("."); lcd.setCursor(6, 1); lcd.print(".");
    lcd.setCursor(14, 1); lcd.print(a[4]); lcd.setCursor(15, 1); lcd.print(a[5]);
    //// set time ////
    if (digitalRead(10) == LOW && digitalRead(2) == HIGH) {
      hour++;
      if (hour > 23) {
        hour = 0;
      } clock.setDateTime(2020, 9, 15, hour, minut, secon);
      delay(100);
    }
    if (digitalRead(10) == LOW && digitalRead(3) == HIGH) {
      minut++;
      if (minut > 59) {
        minut = 0;
      } clock.setDateTime(2020, 9, 15, hour, minut, secon);
      delay(100);
    }
    if (digitalRead(10) == LOW && digitalRead(4) == HIGH) {
      secon = 0;
      clock.setDateTime(2020, 9, 15, hour, minut, secon);
      delay(100);
    }
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
}// loop


void times_f() {
  lcd.setCursor(0, 1);
  lcd.print(DateTime.hour / 10);
  lcd.print(DateTime.hour % 10);
  lcd.print(":");
  lcd.print(DateTime.minute / 10);
  lcd.print(DateTime.minute % 10);
  lcd.print(":");
  lcd.print(DateTime.second / 10);
  lcd.print(DateTime.second % 10);
}
void brig_func() {
  if (brig < 0) {
    brig = 0;
  } if (brig > 255) {
    brig = 255;
  }
}
void gain_func() {
  if (gain0 < 0) {
    gain0 = 0;
  } if (gain0 > 3) {
    gain0 = 3;
  }
}
void att_r_func() {
  if (att_r < 0) {
    att_r = 0;
  } if (att_r > 24) {
    att_r = 24;
  }
}
void att_l_func() {
  if (att_l < 0) {
    att_l = 0;
  } if (att_l > 24) {
    att_l = 24;
  }
}
void treb_func() {
  if (treb < -7) {
    treb = -7;
  } if (treb > 7) {
    treb = 7;
  }
}
void bass_func() {
  if (bass < -7) {
    bass = -7;
  } if (bass > 7) {
    bass = 7;
  }
}
void vol_func() {
  if (vol < 0) {
    vol = 0;
  } if (vol > 56) {
    vol = 56;
  }
}
void cl() {
  ir.value = 0;
  delay(300);
  lcd.clear();
}
void cl1() {
  ir.value = 0;
  delay(200);
}
void audio() {
  pt.setVolume(vol); // int 0...56 === -70...0 dB step 1.25 dB
  pt.setAttL(att_l); // int 0...24 === 0...-30 db step 1.25 dB > int 31 === mute on
  pt.setAttR(att_r); // int 0...24 === 0...-30 dB step 1.25 dB > int 31 === mute on
  pt.setSwitch(in, loud_on, gain0);
  // input      int 0..3 === IN 1...4
  // loudness   int 0...1 === 1-on 0-off
  // input gain int 0...3 === 0...11.25dB step 3.75 dB
  pt.setBass(bass);   // int -7...+7 === -14...+14 dB step 2 dB
  pt.setTreble(treb); // int -7...+7 === -14...+14 dB step 2 dB
}

void to_Timer() {
  newPosition = myEnc.read() / 4;
}

void digit() {
  switch (a[i]) {
    case 0: d1 = 1, d2 = 8, d3 = 6, d4 = 1, d5 = 3, d6 = 6; break; case 1: d1 = 32, d2 = 2, d3 = 6, d4 = 32, d5 = 32, d6 = 6; break;
    case 2: d1 = 2, d2 = 8, d3 = 6, d4 = 1, d5 = 4, d6 = 5; break; case 3: d1 = 2, d2 = 4, d3 = 6, d4 = 7, d5 = 3, d6 = 6; break;
    case 4: d1 = 1, d2 = 3, d3 = 6, d4 = 32, d5 = 32, d6 = 6; break; case 5: d1 = 1, d2 = 4, d3 = 5, d4 = 7, d5 = 3, d6 = 6; break;
    case 6: d1 = 1, d2 = 4, d3 = 5, d4 = 1, d5 = 3, d6 = 6; break; case 7: d1 = 1, d2 = 8, d3 = 6, d4 = 32, d5 = 32, d6 = 6; break;
    case 8: d1 = 1, d2 = 4, d3 = 6, d4 = 1, d5 = 3, d6 = 6; break; case 9: d1 = 1, d2 = 4, d3 = 6, d4 = 7, d5 = 3, d6 = 6; break;
  }
  lcd.setCursor(e1, 0); lcd.write((uint8_t)d1); lcd.setCursor(e2, 0); lcd.write((uint8_t)d2); lcd.setCursor(e3, 0); lcd.write((uint8_t)d3);
  lcd.setCursor(e1, 1); lcd.write((uint8_t)d4); lcd.setCursor(e2, 1); lcd.write((uint8_t)d5); lcd.setCursor(e3, 1); lcd.write((uint8_t)d6);
}

56

Re: PT2314

Дорогой Вы мой человек ! Огромное Вам человеческое спасибо , я 6 месяцев пытался сделать эту плюшку пока не обратился к Вам . Дай бог Вам здоровья ! Я уже и не осмелился просить о отображение этой кнопки , а Вы сами догадались . Всё великолепно работает и просто можно поставить точку на этом проекте .
PS. Сильно прошу прощения за испорченный выходной !
http://forum.rcl-radio.ru/uploads/images/2021/06/73ae8de6ecb339ac0a50728d2231fcc5.jpg
http://forum.rcl-radio.ru/uploads/images/2021/06/5f1d0ae5c2cdef8d5d1d2de1ee824245.jpg

57

Re: PT2314

Я уже определился с следующим проектом , тоже на Вашей разработке PT2314 + LCD2004 + анализатор спектра . Дисплей чик хотелось по интересней цветной 320х240 , но можно и этот без I2C . Индикаторы выходного сигнала хочу использовать тоже на ардуино . Одним словом 3 платки ардуинки в одном проекте и таймер сна обязательно !
http://forum.rcl-radio.ru/uploads/images/2021/06/3ba4e1a7b6098a6dd6e05057edfc59cc.jpg

58

Re: PT2314

LCD2004 при работе анализатора спектра можно использовать только в режиме параллельного подключения, по шине i2c не хватит быстродействия. Использование TFT так же не желательно при работе анализатора спектра, подключение SPI так же может обеспечить высокое быстродействие.

59

Re: PT2314

Понятно , все поиски в интернете ведут сюда аудио процессор и Ардуино . Очень хочется именно цветной дисплей 320х240 пусть без анализатора спектра , как таковой на lcd 2002 lcd2004 он не смотрится всё очень мелковато . Возьмётесь ?

60

Re: PT2314

Возможно осенью, сейчас на это совсем нет времени.

61

Re: PT2314

Здравствуйте. Повторил Ваш проект, все шикарно. Но есть нюанс часы сбиваются(отстают). Если усилком не пользоваться то часы идут нормально. Спасибо.

62

Re: PT2314

Поставьте дополнительную емкость 220-470 мкФ по цепи питания часов реального времени.

63

Re: PT2314

Доброго дня выбрал такой дисплей , но логика работает только с 3.3 вольт
https://aliexpress.ru/item/100500201840 … 1624609278
Какую плату взять : UNO там напряжение 5 вольт на входе и выходе нужны костыли для дисплея или ESP32 там напряжение 3.3 вольт и памяти побольше и костылей не нужно , но с библиотеками не супер . Остались Мега и Дуе , но дороговато . Я про новый проект PT2311 и TFT цветной

64

Re: PT2314

http://forum.rcl-radio.ru/uploads/images/2021/06/a212f651ed7cee58ad00b73ce49ecd6c.png

65

Re: PT2314

Это я понял , через делитель . Значит готовить Arduino NANO ? На ESP32 можно будет реализовать управление через веб браузер ? Нашёл хорошею библиотеку для tft ili9341 только для ардуинок :
http://marekburiak.github.io/ILI9341_due/

66

Re: PT2314

собирал на PT2313 звук кристально-чистый, слушать не привычно, но входов мало (3),собрал PT2314 входов (4) звук на много мягче, но оконечный усилитель не раскачевает ( играет тише), у меня ус(TDA8954TH двухканальный 2X 210 Вт)

67

Re: PT2314

http://forum.rcl-radio.ru/uploads/images/2021/06/ccbb5fe0ff315bc9e8329d0e7a80328e.jpg

68

Re: PT2314

Здравствуйте, как сделать переключение каналов по номеру цифры с пульта, а не по кругу?

69

Re: PT2314

Опубликуйте Ваш скетч.

70

Re: PT2314

http://forum.rcl-radio.ru/uploads/images/2021/06/18af2c2471d4130fe46ad0eafd3cd76b.png

71

Re: PT2314

#define IR_1 0xFED827 // Кнопка вверх
#define IR_2 0xFEF807 // Кнопка вниз
#define IR_3 0xFE58A7 // Кнопка >
#define IR_4 0xFE7887 // Кнопка <
#define IR_5 0xFE827D // Кнопка IN
#define IR_6 0xFEA25D // Кнопка SET
#define IR_7 0xFE08F7 // Кнопка MUTE
#define IR_8 0xFE48B7 // Кнопка STANDBY (POWER)// ПУЛЬТ ДНС

#define IR_9 0xFE807F      //IN0
#define IR_10 0xFE40BF   //IN1
#define IR_11 0xFEC03F   //IN2
#define IR_12 0xFE20DF  //IN3

72

Re: PT2314

я сделал , но в калонка при переключении слышен щелчёк
             if(ir.value==IR_9){in=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;}
             if(ir.value==IR_10){in=1;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;}
             if(ir.value==IR_11){in=2;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;}
             if(ir.value==IR_12){in=3;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;}

73

Re: PT2314

             if(ir.value==IR_9){in=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;audio();}
             if(ir.value==IR_10){in=1;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;audio();}
             if(ir.value==IR_11){in=2;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;audio();}
             if(ir.value==IR_12){in=3;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;audio();}

74 (2021-06-27 01:39:04 отредактировано fvnikolay)

Re: PT2314

щелчки проходят при подачи питание IN0(блютус) и IN1(FM приёмник)
питание идёт через nMOP транзистор.
при переключении IN2 и IN3 щелчков нет.
при выключение ус напряжение на IN0(блютус) или наIN1(FM приёмник) остаётся, как исправить?

#define IR_1 0xFED827 // Кнопка вверх
#define IR_2 0xFEF807 // Кнопка вниз
#define IR_3 0xFE58A7 // Кнопка >
#define IR_4 0xFE7887 // Кнопка <
#define IR_5 0xFE827D // Кнопка IN
#define IR_6 0xFEA25D // Кнопка SET
#define IR_7 0xFE08F7 // Кнопка MUTE
#define IR_8 0xFE48B7 // Кнопка STANDBY (POWER)// ПУЛЬТ ДНС

#define IR_9 0xFE807F    //IN0
#define IR_10 0xFE40BF   //IN1
#define IR_11 0xFEC03F   //IN2
#define IR_12 0xFE20DF   //IN3

#define BRIG 150       // Яркость подсветки экрана в режиме POWER OFF (0...255)
#include <Wire.h> 
#include <PT2314.h>            // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=434&download=1
#include <Wire.h> 
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip       
#include <EEPROM.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <DS3231.h>            // https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
   DS3231 clock;RTCDateTime DateTime;
   PT2314 pt;
   LiquidCrystal_I2C lcd(0x3F,16,2);  // Устанавливаем дисплей
   IRrecv irrecv(12); // указываем вывод модуля IR приемника
   Encoder myEnc(8, 9);// DT, CLK
   decode_results ir; 
      byte v1[8] = {0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111};
      byte v2[8] = {0b00111,0b00111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};      
      byte v3[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
      byte v4[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
      byte v5[8] = {0b11100,0b11100,0b00000,0b00000,0b00000,0b00000,0b11100,0b11100};
      byte v6[8] = {0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100};
      byte v7[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00111,0b00111};
      byte v8[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};
      byte a[6],d1,d2,d3,d4,d5,d6,e1,e2,e3,w,w2,i,www,power,save,gr1,gr2;
      int menu,menu0,menu1=1,menu2=0,vol,bass,treb,att_l,att_r,in,loud_on,gain0,gain1,gain2,gain3,gain4,mute,mute1,mute2,brig,hour,minut,secon;
      unsigned long times,oldPosition  = -999,newPosition;
 
void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT);   // КНОПКА SET
  pinMode(3,INPUT);   // КНОПКА IN
  pinMode(4,INPUT);   // КНОПКА MUTE
  pinMode(5,INPUT);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  pinMode(11,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 1
  pinMode(13,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 2
  pinMode(A0,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 3
  pinMode(A1,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 4
  analogWrite(6, 255);
  lcd.setCursor(2,0);lcd.print("Sound Processor");lcd.setCursor(2,1);lcd.print("HELLO KALYN"); delay(2000);lcd.clear();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);
  lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
  if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0);treb = EEPROM.read(1)-7;bass = EEPROM.read(2)-7;in = EEPROM.read(3);
  att_l = EEPROM.read(4);att_r = EEPROM.read(5);gain1 = EEPROM.read(6);gain2 = EEPROM.read(7);
  gain3 = EEPROM.read(8);gain4 = EEPROM.read(9);loud_on = EEPROM.read(10);brig = EEPROM.read(11);
  audio();
  analogWrite(6, brig);
}
 
void loop() {
  DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 
////////////////////// IR ///////////////////////////////////////////////////////////////
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  
 
    if(mute==0&&power==0){
  if(ir.value==IR_6&&menu1==1){menu1=0;menu2=1;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print("SETTING"); delay(500);lcd.clear();}
  if(ir.value==IR_6&&menu2==1){menu1=1;menu2=0;menu=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print("MENU"); delay(500);lcd.clear();}
 
  if(ir.value==IR_1&&menu1==1){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu>2){menu=0;}}//меню 1
  if(ir.value==IR_2&&menu1==1){menu--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu<0){menu=2;}}//меню 1
 
  if(ir.value==IR_1&&menu2==1){menu0++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0>4){menu0=0;}}//меню 2
  if(ir.value==IR_2&&menu2==1){menu0--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0<0){menu0=4;}}//меню 2
 
  if(ir.value==IR_5){in++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(in>3){in=0;}lcd.setCursor(4,0);lcd.print("INPUT ");lcd.print(in+1);audio();delay(500);lcd.clear();}// IN
  }
             if(ir.value==IR_9){mute=1;in=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;audio();delay(1000);mute=0;}
             if(ir.value==IR_10){mute=1;in=1;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;audio();delay(1000);mute=0;}
             if(ir.value==IR_11){in=2;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;audio();}
             if(ir.value==IR_12){in=3;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;audio();}
  if(ir.value==IR_7&&mute==0&&power==0){mute=1;pt.setAttR(31);pt.setAttL(31);gr1=0;gr2=0;cl();lcd.setCursor(6,0);lcd.print("MUTE");menu1=100;menu2=100;delay(500);}// MUTE
  if(ir.value==IR_7&&mute==1&&power==0){mute=0;cl();menu1=1;menu=0;gr1=0;gr2=0;cl();audio();}// MUTE
 
  if(ir.value==IR_8&&power==0){power=1;pt.setAttR(31);pt.setAttL(31);audio();gr1=0;gr2=0;cl();lcd.clear();lcd.setCursor(3,0);lcd.print("POWER  OFF");menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, BRIG);delay(500);lcd.clear();}// power off
  if(ir.value==IR_8&&power==1){power=0;gr1=0;gr2=0;cl();lcd.backlight();lcd.clear();lcd.setCursor(3,0);lcd.print("POWER ON ");menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(800);lcd.clear();}// power on
///////////////////////////////////////////////////////////////////////////////////////// 
 
/////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////  
  if(mute==0&&power==0){
  if(digitalRead(2)==HIGH&&menu1==1){menu1=0;menu2=1;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print("SETTING"); delay(500);lcd.clear();}
  if(digitalRead(2)==HIGH&&menu2==1){menu1=1;menu2=0;menu=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print("MENU"); delay(500);lcd.clear();}
 
  if(digitalRead(10)==LOW&&menu1==1){menu++;cl();times=millis();w=1;w2=1;if(menu>2){menu=0;}}//меню 1
  if(digitalRead(10)==LOW&&menu2==1){menu0++;cl();times=millis();w=1;w2=1;if(menu0>4){menu0=0;}}//меню 2
 
  if(digitalRead(3)==HIGH){in++;cl();;times=millis();w=1;w2=1;if(in>3){in=0;}lcd.setCursor(4,0);lcd.print("INPUT ");lcd.print(in+1);audio();delay(500);lcd.clear();}// IN
  }
 
  if(digitalRead(4)==HIGH&&mute==0&&power==0){mute=1;pt.setAttR(31);pt.setAttL(31);cl();lcd.setCursor(6,0);lcd.print("MUTE");menu1=100;menu2=100;delay(500);}// MUTE
  if(digitalRead(4)==HIGH&&mute==1&&power==0){mute=0;cl();menu1=1;menu=0;cl();audio();}// MUTE
 
  if(digitalRead(5)==HIGH&&power==0){power=1;pt.setAttR(31);pt.setAttL(31);lcd.clear();lcd.setCursor(4,0);lcd.print("POWER  OFF");menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, 50);delay(500);lcd.clear();}// power off
  if(digitalRead(5)==HIGH&&power==1){power=0;lcd.backlight();lcd.clear();lcd.setCursor(4,0);lcd.print("POWER ON ");menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(800);lcd.clear();}// power on
    if(power==0){digitalWrite(7,HIGH);}
      //if(power==0){digitalWrite(7,LOW);}// инверсия выхода STANDBY
   if(in==0){digitalWrite(11,HIGH);}else{digitalWrite(11,LOW);}  // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 1____________________________
   if(in==1){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}   // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 2_____________________________
   if(in==2){digitalWrite(A0,HIGH);}else{digitalWrite(A0,LOW);}   // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 3_____________________________
   if(in==3){digitalWrite(A1,HIGH);}else{digitalWrite(A1,LOW);}   // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 4_____________________________
  if(save==1&&w2==1){save=0;w2=0;
     EEPROM.update(0,vol);EEPROM.update(1,treb+7);EEPROM.update(2,bass+7);EEPROM.update(3,in);
     EEPROM.update(4,att_l);EEPROM.update(5,att_r);EEPROM.update(6,gain1);EEPROM.update(7,gain2);
     EEPROM.update(8,gain3);EEPROM.update(9,gain4);EEPROM.update(10,loud_on);EEPROM.update(11,brig);}
///////////////////////////////////////////////////////////////////////////////////////// 
 
////////////// VOLUME ///////////////////////////////////////////////////////////////////
 if(menu==0&&menu1==1){
   if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка >>>>>>
   if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <<<<<<
 
   if (newPosition != oldPosition){oldPosition = newPosition;vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
   a[0]= vol/10;a[1]=vol%10;
   for(i=0;i<2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print("IN");lcd.print(in+1);lcd.print(" VOLUME");
   if(vol<0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(" ");}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BASS ///////////////////////////////////////////////////////////////////
 if(menu==1&&menu1==1){
   if(ir.value==IR_3){bass++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка >>>>>>
   if(ir.value==IR_4){bass--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка <<<<<<
 
   if (newPosition != oldPosition){oldPosition = newPosition;bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();audio();}
   a[0]= abs(bass*2)/10;a[1]=abs(bass*2)%10;
   for(i=0;i<2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print("BASS   dB");
   if(bass<0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(" ");}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// TREBLE ///////////////////////////////////////////////////////////////////
 if(menu==2&&menu1==1){
   if(ir.value==IR_3){treb++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка >>>>>>
   if(ir.value==IR_4){treb--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка <<<<<<
 
   if (newPosition != oldPosition){oldPosition = newPosition;treb=treb+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();audio();}
   a[0]= abs(treb*2)/10;a[1]=abs(treb*2)%10;
 
   for(i=0;i<2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print("TREBLE dB");
   if(treb<0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(" ");}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_L ///////////////////////////////////////////////////////////////////
 if(menu0==0&&menu2==1){
   if(ir.value==IR_3){att_l++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){att_l++;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка >>>>>>
   if(ir.value==IR_4){att_l--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){att_l--;gr1=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка <<<<<<
 
   if (newPosition != oldPosition){oldPosition = newPosition;att_l=att_l+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_l_func();audio();}
   a[0]= abs(att_l)/10;a[1]=abs(att_l)%10;
   for(i=0;i<2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print("ATT_L");
   lcd.setCursor(0,1);lcd.print(-att_l*1.25,2);lcd.print(" ");lcd.setCursor(6,1);lcd.print("dB");}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_R ///////////////////////////////////////////////////////////////////
 if(menu0==1&&menu2==1){
   if(ir.value==IR_3){att_r++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){att_r++;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка >>>>>>
   if(ir.value==IR_4){att_r--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){att_r--;gr1=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка <<<<<<
 
   if (newPosition != oldPosition){oldPosition = newPosition;att_r=att_r+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_r_func();audio();}
   a[0]= abs(att_r)/10;a[1]=abs(att_r)%10;
   for(i=0;i<2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print("ATT_R");
   lcd.setCursor(0,1);lcd.print(-att_r*1.25,2);lcd.print(" ");lcd.setCursor(6,1);lcd.print("dB");}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
 if(menu0==2&&menu2==1){
   switch(in){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     case 3: gain0 = gain4;break;
     }
 
   if(ir.value==IR_3){gain0++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка >>>>>>
   if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка <<<<<<
 
   if (newPosition != oldPosition){oldPosition = newPosition;gain0=gain0+newPosition;myEnc.write(0);newPosition=0;times=millis();www=1;w=1;w2=1;gain_func();}
 
  switch(in){
     case 0: gain1 = gain0;break;
     case 1: gain2 = gain0;break;
     case 2: gain3 = gain0;break;
     case 3: gain4 = gain0;break;
     }  
     a[0]= abs(gain0);
 
   for(i=0;i<1;i++){switch(i){case 0: e1=13,e2=14,e3=15;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,1);lcd.print("GAIN ");lcd.print(gain0*3.75,2);lcd.print(" ");lcd.setCursor(10,1);lcd.print("dB");
   if(www==1){audio();www=0;}
   lcd.setCursor(0,0);lcd.print("INPUT ");lcd.print(in+1);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// LOUDNESS ///////////////////////////////////////////////////////////////////
 if(menu0==3&&menu2==1){
   if(ir.value==IR_3){loud_on++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on>1){loud_on=0;};if(loud_on<0){loud_on=1;}audio();}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){loud_on++;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on>1){loud_on=0;};if(loud_on<0){loud_on=1;}audio();}// кнопка >>>>>>
   if(ir.value==IR_4){loud_on--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;if(loud_on>1){loud_on=0;};if(loud_on<0){loud_on=1;}audio();}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){loud_on--;gr1=0;cl1();times=millis();w=1;w2=1;if(loud_on>1){loud_on=0;};if(loud_on<0){loud_on=1;}audio();}// кнопка <<<<<<
 
   if (newPosition != oldPosition){oldPosition = newPosition;loud_on=loud_on+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;if(loud_on>1){loud_on=0;};if(loud_on<0){loud_on=1;};audio();}
   if(loud_on==1){lcd.setCursor(2,0);lcd.print("LOUDNESS  ON ");}
             else{lcd.setCursor(2,0);lcd.print("LOUDNESS  OFF");}}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BRIGHTNESS ///////////////////////////////////////////////////////////////////
 if(menu0==4&&menu2==1){
   if(ir.value==IR_3){brig++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){brig++;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка >>>>>>
   if(ir.value==IR_4){brig--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){brig--;gr1=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка <<<<<<
 
   if (newPosition != oldPosition){oldPosition = newPosition;brig=brig+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}
   a[0]= abs(brig)/100;a[1]=abs(brig)/10%10;a[2]=abs(brig)%10;
   for(i=0;i<3;i++){switch(i){case 0: e1=7,e2=8,e3=9;break;
                              case 1: e1=10,e2=11,e3=12;break;
                              case 2: e1=13,e2=14,e3=15;break;
                              }digit();}
 
   lcd.setCursor(0,0);lcd.print("BRIGHT");
   lcd.setCursor(0,1);lcd.print(brig*100/255);lcd.print(" ");lcd.setCursor(4,1);lcd.print("%");}
////////////////////////////////////////////////////////////////////////////////////////////
 
if(millis()-times>10000&&w==1&&mute==0&&power==0){w=0;menu2=0;menu1=1;menu=0;cl();}
 
/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
if(power==1){digitalWrite(7,LOW);
     a[0]=DateTime.hour/10;
     a[1]=DateTime.hour%10;
     a[2]=DateTime.minute/10;
     a[3]=DateTime.minute%10;
     a[4]=DateTime.second/10;
     a[5]=DateTime.second%10;
   for(i=0;i<4;i++){
    switch(i){
        case 0: e1=0,e2=1,e3=2;break;
        case 1: e1=3,e2=4,e3=5;break;
        case 2: e1=7,e2=8,e3=9;break;
        case 3: e1=10,e2=11,e3=12;break;
   }digit();}
 
   lcd.setCursor(6,0);lcd.print(".");lcd.setCursor(6,1);lcd.print(".");
   lcd.setCursor(14,1);lcd.print(a[4]);lcd.setCursor(15,1);lcd.print(a[5]);   
//// set time ////
  if(digitalRead(10)==LOW&&digitalRead(2)==HIGH){hour++;if(hour>23){hour=0;} clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&&digitalRead(3)==HIGH){minut++;if(minut>59){minut=0;} clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100); }
  if(digitalRead(10)==LOW&&digitalRead(4)==HIGH){secon=0; clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100); }
}
////////////////////////////////////////////////////////////////////////////////////////////
}// loop
 
 
void times_f(){lcd.setCursor(1,1);lcd.print(DateTime.hour/10);lcd.print(DateTime.hour%10);lcd.print(":");lcd.print(DateTime.minute/10);lcd.print(DateTime.minute%10);lcd.print(":");lcd.print(DateTime.second/10);lcd.print(DateTime.second%10);}
void brig_func(){if(brig<0){brig=0;}if(brig>255){brig=255;}}
void gain_func(){if(gain0<0){gain0=0;}if(gain0>3){gain0=3;}}
void att_r_func(){if(att_r<0){att_r=0;}if(att_r>24){att_r=24;}}
void att_l_func(){if(att_l<0){att_l=0;}if(att_l>24){att_l=24;}}
void treb_func(){if(treb<-7){treb=-7;}if(treb>7){treb=7;}}
void bass_func(){if(bass<-7){bass=-7;}if(bass>7){bass=7;}}
void vol_func(){if(vol<0){vol=0;}if(vol>56){vol=56;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(200);}  
void audio(){
  pt.setVolume(vol); // int 0...56 === -70...0 dB step 1.25 dB
  pt.setAttL(att_l); // int 0...24 === 0...-30 db step 1.25 dB > int 31 === mute on     
  pt.setAttR(att_r); // int 0...24 === 0...-30 dB step 1.25 dB > int 31 === mute on
  pt.setSwitch(in, loud_on, gain0); 
        // input      int 0..3 === IN 1...4 
        // loudness   int 0...1 === 1-on 0-off
        // input gain int 0...3 === 0...11.25dB step 3.75 dB
  pt.setBass(bass);   // int -7...+7 === -14...+14 dB step 2 dB
  pt.setTreble(treb); // int -7...+7 === -14...+14 dB step 2 dB
  }
 
void to_Timer(){newPosition = myEnc.read()/4;}  
 
void digit(){switch(a[i]){
case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);}

75 (2021-06-27 21:32:12 отредактировано anton7558)

Re: PT2314

Я бы сделал так шумов при переключении нет , у Вас команды для кнопок написаны по разному

 if (ir.value == IR_10) {
    in = 0;
    gr1 = 0;
    gr2 = 0;
    cl();
    times = millis();
    w = 1;
    w2 = 1;
    audio();
    lcd.setCursor(3, 0);
    lcd.print("  AUX  1");
    delay(1500);
  }
  if (ir.value == IR_11) {
    in = 1;
    gr1 = 0;
    gr2 = 0;
    cl();
    times = millis();
    w = 1;
    w2 = 1;
    audio();
    lcd.setCursor(3, 0);
    lcd.print("  AUX  2");
    delay(1500);
  }
  if (ir.value == IR_12) {
    in = 2;
    gr1 = 0;
    gr2 = 0;
    cl();
    times = millis();
    w = 1;
    w2 = 1;
    audio();
    lcd.setCursor(3, 0);
    lcd.print("  AUX  3");
    delay(1500);
  }
  if (ir.value == IR_13) {
    in = 3;
    gr1 = 0;
    gr2 = 0;
    cl();
    times = millis();
    w = 1;
    w2 = 1;
    audio();
    lcd.setCursor(3, 0);
    lcd.print("Bluetooth");
    delay(1500);
    lcd.clear();
  }