1 (2022-05-15 18:40:23 отредактировано bobrusev11)

Тема: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Помогите переделать ваш скетч под комплектующие.
#include <Wire.h>
#include <EEPROMex.h>
#include <PT2257.h>
#include <LiquidCrystal.h>
PT2257 rt;
#include <Encoder.h>
Encoder myEnc(10, 11);//CLK, DT
LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7
int menu,vol,vol_ram,vol_d,z,balans,balans_ram,balans_d,z1;
byte w,mute;
long oldPosition  = -999;
unsigned long time,time1;
  byte a1[8]={0b00000,0b00000,0b11011,0b11011,0b11011,0b11011,0b00000,0b00000};
  byte a2[8]={0b00000,0b00000,0b11000,0b11000,0b11000,0b11000,0b00000,0b00000};
  byte a3[8]={0b00000,0b00000,0b00000,0b11011,0b11011,0b00000,0b00000,0b00000};
  byte a4[8]={0b00000,0b00000,0b00000,0b11000,0b11000,0b00000,0b00000,0b00000};
void setup() {
  Wire.begin();Serial.begin(9600);lcd.begin(16, 2);
  pinMode(12,INPUT);// кнопка энкодера
  pinMode(A0,INPUT);// кнопка mute
   lcd.createChar(0,a1); lcd.createChar(1,a2);lcd.createChar(2,a3); lcd.createChar(3,a4);
   vol = EEPROM.read(0);// vol eeprom
   balans = EEPROM.read(1)-7;
   vol_ram=vol;balans_ram=balans;
   delay(1000);
   audio();
}

