Вы уже используете библиотеку MsTimer2, использовать ISR (TIMER1_COMPA_vect){newPosition = myEnc.read()/4;} не нужно.
#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 0x807F8877 // Кнопка сон 10 минут
#define IR_10 0x807F728D // Кнопка вход 1
#define IR_11 0x807FB04F // Кнопка вход 2
#define IR_12 0x807F30CF // Кнопка вход 3
#define IR_13 0x807F52AD // Кнопка вход 4
#define BRIG 200 // Яркость подсветки экрана в режиме POWER OFF (0...255)
#define KOL 56 // максимальное значение регулировки подсветки
#define KOL1 14 // максимальное значение регулировки подсветки
#include <Adafruit_NeoPixel.h> // https://github.com/adafruit/Adafruit_NeoPixel.git
#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;
unsigned long times, oldPosition = -56, newPosition;
bool son_k, son;
PT2314 pt;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, 11, NEO_GRB + NEO_KHZ800); //подсветка 12 LED, D11
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;
int poz, data;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
clock.begin();
strip.begin();
strip.setBrightness(35);
poz = data / 12;
irrecv.enableIRIn();
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() {
if (digitalRead(10) == LOW) {
for (int i = 0; i < 12; i++) {
strip.setPixelColor(i, strip.Color(50, 0, 0));
} strip.show(); delay(100);
for (int i = 0; i < 12; i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0));
} strip.show();
}
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(3, 0);
switch (in) {
case 0: lcd.print(" AUX 1"); break;
case 1: lcd.print(" AUX 2"); break;
case 2: lcd.print(" AUX 3"); break;
case 3: lcd.print("Bluetooth"); break;
}
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(1000);
lcd.clear();
}
if (ir.value == IR_8 && power == 1) {
digitalWrite(7, HIGH);
gr1 = 0;
gr2 = 0;
cl();
lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("POWER ON ");
menu1 = 1;
menu = 0;
loud_on = 1;
myEnc.write(0);
audio();
analogWrite(6, brig);
delay(1000);
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(1000);
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(1000);
lcd.clear();
}
if (ir.value == IR_8 && power == 1) {
power = 0;
digitalWrite(7, HIGH);
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(1000);
lcd.clear();
}
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();
}
/////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////
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(3, 0);
switch (in) {
case 0: lcd.print(" AUX 1"); break;
case 1: lcd.print(" AUX 2"); break;
case 2: lcd.print(" AUX 3 "); break;
case 3: lcd.print("Bluetooth"); break;
}
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(1000);
lcd.clear();
}
if (power == 0) {
digitalWrite(7, HIGH);
}
if (digitalRead(5) == HIGH && power == 1) {
power = 0; // power on
digitalWrite(7, HIGH);
lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("POWER ON ");
menu1 = 1;
menu = 0;
delay(1000);
myEnc.write(0);
audio();
analogWrite(6, brig);
lcd.clear();
}
//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;
oldPosition = newPosition;
data = data + newPosition; if (data >= 0 && data <= KOL) {
poz = poz + newPosition;
times = millis();
}
myEnc.write(0);
newPosition = 0;
times = millis();
strip.setPixelColor(poz - 1, strip.Color(0, 0, 0));
strip.setPixelColor(poz, strip.Color(data, 0 + data / 10, KOL - data));
strip.setPixelColor(poz + 1, strip.Color(0, 0, 0));
if (poz > 11) {
poz = 0;
} if (poz < 0) {
poz = poz + 12;
}
if (data < 0) {
data = 0;
} if (data > KOL) {
data = KOL;
}
strip.show();
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;
oldPosition = newPosition;
data = data + newPosition; if (data >= 0 && data <= KOL1) {
poz = poz + newPosition;
}
myEnc.write(0);
newPosition = 0;
strip.setPixelColor(poz - 1, strip.Color(0, 0, 0));
strip.setPixelColor(poz, strip.Color(data, 0 + data / 10, KOL1 - data));
strip.setPixelColor(poz + 1, strip.Color(0, 0, 0));
if (poz > 11) {
poz = 0;
} if (poz < 0) {
poz = poz + 12;
}
if (data < 0) {
data = 0;
} if (data > KOL1) {
data = KOL1;
}
strip.show();
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;
oldPosition = newPosition;
data = data + newPosition; if (data >= 0 && data <= KOL1) {
poz = poz + newPosition;
}
myEnc.write(0);
newPosition = 0;
strip.setPixelColor(poz - 1, strip.Color(0, 0, 0));
strip.setPixelColor(poz, strip.Color(data, 0 + data / 10, KOL1 - data));
strip.setPixelColor(poz + 1, strip.Color(0, 0, 0));
if (poz > 11) {
poz = 0;
} if (poz < 0) {
poz = poz + 12;
}
if (data < 0) {
data = 0;
} if (data > KOL1) {
data = KOL1;
}
strip.show();
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 = 1;
};
if (loud_on < 0) {
loud_on = 0;
} 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 = 1;
};
if (loud_on < 0) {
loud_on = 0;
} 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 = 1;
};
if (loud_on < 0) {
loud_on = 0;
} 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 = 1;
};
if (loud_on < 0) {
loud_on = 0;
} 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 = 1;
};
if (loud_on < 0) {
loud_on = 0;
};
audio();
}
if (loud_on == 1) {
lcd.setCursor(2, 0);
lcd.print("LOUDNESS ON ");
delay(200);
} else {
lcd.setCursor(2, 0);
lcd.print("LOUDNESS OFF");
delay(200);
}
}
////////////// 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 end
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);
}