Re: TDA8425 + энкодер + пульт + STANDBY
ок спасибо протестю напишу
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Переделки → TDA8425 + энкодер + пульт + STANDBY
ок спасибо протестю напишу
привет, подключил на дисплее 2002 лазия по меню есть несоответствия громкость начинает работать не 56 а с 88 дБ до +6 и ползунок громкости останавливается в 16 квадрате басс работает от -12 до +15 а высокие от -12 до +12
как сделать и басс и высокие чтоб заполняли от -12 до +12 на все 20 символов
что то такое получилось но не с 0 сегмента
///////////////////////// тембр вч /////////////////////////////
if(menu==2){
if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w1=1;if(treb>18){treb=18;}if(treb<2){treb=2;}}
if(treb>20){treb=20;}if(treb<2||treb==255){treb=2;}
lcd.setCursor(0,0);lcd.print("Treble ");
treb_d=treb*2-20;
if(treb_d>=0){lcd.print("+");}else{lcd.print("-");}
if(treb_d>-10&&treb_d<=0||treb_d<10&&treb_d>0){{lcd.print(" ");}}
lcd.print(abs(treb_d));lcd.print(" dB ");
if(treb>1){for(z=1;z<=treb+1;z++){lcd.setCursor(z,1);lcd.write((uint8_t)0);}}
audio();
Попробуйте этот код:
if(menu==2){
if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w1=1;if(treb>18){treb=18;}if(treb<2){treb=2;}}
if(treb>20){treb=20;}if(treb<2||treb==255){treb=2;}
lcd.setCursor(0,0);lcd.print("Treble ");
treb_d=map(treb, 2,18, 0,19);
if(treb_d>=0){lcd.print("+");}else{lcd.print("-");}
if(treb_d>-10&&treb_d<=0||treb_d<10&&treb_d>0){{lcd.print(" ");}}
lcd.print(abs(treb_d));lcd.print(" dB ");
for(z=1;z<=treb_d+1;z++){lcd.setCursor(z,1);lcd.write((uint8_t)0);}
audio();
. Добрый день. Подскажите пожалуйста как избавится от мерцания шкалы регулировок громкости тембра при повороте энкодера? Или дело в энкодере?
всем привет!!!! долго лежал усилок и вот наконец то собрал все в кучу и опять следующие проблемы опять дисплей работает как 1602 а по факту стоит 2002 далеев меню басс когда крутишь добавляется громкость а не басс высокие меняются только на дисплее а в звуке нет изменений
#include <Wire.h>
#include <TDA8425.h>
#include <Encoder.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>//
// #include <EEPROMex.h>
#include <MsTimer2.h>
Encoder myEnc(11, 10);//CLK, DT
TDA8425 tda;
LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7
byte a1[8]={0b00000,0b11011,0b11011,0b11011,0b11011,0b11011,0b11011,0b00000};
byte a2[8]={0b00000,0b11000,0b11000,0b11000,0b11000,0b11000,0b11000,0b00000};
int z,vol,vol_d,balans,bass,bass_d,treb,treb_d,in,mute,sss,db;
byte menu,w1;
long oldPosition = -999,newPosition;
unsigned long time;
void to_Timer(){ //функция таймера
newPosition = myEnc.read()/4;}
void setup() {
Serial.begin(9600);
lcd.begin(20, 2);
pinMode(12,INPUT);// меню кнопка энкодера SW
lcd.createChar(0,a1); lcd.createChar(1,a2);
vol = EEPROM.read(0);// vol eeprom
bass = EEPROM.read(1);// bass eeprom
treb = EEPROM.read(2);// treb eeprom
in = EEPROM.read(3);// in eeprom
balans = EEPROM.read(4)-4;// balans eeprom
audio();
lcd.setCursor(4,0);lcd.print("TDA8425");delay(500);
MsTimer2::set(1, to_Timer);MsTimer2::start();
}
void loop() {
if(digitalRead(12)==LOW&&menu<3){sss++;menu++;myEnc.write(0);oldPosition = -999;delay(300);time=millis();w1=1;if(menu>2){menu=0;}if(sss>2){menu=3;delay(300);}}// меню
if(digitalRead(12)==HIGH){sss=0;}
if(menu==3&&digitalRead(12)==LOW&&sss==0){menu=4;oldPosition = -999;delay(300);time=millis();w1=1;lcd.clear();}
if(menu==4&&digitalRead(12)==LOW){menu=0;delay(300);lcd.clear();}
///////////////////////// громкость /////////////////////////////
if(menu==0){
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w1=1;if(vol>63){vol=63;}if(vol<16){vol=16;}}
lcd.setCursor(0,0);lcd.print("Volume ");
vol_d=vol*2-120;
if(vol_d>=0){lcd.print("+");}else{lcd.print("-");}
if(vol_d>-10){{lcd.print(" ");}}
lcd.print(abs(vol_d));lcd.print(" dB ");
// ползунок громкости начинает работать с -56 дБ
if(vol-32>0){for(z=0;z<=vol-33;z++){lcd.setCursor(z/2,1);lcd.write((uint8_t)0);}}
if((vol-32)%2==0&&vol-32>=0){lcd.setCursor(z/2,1);lcd.write((uint8_t)1);}
audio();
}
///////////////////////// баланс /////////////////////////////
if(menu==3){
if (newPosition != oldPosition) {
oldPosition = newPosition;
balans=balans+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w1=1;if(balans>4){balans=4;}if(balans<-4){balans=-4;}}
lcd.setCursor(0,0);
if(balans*2>=0){lcd.print("-");}else{lcd.print("+");}
lcd.print(abs(balans*2));lcd.print(" dB ");
lcd.print(" <> ");
if(balans*2>=0){lcd.print("+");}else{lcd.print("-");}
lcd.print(abs(balans*2));lcd.print(" dB ");
lcd.setCursor(0,1);lcd.print("L");
lcd.setCursor(15,1);lcd.print("R");
if(balans<0){lcd.setCursor(balans+7,1);lcd.write((uint8_t)0);}
if(balans>0){lcd.setCursor(balans+8,1);lcd.write((uint8_t)0);}
if(balans==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}
audio();
}
///////////////////////// тембр нч /////////////////////////////
if(menu==1){
if (newPosition != oldPosition) {
oldPosition = newPosition;
bass=bass+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w1=1;if(bass>11){bass=11;}if(bass<2){bass=2;}}
lcd.setCursor(0,0);lcd.print("Bass ");
bass_d=bass*3-18;
if(bass_d>=0){lcd.print("+");}else{lcd.print("-");}
if(bass_d>-10&&bass_d<=0||bass_d<10&&bass_d>0){{lcd.print(" ");}}
lcd.print(abs(bass_d));lcd.print(" dB ");
if(bass>1){for(z=3;z<=bass+1;z++){lcd.setCursor(z,1);lcd.write((uint8_t)0);}}
audio();
}
///////////////////////// тембр вч /////////////////////////////
if(menu==2){
if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w1=1;if(treb>11){treb=11;}if(treb<2){treb=2;}}
if(treb>10){treb=10;}if(treb<2||treb==255){treb=2;}
lcd.setCursor(0,0);lcd.print("Treble ");
treb_d=treb*3-18;
if(treb_d>=0){lcd.print("+");}else{lcd.print("-");}
if(treb_d>-10&&treb_d<=0||treb_d<10&&treb_d>0){{lcd.print(" ");}}
lcd.print(abs(treb_d));lcd.print(" dB ");
if(treb>1){for(z=3;z<=treb+1;z++){lcd.setCursor(z,1);lcd.write((uint8_t)0);}}
audio();
}
///////////////////////// input /////////////////////////////
if(menu==4){
if (newPosition != oldPosition) {
oldPosition = newPosition;
in=in+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w1=1;if(in>1){in=0;}if(in<0){in=1;}}
lcd.setCursor(0,0);lcd.print("Source selector");
lcd.setCursor(0,1);lcd.print("Input: ");lcd.print(in);
audio();
}
////////////////// mute //////////////////////////////////
if(digitalRead(9)==HIGH){mute++;if(mute>1){mute=0;}
if(mute==1){menu=-1;}else{oldPosition = -999;menu=0;}
audio(); delay(300);lcd.clear();
lcd.setCursor(6,0);lcd.print("MUTE");
}
///////////////////////////////////////////////////////////
/////////////////// -20 dB ///////////////////////////////
if(digitalRead(8)==HIGH&&db==0){vol=vol-10;db=1;delay(500);audio();myEnc.write(0);menu=0;lcd.clear();}
if(digitalRead(8)==HIGH&&db==1){vol=vol+10;db=0;delay(500);audio();myEnc.write(0);menu=0;lcd.clear();}
//////////////////////////////////////////////////////////
if(millis()-time>10000 && w1==1){// сохранение всех настроек в eeprom через 60 сек неактивности
myEnc.write(0);
EEPROM.update(0,vol);
EEPROM.update(4,balans+4);
EEPROM.update(1,bass);
EEPROM.update(2,treb);
EEPROM.update(3,in);
w1=0;menu=0;lcd.clear(); }
}// loop
void audio(){
tda.setVolumeL(vol+balans);
tda.setVolumeR(vol-balans);
tda.setBass(bass);
tda.setTreble(treb);
tda.setMute(mute);
tda.setSource(in);
}
бляха муха я по запарке купил дисплей 40*2
вроде с отображением на экране разобрался а этот вопрос остается
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w1=1;if(vol>63){vol=63;}if(vol<16){vol=16;} audio();}
audio() должно находится в пределах функции энкодера, а у Вас происходит постоянное обращение к audio(), когда работает меню громкости.
То же относится ко всем меню
Я имел в виду этот вопрос меню басс когда крутишь добавляется громкость а не басс высокие меняются только на дисплее а в звуке нет изменений
если не сложно поясните пожалуйста по подробней
Я имел в виду этот вопрос меню басс когда крутишь добавляется громкость а не басс высокие меняются только на дисплее а в звуке нет изменений
Я полностью собирал схему аудиопроцессора, тестировал, те скетчи что на сайте рабочие. Описанные Вами проблемы не возникали.
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w1=1;if(vol>63){vol=63;}if(vol<16){vol=16;} audio();}audio() должно находится в пределах функции энкодера, а у Вас происходит постоянное обращение к audio(), когда работает меню громкости.
То же относится ко всем меню
это как ведь прошивка сайта
это как ведь прошивка сайта
Так там тоже ошибка, моя. Это работать будет, но лучше сделать как я написал выше.
я 3 по счету залил а какую Вы говорите залить?
залил которая по счету 2 но что касается баса и высоких все так же
басс добавляет просто громкость а высокие ничего не меняют
Вот функция
void audio(){
tda.setVolumeL(vol+balans);
tda.setVolumeR(vol-balans);
tda.setBass(bass);
tda.setTreble(treb);
tda.setMute(mute);
tda.setSource(in); }
вручную укажите значение басс
void audio(){
tda.setVolumeL(vol+balans);
tda.setVolumeR(vol-balans);
tda.setBass(10);
tda.setTreble(treb);
tda.setMute(mute);
tda.setSource(in); }
Если будет меняться громкость, значит в схеме есть ошибки
Так же treble укажите крайние значения от 2 до 11, будут ли изменения
tda.setTreble(2);
поставил значение 10 басс перестал добавлять громкость но нч не меняет
Так же treble укажите крайние значения от 2 до 11, будут ли изменения
tda.setTreble(2);
ничего не меняется
а в схеме где может быть ошибка если тда управляется по 2 пинам громкость работает баланс тоже правильно работаетя так понимаю тда работает по цифре
Проверьте подключение конденсаторов, задающих частоту тембра
если смотреть по схеме то каких именно
forum.rcl-radio.ru → Переделки → TDA8425 + энкодер + пульт + STANDBY
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|