void loop() { 
    if(digitalRead(12)==LOW){menu++;myEnc.write(0);vol_ram=vol;balans_ram=balans;delay(300);if(menu>1||menu<0){menu=0;}}
/////////////////////////////////////// vol /////////////////////////////////////
if(menu==0){   
    long newPosition = myEnc.read()/4+vol_ram;
    if (newPosition != oldPosition) {
    oldPosition = newPosition;vol=newPosition;   
    audio();time = millis();w=1;
    if(vol>79){myEnc.write(0);vol_ram=79;}
    if(vol<0){myEnc.write(0);vol_ram=0;}   
}}

// индикация баланс + управление кнопками +\- 4 дБ ///////
if(menu==1){   
    long newPosition = myEnc.read()/4+balans_ram;
    if (newPosition != oldPosition) {
    oldPosition = newPosition;balans=newPosition;   
    audio();time = millis();w=1;
    if(balans>7){myEnc.write(0);balans_ram=7;}
    if(balans<-7){myEnc.write(0);balans_ram=-7;}   
}}
/////////////////////////////////////////////////////////////
   if(millis()-time1>100){lcd.clear();vol_d=vol/3;
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}}
   if((vol_d)%2==0){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)1);}else{lcd.write((uint8_t)3);}}
   lcd.setCursor(14,0);lcd.print(vol);time1=millis();

   if(balans<0){lcd.setCursor(balans+7,1);if(menu==1){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}
   if(balans>0){lcd.setCursor(balans+8,1);if(menu==1){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}
   if(balans==0){lcd.setCursor(7,1);if(menu==1){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}lcd.setCursor(8,1);
   if(menu==1){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}else{lcd.setCursor(7,1);if(balans>0){lcd.print("+");}lcd.print(balans);}
   }
///////////// mute ////////////////////////////////
  if(analogRead(A1)>900){mute++;delay(300);if(mute>1){mute=0;}audio();}
///////////// eeprom //////////////////////////////
if(millis()-time>10000 && w==1){// запись всех настроек в EEPROM через 60 сек неактивности
     EEPROM.update(0,vol);EEPROM.update(1,balans+7); w=0;}
}

void audio(){
  rt.setLeft(vol-8+balans); // int 0...79
  rt.setRight(vol-8-balans);// int 0...79
  rt.setMute(mute);  // int 0...1
}

2 (2022-05-15 23:52:06 отредактировано bobrusev11)

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

немного подправил ,загрузил скеч, ,  подсветки нет появились цифры 40 в верхней строке и +7 в нижней , крутя энкодер все регулируется, как прекрутить пульт теперь?


#include <Wire.h>
#include <EEPROMex.h>
#include <PT2257.h>
#include <LiquidCrystal_I2C.h>
PT2257 rt;
#include <Encoder.h>
Encoder myEnc(11, 10);//S1, S2
LiquidCrystal_I2C lcd(0x27,16,2);// A4,A5
int menu,vol,vol_ram,vol_d,z,balans,balans_ram,balans_d,z1;
byte w,mute;
long oldPosition  = -999;
unsigned long time,time1;
  byte a1[8]={0b00000,0b00000,0b11011,0b11011,0b11011,0b11011,0b00000,0b00000};
  byte a2[8]={0b00000,0b00000,0b11000,0b11000,0b11000,0b11000,0b00000,0b00000};
  byte a3[8]={0b00000,0b00000,0b00000,0b11011,0b11011,0b00000,0b00000,0b00000};
  byte a4[8]={0b00000,0b00000,0b00000,0b11000,0b11000,0b00000,0b00000,0b00000};
void setup() {
  Wire.begin();Serial.begin(9600);lcd.begin(16,2);
  pinMode(12,INPUT);// кнопка энкодера
  pinMode(A0,INPUT);// кнопка mute
   lcd.createChar(0,a1); lcd.createChar(1,a2);lcd.createChar(2,a3); lcd.createChar(3,a4);
   vol = EEPROM.read(0);// vol eeprom
   balans = EEPROM.read(1)-7;
   vol_ram=vol;balans_ram=balans;
   delay(1000);
   audio();
}

void loop() { 
    if(digitalRead(12)==LOW){menu++;myEnc.write(0);vol_ram=vol;balans_ram=balans;delay(300);if(menu>1||menu<0){menu=0;}}
/////////////////////////////////////// vol /////////////////////////////////////
if(menu==0){   
    long newPosition = myEnc.read()/4+vol_ram;
    if (newPosition != oldPosition) {
    oldPosition = newPosition;vol=newPosition;   
    audio();time = millis();w=1;
    if(vol>79){myEnc.write(0);vol_ram=79;}
    if(vol<0){myEnc.write(0);vol_ram=0;}   
}}

// индикация баланс + управление кнопками +\- 4 дБ ///////
if(menu==1){   
    long newPosition = myEnc.read()/4+balans_ram;
    if (newPosition != oldPosition) {
    oldPosition = newPosition;balans=newPosition;   
    audio();time = millis();w=1;
    if(balans>7){myEnc.write(0);balans_ram=7;}
    if(balans<-7){myEnc.write(0);balans_ram=-7;}   
}}
/////////////////////////////////////////////////////////////
   if(millis()-time1>100){lcd.clear();vol_d=vol/3;
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}}
   if((vol_d)%2==0){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)1);}else{lcd.write((uint8_t)3);}}
   lcd.setCursor(14,0);lcd.print(vol);time1=millis();

   if(balans<0){lcd.setCursor(balans+7,1);if(menu==1){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}
   if(balans>0){lcd.setCursor(balans+8,1);if(menu==1){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}
   if(balans==0){lcd.setCursor(7,1);if(menu==1){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}lcd.setCursor(8,1);
   if(menu==1){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}else{lcd.setCursor(7,1);if(balans>0){lcd.print("+");}lcd.print(balans);}
   }
///////////// mute ////////////////////////////////
  if(analogRead(A1)>900){mute++;delay(300);if(mute>1){mute=0;}audio();}
///////////// eeprom //////////////////////////////
if(millis()-time>10000 && w==1){// запись всех настроек в EEPROM через 60 сек неактивности
     EEPROM.update(0,vol);EEPROM.update(1,balans+7); w=0;}
}

void audio(){
  rt.setLeft(vol-8+balans); // int 0...79
  rt.setRight(vol-8-balans);// int 0...79
  rt.setMute(mute);  // int 0...1
}

3

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

подскажите пожалуйста , как пульт добавить?

4

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Протестируйте пожалуйста скетч, пока без пульта, проверьте режим MUTE.
Изменены пины энкодера 8, 9, 10 = clk, dt, sw

#include <Wire.h>
#include <EEPROM.h>
#include <PT2257.h>
#include <LiquidCrystal_I2C.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>         // входит в состав библиотеки IRremote
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip 
  PT2257 rt;
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  decode_results ir; 
  Encoder myEnc(8, 9);//CLK, DT
  LiquidCrystal_I2C lcd(0x27,16,4);  // Устанавливаем дисплей
  int menu,vol,vol_d,z,balans,balans_d,z1;
  byte w,mute,w1=1;
  long time,time1,oldPosition  = -999,newPosition;
  byte a1[8]={0b00000,0b00000,0b11011,0b11011,0b11011,0b11011,0b00000,0b00000};
  byte a2[8]={0b00000,0b00000,0b11000,0b11000,0b11000,0b11000,0b00000,0b00000};
  byte a3[8]={0b00000,0b00000,0b00000,0b11011,0b11011,0b00000,0b00000,0b00000};
  byte a4[8]={0b00000,0b00000,0b00000,0b11000,0b11000,0b00000,0b00000,0b00000};

  
void setup() {
  Wire.begin();Serial.begin(9600);lcd.init();lcd.backlight();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  pinMode(10,INPUT);// кнопка энкодера
  pinMode(A1,INPUT_PULLUP);// кнопка mute
   lcd.createChar(0,a1); lcd.createChar(1,a2);lcd.createChar(2,a3); lcd.createChar(3,a4);
   vol = EEPROM.read(0);// vol eeprom
   balans = EEPROM.read(1)-7;
   delay(1000);
   audio();
}

void loop() { 
    if(digitalRead(10)==LOW){menu++;w1=1;myEnc.write(0);delay(300);if(menu>1||menu<0){menu=0;}}
/////////////////////////////////////// vol /////////////////////////////////////
if(menu==0){   
  if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    vol=vol-newPosition;myEnc.write(0);newPosition=0; 
    if(vol>79){vol=79;}if(vol<0){vol=0;} 
    audio();time = millis();w=1;w1=1;    
}}

// индикация баланс + управление кнопками +\- 4 дБ ///////
if(menu==1){   
   if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    balans=balans-newPosition;myEnc.write(0);newPosition=0; 
    if(balans>7){balans=7;}if(balans<-7){balans=-7;} 
    audio();time = millis();w=1;w1=1;   
}}
/////////////////////////////////////////////////////////////
if(w1==1){w1=0;vol_d=vol/3;
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}lcd.print("  ");}
   if((vol_d)%2==0){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)1);}else{lcd.write((uint8_t)3);}}
   lcd.setCursor(14,0);lcd.print(vol);time1=millis();

   if(balans<=-1){lcd.setCursor(6+balans,1);if(menu==1){if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)0);lcd.print(" ");}
      else{if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)2);lcd.print(" ");}}
   if(balans>=1){lcd.setCursor(balans+7,1);if(menu==1){lcd.print(" ");lcd.write((uint8_t)0);lcd.print(" ");}else{lcd.print(" ");lcd.write((uint8_t)2);lcd.print(" ");}}
   
   if(balans==0){lcd.setCursor(6,1);lcd.print(" ");}
   if(balans>=0){lcd.setCursor(7,1);lcd.print("+");lcd.print(" ");}else{lcd.setCursor(7,1);lcd.print("-");}
   lcd.setCursor(8,1);lcd.print(abs(balans));if(balans==0){lcd.print(" ");}
   }
///////////// mute ////////////////////////////////
  if(digitalRead(A1)==LOW && mute==0){mute=1;menu=100;audio();lcd.clear();lcd.setCursor(6,0);lcd.print("MUTE");delay(300);}
  if(digitalRead(A1)==LOW && mute==1){mute=0;w1=1;lcd.clear();menu=0;audio();delay(300);}
  
///////////// eeprom //////////////////////////////
if(millis()-time>10000 && w==1){// запись всех настроек в EEPROM через 10 сек неактивности
     EEPROM.update(0,vol);EEPROM.update(1,balans+7); w=0;}
}

void audio(){
  rt.setLeft(vol-8+balans); // int 0...79
  rt.setRight(vol-8-balans);// int 0...79
  rt.setMute(mute);  // int 0...1
}

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

5 (2022-05-20 23:10:48 отредактировано bobrusev11)

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

liman324 пишет:

Протестируйте пожалуйста скетч, пока без пульта, проверьте режим MUTE.
Изменены пины энкодера 8, 9, 10 = clk, dt, sw

#include <Wire.h>
#include <EEPROM.h>
#include <PT2257.h>
#include <LiquidCrystal_I2C.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>         // входит в состав библиотеки IRremote
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip 
  PT2257 rt;
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  decode_results ir; 
  Encoder myEnc(8, 9);//CLK, DT
  LiquidCrystal_I2C lcd(0x27,16,4);  // Устанавливаем дисплей
  int menu,vol,vol_d,z,balans,balans_d,z1;
  byte w,mute,w1=1;
  long time,time1,oldPosition  = -999,newPosition;
  byte a1[8]={0b00000,0b00000,0b11011,0b11011,0b11011,0b11011,0b00000,0b00000};
  byte a2[8]={0b00000,0b00000,0b11000,0b11000,0b11000,0b11000,0b00000,0b00000};
  byte a3[8]={0b00000,0b00000,0b00000,0b11011,0b11011,0b00000,0b00000,0b00000};
  byte a4[8]={0b00000,0b00000,0b00000,0b11000,0b11000,0b00000,0b00000,0b00000};

  
void setup() {
  Wire.begin();Serial.begin(9600);lcd.init();lcd.backlight();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  pinMode(10,INPUT);// кнопка энкодера
  pinMode(A1,INPUT_PULLUP);// кнопка mute
   lcd.createChar(0,a1); lcd.createChar(1,a2);lcd.createChar(2,a3); lcd.createChar(3,a4);
   vol = EEPROM.read(0);// vol eeprom
   balans = EEPROM.read(1)-7;
   delay(1000);
   audio();
}

void loop() { 
    if(digitalRead(10)==LOW){menu++;w1=1;myEnc.write(0);delay(300);if(menu>1||menu<0){menu=0;}}
/////////////////////////////////////// vol /////////////////////////////////////
if(menu==0){   
  if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    vol=vol-newPosition;myEnc.write(0);newPosition=0; 
    if(vol>79){vol=79;}if(vol<0){vol=0;} 
    audio();time = millis();w=1;w1=1;    
}}

// индикация баланс + управление кнопками +\- 4 дБ ///////
if(menu==1){   
   if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    balans=balans-newPosition;myEnc.write(0);newPosition=0; 
    if(balans>7){balans=7;}if(balans<-7){balans=-7;} 
    audio();time = millis();w=1;w1=1;   
}}
/////////////////////////////////////////////////////////////
if(w1==1){w1=0;vol_d=vol/3;
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}lcd.print("  ");}
   if((vol_d)%2==0){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)1);}else{lcd.write((uint8_t)3);}}
   lcd.setCursor(14,0);lcd.print(vol);time1=millis();

   if(balans<=-1){lcd.setCursor(6+balans,1);if(menu==1){if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)0);lcd.print(" ");}
      else{if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)2);lcd.print(" ");}}
   if(balans>=1){lcd.setCursor(balans+7,1);if(menu==1){lcd.print(" ");lcd.write((uint8_t)0);lcd.print(" ");}else{lcd.print(" ");lcd.write((uint8_t)2);lcd.print(" ");}}
   
   if(balans==0){lcd.setCursor(6,1);lcd.print(" ");}
   if(balans>=0){lcd.setCursor(7,1);lcd.print("+");lcd.print(" ");}else{lcd.setCursor(7,1);lcd.print("-");}
   lcd.setCursor(8,1);lcd.print(abs(balans));if(balans==0){lcd.print(" ");}
   }
///////////// mute ////////////////////////////////
  if(digitalRead(A1)==LOW && mute==0){mute=1;menu=100;audio();lcd.clear();lcd.setCursor(6,0);lcd.print("MUTE");delay(300);}
  if(digitalRead(A1)==LOW && mute==1){mute=0;w1=1;lcd.clear();menu=0;audio();delay(300);}
  
///////////// eeprom //////////////////////////////
if(millis()-time>10000 && w==1){// запись всех настроек в EEPROM через 10 сек неактивности
     EEPROM.update(0,vol);EEPROM.update(1,balans+7); w=0;}
}

void audio(){
  rt.setLeft(vol-8+balans); // int 0...79
  rt.setRight(vol-8-balans);// int 0...79
  rt.setMute(mute);  // int 0...1
}

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




  • протестировал все работает, только когда звук прибавляешь , идет сразу по 10 , доходит до 90 потом опять 10 и идет до 79

6

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Звук я поправил:

#include <Wire.h>
#include <EEPROM.h>
#include <PT2257.h>
#include <LiquidCrystal_I2C.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>         // входит в состав библиотеки IRremote
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip 
  PT2257 rt;
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  decode_results ir; 
  Encoder myEnc(8, 9);//CLK, DT
  LiquidCrystal_I2C lcd(0x27,16,4);  // Устанавливаем дисплей
  int menu,vol,vol_d,z,balans,balans_d,z1;
  byte w,mute,w1=1;
  long time,time1,oldPosition  = -999,newPosition;
  byte a1[8]={0b00000,0b00000,0b11011,0b11011,0b11011,0b11011,0b00000,0b00000};
  byte a2[8]={0b00000,0b00000,0b11000,0b11000,0b11000,0b11000,0b00000,0b00000};
  byte a3[8]={0b00000,0b00000,0b00000,0b11011,0b11011,0b00000,0b00000,0b00000};
  byte a4[8]={0b00000,0b00000,0b00000,0b11000,0b11000,0b00000,0b00000,0b00000};

  
void setup() {
  Wire.begin();Serial.begin(9600);lcd.init();lcd.backlight();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  pinMode(10,INPUT);// кнопка энкодера
  pinMode(A1,INPUT_PULLUP);// кнопка mute
   lcd.createChar(0,a1); lcd.createChar(1,a2);lcd.createChar(2,a3); lcd.createChar(3,a4);
   vol = EEPROM.read(0);// vol eeprom
   balans = EEPROM.read(1)-7;
   delay(1000);
   audio();
}

void loop() { 
    if(digitalRead(10)==LOW){menu++;w1=1;myEnc.write(0);delay(300);if(menu>1||menu<0){menu=0;}}
/////////////////////////////////////// vol /////////////////////////////////////
if(menu==0){   
  if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    vol=vol-newPosition;myEnc.write(0);newPosition=0; 
    if(vol>79){vol=79;}if(vol<0){vol=0;} 
    audio();time = millis();w=1;w1=1;    
}}

// индикация баланс + управление кнопками +\- 4 дБ ///////
if(menu==1){   
   if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    balans=balans-newPosition;myEnc.write(0);newPosition=0; 
    if(balans>7){balans=7;}if(balans<-7){balans=-7;} 
    audio();time = millis();w=1;w1=1;   
}}
/////////////////////////////////////////////////////////////
if(w1==1){w1=0;vol_d=vol/3;
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}lcd.print("  ");}
   if((vol_d)%2==0){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)1);}else{lcd.write((uint8_t)3);}}
   lcd.setCursor(14,0);if(vol<10){lcd.print(" ");}lcd.print(vol);time1=millis();

   if(balans<=-1){lcd.setCursor(6+balans,1);if(menu==1){if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)0);lcd.print(" ");}
      else{if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)2);lcd.print(" ");}}
   if(balans>=1){lcd.setCursor(balans+7,1);if(menu==1){lcd.print(" ");lcd.write((uint8_t)0);lcd.print(" ");}else{lcd.print(" ");lcd.write((uint8_t)2);lcd.print(" ");}}
   
   if(balans==0){lcd.setCursor(6,1);lcd.print(" ");}
   if(balans>=0){lcd.setCursor(7,1);lcd.print("+");lcd.print(" ");}else{lcd.setCursor(7,1);lcd.print("-");}
   lcd.setCursor(8,1);lcd.print(abs(balans));if(balans==0){lcd.print(" ");}
   }
///////////// mute ////////////////////////////////
  if(digitalRead(A1)==LOW && mute==0){mute=1;menu=100;audio();lcd.clear();lcd.setCursor(6,0);lcd.print("MUTE");delay(300);}
  if(digitalRead(A1)==LOW && mute==1){mute=0;w1=1;lcd.clear();menu=0;audio();delay(300);}
  
///////////// eeprom //////////////////////////////
if(millis()-time>10000 && w==1){// запись всех настроек в EEPROM через 10 сек неактивности
     EEPROM.update(0,vol);EEPROM.update(1,balans+7); w=0;}
}

void audio(){
  rt.setLeft(vol-8+balans); // int 0...79
  rt.setRight(vol-8-balans);// int 0...79
  rt.setMute(mute);  // int 0...1
}

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

7

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

  • да теперь в норме

liman324 пишет:

Звук я поправил:

#include <Wire.h>
#include <EEPROM.h>
#include <PT2257.h>
#include <LiquidCrystal_I2C.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>         // входит в состав библиотеки IRremote
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip 
  PT2257 rt;
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  decode_results ir; 
  Encoder myEnc(8, 9);//CLK, DT
  LiquidCrystal_I2C lcd(0x27,16,4);  // Устанавливаем дисплей
  int menu,vol,vol_d,z,balans,balans_d,z1;
  byte w,mute,w1=1;
  long time,time1,oldPosition  = -999,newPosition;
  byte a1[8]={0b00000,0b00000,0b11011,0b11011,0b11011,0b11011,0b00000,0b00000};
  byte a2[8]={0b00000,0b00000,0b11000,0b11000,0b11000,0b11000,0b00000,0b00000};
  byte a3[8]={0b00000,0b00000,0b00000,0b11011,0b11011,0b00000,0b00000,0b00000};
  byte a4[8]={0b00000,0b00000,0b00000,0b11000,0b11000,0b00000,0b00000,0b00000};

  
void setup() {
  Wire.begin();Serial.begin(9600);lcd.init();lcd.backlight();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  pinMode(10,INPUT);// кнопка энкодера
  pinMode(A1,INPUT_PULLUP);// кнопка mute
   lcd.createChar(0,a1); lcd.createChar(1,a2);lcd.createChar(2,a3); lcd.createChar(3,a4);
   vol = EEPROM.read(0);// vol eeprom
   balans = EEPROM.read(1)-7;
   delay(1000);
   audio();
}

void loop() { 
    if(digitalRead(10)==LOW){menu++;w1=1;myEnc.write(0);delay(300);if(menu>1||menu<0){menu=0;}}
/////////////////////////////////////// vol /////////////////////////////////////
if(menu==0){   
  if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    vol=vol-newPosition;myEnc.write(0);newPosition=0; 
    if(vol>79){vol=79;}if(vol<0){vol=0;} 
    audio();time = millis();w=1;w1=1;    
}}

// индикация баланс + управление кнопками +\- 4 дБ ///////
if(menu==1){   
   if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    balans=balans-newPosition;myEnc.write(0);newPosition=0; 
    if(balans>7){balans=7;}if(balans<-7){balans=-7;} 
    audio();time = millis();w=1;w1=1;   
}}
/////////////////////////////////////////////////////////////
if(w1==1){w1=0;vol_d=vol/3;
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}lcd.print("  ");}
   if((vol_d)%2==0){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)1);}else{lcd.write((uint8_t)3);}}
   lcd.setCursor(14,0);if(vol<10){lcd.print(" ");}lcd.print(vol);time1=millis();

   if(balans<=-1){lcd.setCursor(6+balans,1);if(menu==1){if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)0);lcd.print(" ");}
      else{if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)2);lcd.print(" ");}}
   if(balans>=1){lcd.setCursor(balans+7,1);if(menu==1){lcd.print(" ");lcd.write((uint8_t)0);lcd.print(" ");}else{lcd.print(" ");lcd.write((uint8_t)2);lcd.print(" ");}}
   
   if(balans==0){lcd.setCursor(6,1);lcd.print(" ");}
   if(balans>=0){lcd.setCursor(7,1);lcd.print("+");lcd.print(" ");}else{lcd.setCursor(7,1);lcd.print("-");}
   lcd.setCursor(8,1);lcd.print(abs(balans));if(balans==0){lcd.print(" ");}
   }
///////////// mute ////////////////////////////////
  if(digitalRead(A1)==LOW && mute==0){mute=1;menu=100;audio();lcd.clear();lcd.setCursor(6,0);lcd.print("MUTE");delay(300);}
  if(digitalRead(A1)==LOW && mute==1){mute=0;w1=1;lcd.clear();menu=0;audio();delay(300);}
  
///////////// eeprom //////////////////////////////
if(millis()-time>10000 && w==1){// запись всех настроек в EEPROM через 10 сек неактивности
     EEPROM.update(0,vol);EEPROM.update(1,balans+7); w=0;}
}

void audio(){
  rt.setLeft(vol-8+balans); // int 0...79
  rt.setRight(vol-8-balans);// int 0...79
  rt.setMute(mute);  // int 0...1
}

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

8

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Добавлен пульт, впишите в скетч коды своих кнопок пульта

#define IR1    0x33B820DF // button encoder
#define IR2    0x33B8946B // mute
#define IR3    0x33B810EF // >>>
#define IR4    0x33B8E01F // <<<


#include <Wire.h>
#include <EEPROM.h>
#include <PT2257.h>
#include <LiquidCrystal_I2C.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>         // входит в состав библиотеки IRremote
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip 
  PT2257 rt;
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  decode_results ir; 
  Encoder myEnc(8, 9);//CLK, DT
  LiquidCrystal_I2C lcd(0x27,16,4);  // Устанавливаем дисплей
  int menu,vol,vol_d,z,balans,balans_d,z1;
  byte w,mute,w1=1,gr1,gr2;
  long time,time1,oldPosition  = -999,newPosition;
  byte a1[8]={0b00000,0b00000,0b11011,0b11011,0b11011,0b11011,0b00000,0b00000};
  byte a2[8]={0b00000,0b00000,0b11000,0b11000,0b11000,0b11000,0b00000,0b00000};
  byte a3[8]={0b00000,0b00000,0b00000,0b11011,0b11011,0b00000,0b00000,0b00000};
  byte a4[8]={0b00000,0b00000,0b00000,0b11000,0b11000,0b00000,0b00000,0b00000};

  
void setup() {
  Wire.begin();Serial.begin(9600);lcd.init();lcd.backlight();irrecv.enableIRIn();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  pinMode(10,INPUT);// кнопка энкодера
  pinMode(A1,INPUT_PULLUP);// кнопка mute
   lcd.createChar(0,a1); lcd.createChar(1,a2);lcd.createChar(2,a3); lcd.createChar(3,a4);
   vol = EEPROM.read(0);// vol eeprom
   balans = EEPROM.read(1)-7;
   delay(1000);
   audio();
}

void loop() { 
  /// IR ////////////////////////////////////////
   if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();time=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта 
   
/// encoder ////////////////////////
    if((digitalRead(10)==LOW || ir.value==IR1) && mute==0){menu++;w1=1;myEnc.write(0);cl();time=millis();w=1;w1=1;delay(300);if(menu>1||menu<0){menu=0;}}
/////////////////////////////////////// vol /////////////////////////////////////
if(menu==0){ 
   if(ir.value==IR3){vol++;gr1=1;gr2=0;cl();time=millis();w=1;w1=1;if(vol>79){vol=79;}if(vol<0){vol=0;} audio();}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();time=millis();w=1;w1=1;if(vol>79){vol=79;}if(vol<0){vol=0;} audio();}// кнопка >>>>>>
   if(ir.value==IR4){vol--;gr1=0;gr2=1;cl();time=millis();w=1;w1=1;if(vol>79){vol=79;}if(vol<0){vol=0;} audio();}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();time=millis();w=1;w1=1;if(vol>79){vol=79;}if(vol<0){vol=0;} audio();}// кнопка <<<<<<
    
   if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    vol=vol-newPosition;myEnc.write(0);newPosition=0; 
    if(vol>79){vol=79;}if(vol<0){vol=0;} 
    audio();time = millis();w=1;w1=1;    
}}

// индикация баланс + управление кнопками +\- 4 дБ ///////
if(menu==1){  
   if(ir.value==IR3){balans++;gr1=1;gr2=0;cl();time=millis();w=1;w1=1;if(balans>7){balans=7;}if(balans<-7){balans=-7;}  audio();}// кнопка > 
   if(ir.value==IR4){balans--;gr1=0;gr2=1;cl();time=millis();w=1;w1=1;if(balans>7){balans=7;}if(balans<-7){balans=-7;}  audio();}// кнопка <
   
   if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    balans=balans-newPosition;myEnc.write(0);newPosition=0; 
    if(balans>7){balans=7;}if(balans<-7){balans=-7;} 
    audio();time = millis();w=1;w1=1;   
}}
/////////////////////////////////////////////////////////////
if(w1==1){w1=0;vol_d=vol/3;
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}lcd.print("  ");}
   if((vol_d)%2==0){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)1);}else{lcd.write((uint8_t)3);}}
   lcd.setCursor(14,0);if(vol<10){lcd.print(" ");}lcd.print(vol);time1=millis();

   if(balans<=-1){lcd.setCursor(6+balans,1);if(menu==1){if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)0);lcd.print(" ");}
      else{if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)2);lcd.print(" ");}}
   if(balans>=1){lcd.setCursor(balans+7,1);if(menu==1){lcd.print(" ");lcd.write((uint8_t)0);lcd.print(" ");}else{lcd.print(" ");lcd.write((uint8_t)2);lcd.print(" ");}}
   
   if(balans==0){lcd.setCursor(6,1);lcd.print(" ");}
   if(balans>=0){lcd.setCursor(7,1);lcd.print("+");lcd.print(" ");}else{lcd.setCursor(7,1);lcd.print("-");}
   lcd.setCursor(8,1);lcd.print(abs(balans));if(balans==0){lcd.print(" ");}
   }
///////////// mute ////////////////////////////////
  if((digitalRead(A1)==LOW || ir.value==IR2) && mute==0){mute=1;cl();menu=100;audio();lcd.clear();lcd.setCursor(6,0);lcd.print("MUTE");delay(300);}
  if((digitalRead(A1)==LOW || ir.value==IR2) && mute==1){mute=0;cl();w1=1;lcd.clear();menu=0;audio();delay(300);}
  
///////////// eeprom //////////////////////////////
if(millis()-time>10000 && w==1){// запись всех настроек в EEPROM через 10 сек неактивности
     EEPROM.update(0,vol);EEPROM.update(1,balans+7); w=0;}
}

void audio(){
  rt.setLeft(vol-8+balans); // int 0...79
  rt.setRight(vol-8-balans);// int 0...79
  rt.setMute(mute);  // int 0...1
}

void to_Timer(){newPosition = myEnc.read()/4;} 
void cl(){ir.value=0;delay(100);}

9

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

  • то работает то не работает пульт, ик приемник на нажатия всегда реагирует, то прибавляет то нет

liman324 пишет:

Добавлен пульт, впишите в скетч коды своих кнопок пульта

#define IR1    0x33B820DF // button encoder
#define IR2    0x33B8946B // mute
#define IR3    0x33B810EF // >>>
#define IR4    0x33B8E01F // <<<


#include <Wire.h>
#include <EEPROM.h>
#include <PT2257.h>
#include <LiquidCrystal_I2C.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <boarddefs.h>         // входит в состав библиотеки IRremote
#include <IRremote.h>          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip 
  PT2257 rt;
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  decode_results ir; 
  Encoder myEnc(8, 9);//CLK, DT
  LiquidCrystal_I2C lcd(0x27,16,4);  // Устанавливаем дисплей
  int menu,vol,vol_d,z,balans,balans_d,z1;
  byte w,mute,w1=1,gr1,gr2;
  long time,time1,oldPosition  = -999,newPosition;
  byte a1[8]={0b00000,0b00000,0b11011,0b11011,0b11011,0b11011,0b00000,0b00000};
  byte a2[8]={0b00000,0b00000,0b11000,0b11000,0b11000,0b11000,0b00000,0b00000};
  byte a3[8]={0b00000,0b00000,0b00000,0b11011,0b11011,0b00000,0b00000,0b00000};
  byte a4[8]={0b00000,0b00000,0b00000,0b11000,0b11000,0b00000,0b00000,0b00000};

  
void setup() {
  Wire.begin();Serial.begin(9600);lcd.init();lcd.backlight();irrecv.enableIRIn();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  pinMode(10,INPUT);// кнопка энкодера
  pinMode(A1,INPUT_PULLUP);// кнопка mute
   lcd.createChar(0,a1); lcd.createChar(1,a2);lcd.createChar(2,a3); lcd.createChar(3,a4);
   vol = EEPROM.read(0);// vol eeprom
   balans = EEPROM.read(1)-7;
   delay(1000);
   audio();
}

void loop() { 
  /// IR ////////////////////////////////////////
   if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();time=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта 
   
/// encoder ////////////////////////
    if((digitalRead(10)==LOW || ir.value==IR1) && mute==0){menu++;w1=1;myEnc.write(0);cl();time=millis();w=1;w1=1;delay(300);if(menu>1||menu<0){menu=0;}}
/////////////////////////////////////// vol /////////////////////////////////////
if(menu==0){ 
   if(ir.value==IR3){vol++;gr1=1;gr2=0;cl();time=millis();w=1;w1=1;if(vol>79){vol=79;}if(vol<0){vol=0;} audio();}// кнопка > 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();time=millis();w=1;w1=1;if(vol>79){vol=79;}if(vol<0){vol=0;} audio();}// кнопка >>>>>>
   if(ir.value==IR4){vol--;gr1=0;gr2=1;cl();time=millis();w=1;w1=1;if(vol>79){vol=79;}if(vol<0){vol=0;} audio();}// кнопка <
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();time=millis();w=1;w1=1;if(vol>79){vol=79;}if(vol<0){vol=0;} audio();}// кнопка <<<<<<
    
   if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    vol=vol-newPosition;myEnc.write(0);newPosition=0; 
    if(vol>79){vol=79;}if(vol<0){vol=0;} 
    audio();time = millis();w=1;w1=1;    
}}

// индикация баланс + управление кнопками +\- 4 дБ ///////
if(menu==1){  
   if(ir.value==IR3){balans++;gr1=1;gr2=0;cl();time=millis();w=1;w1=1;if(balans>7){balans=7;}if(balans<-7){balans=-7;}  audio();}// кнопка > 
   if(ir.value==IR4){balans--;gr1=0;gr2=1;cl();time=millis();w=1;w1=1;if(balans>7){balans=7;}if(balans<-7){balans=-7;}  audio();}// кнопка <
   
   if (newPosition != oldPosition) { 
    oldPosition = newPosition; if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
    balans=balans-newPosition;myEnc.write(0);newPosition=0; 
    if(balans>7){balans=7;}if(balans<-7){balans=-7;} 
    audio();time = millis();w=1;w1=1;   
}}
/////////////////////////////////////////////////////////////
if(w1==1){w1=0;vol_d=vol/3;
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)0);}else{lcd.write((uint8_t)2);}}lcd.print("  ");}
   if((vol_d)%2==0){lcd.setCursor(z/2,0);if(menu==0){lcd.write((uint8_t)1);}else{lcd.write((uint8_t)3);}}
   lcd.setCursor(14,0);if(vol<10){lcd.print(" ");}lcd.print(vol);time1=millis();

   if(balans<=-1){lcd.setCursor(6+balans,1);if(menu==1){if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)0);lcd.print(" ");}
      else{if(balans<-6){}else{lcd.print(" ");}lcd.write((uint8_t)2);lcd.print(" ");}}
   if(balans>=1){lcd.setCursor(balans+7,1);if(menu==1){lcd.print(" ");lcd.write((uint8_t)0);lcd.print(" ");}else{lcd.print(" ");lcd.write((uint8_t)2);lcd.print(" ");}}
   
   if(balans==0){lcd.setCursor(6,1);lcd.print(" ");}
   if(balans>=0){lcd.setCursor(7,1);lcd.print("+");lcd.print(" ");}else{lcd.setCursor(7,1);lcd.print("-");}
   lcd.setCursor(8,1);lcd.print(abs(balans));if(balans==0){lcd.print(" ");}
   }
///////////// mute ////////////////////////////////
  if((digitalRead(A1)==LOW || ir.value==IR2) && mute==0){mute=1;cl();menu=100;audio();lcd.clear();lcd.setCursor(6,0);lcd.print("MUTE");delay(300);}
  if((digitalRead(A1)==LOW || ir.value==IR2) && mute==1){mute=0;cl();w1=1;lcd.clear();menu=0;audio();delay(300);}
  
///////////// eeprom //////////////////////////////
if(millis()-time>10000 && w==1){// запись всех настроек в EEPROM через 10 сек неактивности
     EEPROM.update(0,vol);EEPROM.update(1,balans+7); w=0;}
}

void audio(){
  rt.setLeft(vol-8+balans); // int 0...79
  rt.setRight(vol-8-balans);// int 0...79
  rt.setMute(mute);  // int 0...1
}

void to_Timer(){newPosition = myEnc.read()/4;} 
void cl(){ir.value=0;delay(100);}

10 (2022-05-21 00:47:41 отредактировано bobrusev11)

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

прям в плотную всегда работает, дальше отхожу то работает то нет ,светодиод всегда отрабатывает. в мониторе порта четко работает с любого расстояния

11

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Что-то у Вас с пультом, у меня отлично работает на расстоянии 2-3 метра

12

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

в мониторе порта четко работает с любого расстояния

На расстоянии коды кнопок соответствуют скетчу?

13

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

  • не соответствовали, раньше записывал кнопки , сейчас заново посмотрел коды  исправил, вроде работает хорошо

liman324 пишет:

в мониторе порта четко работает с любого расстояния

На расстоянии коды кнопок соответствуют скетчу?

14

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Если все работает то я разбираю схему.

15

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

  • да все хорошо работает, спасибо большое

liman324 пишет:

Если все работает то я разбираю схему.

16

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Есть ещё вопрос как писк побороть, не сильный но все же не приятный

17

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Поставьте емкости 100-220 мкф (электролит) + 0,1 мкФ по питанию всех модулей.

18

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

  • поставил 2 стабилизатора на 5 и 9 вольт пленочные и электролиты, пропал писк, но появилась новая проблема,при нажатии mute треск в колонках, звук когда убавляешь доходит до 6 треск и звук громче становится как будто на половину громкости и треск от вращения энкодера от 0-7

liman324 пишет:

Поставьте емкости 100-220 мкф (электролит) + 0,1 мкФ по питанию всех модулей.

19

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Ставил все как было, результат такой же плюс писк

20

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

21

Re: Pt2257 + энкодер+ lcd1602 i2c+ ИК пульт

Так же было с моим скетчем во 2м сообщении который, но когда ваш поставил эта проблема ушла , и вот опять появилась , перезаписывал скетчи, ничего не помогает