| Ваш IP: 34.236.145.124 | Online(17) - гости: 7, боты: 10 | Загрузка сервера: 2.26 ::::::::::::

Регулятор тембра и громкости на PT2313 (Arduino)

Микросхема PT2313 — аудиопроцессор который используется как предварительный усилитель, микросхема PT2313 имеет три стерео входа и четыре выхода (спевдоквадро), так же дополнительно имеется электронная регулировка громкости и тембра ВЧ и НЧ. Управление аудиопроцессором осуществляется по шине I2C в моем случает при помощи Arduino Nano. Уст-во содержит минимальный набор внешних элементов, после сборке в настройке не нуждается. Номинальное питание 9 В.

Основные характеристики аудипроцессора PT2313:

  • Напряжение питания от 6 до 10 В, номинальное 9 В
  • КНИ не более 0.1 %
  • Регулировка громкости от -63 до 0 дБ
  • Регулировка тембра ВЧ и НЧ ±14 дБ
  • Регулировка баланса ±8 дБ (ограничено программно)
  • Максимальный ток потребления 11 мА

Уст-во содержит два основных блока, это плата Arduino Nano (Uno) и блок аудипроцессора. Управление аудипроцессором осуществляется четырьмя кнопками. При помощи кнопки MENU можно осуществить перебор основных параметров, громкость (Volume), тембр НЧ (Bass), тембр ВЧ (Trebble), баланс (Balance). Кнопки «+» и  «-» позволяют изменять параметры громкости, тембра и баланса. Кнопка IN предназначена для переключения входа 0…2.

Вся необходимая информация выводится LCD дисплей 1602, на базе контроллера HD44780. Все настройки сохраняются в энергонезависимую память.

Плата Пин SDA Пин SCL
Arduino Uno, Nano, Pro и Pro Mini — PT2313 (GND — 26 вывод) A4 — 27 вывод PT2313 A5 — 28 вывод PT2313

Библиотека — PT2313.zip

#include <Wire.h>
#include <PT2313.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7
#include <EEPROM.h>//#include <EEPROMex.h>- для старой версии Arduino IDE
PT2313 audioChip;
 byte a1[8]={0b00000,0b11011,0b11011,0b11011,0b11011,0b11011,0b11011,0b00000};
 byte a2[8]={0b00000,0b11000,0b11000,0b11000,0b11000,0b11000,0b11000,0b00000};
 byte menu,in,w,w1;
 int vol,z,vol_d,bass,treb,balans;
 unsigned long time;
void setup(){
  Serial.begin(9600);Wire.begin(); lcd.begin(16, 2);
  audioChip.initialize(0,true);
  pinMode(12,INPUT);// меню
  pinMode(11,INPUT);// плюс
  pinMode(10,INPUT);// минус
  pinMode(9,INPUT);// IN
  vol = EEPROM.read(0);// vol eeprom 
  bass = EEPROM.read(1)-7;// bass eeprom
  treb = EEPROM.read(3)-7;// treb eeprom
  balans = EEPROM.read(4)-4;// balans eeprom
  in = EEPROM.read(5);// in eeprom
  lcd.createChar(0,a1); lcd.createChar(1,a2);
  audio();
}
void loop(){
    if(digitalRead(12)==HIGH){menu++;time=millis();w1=1;w=1;cl();if(menu>3){menu=0;}}// меню
    if(digitalRead(9)==HIGH){in++;time=millis();w1=1;audio();delay(200);if(in>2){in=0;}}// in
  // индикация громкости + управление кнопками //////////////
   if(menu==0){
   if(digitalRead(11)==HIGH){vol++;w=1;if(vol>62){vol=62;}}// 47 максимальная громкость  
   if(digitalRead(10)==HIGH){vol--;w=1;if(vol<0){vol=0;}}// 0 минимум громкости 
   if(w==1){audio();cl();time=millis();w=0;w1=1;}
  lcd.setCursor(0,0);lcd.print("Volume ");
  lcd.print(-62+vol);lcd.setCursor(11,0);lcd.print("dB K");lcd.print(in);
  vol_d=(vol-40);
   if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,1);lcd.write((uint8_t)0);}}
   if((vol_d)%2==0){lcd.setCursor(z/2,1);lcd.write((uint8_t)1);}
   lcd.setCursor(13,1);lcd.print(vol);
 }
 
  // индикация тембр НЧ + управление кнопками //////////////
   if(menu==1){
   if(digitalRead(11)==HIGH){bass++;w=1;if(bass>7){bass=7;}} 
   if(digitalRead(10)==HIGH){bass--;w=1;if(bass<-7){bass=-7;}}
   if(w==1){audio();cl();time=millis();w1=1;w=0;}
  lcd.setCursor(0,0);lcd.print("Bass      ");
  lcd.print(bass*2);lcd.setCursor(13,0);lcd.print("dB");
   for(z=-7;z<=bass;z++){lcd.setCursor(z+7,1);lcd.write((uint8_t)0);}
 }
 ///////////////////////////////////////////////////////////
 
   // индикация тембр BЧ + управление кнопками //////////////
   if(menu==2){
   if(digitalRead(11)==HIGH){treb++;w=1;if(treb>7){treb=7;}} 
   if(digitalRead(10)==HIGH){treb--;w=1;if(treb<-7){treb=-7;}}
   if(w==1){audio();cl();time=millis();w1=1;w=0;}
  lcd.setCursor(0,0);lcd.print("Trebble   ");
  lcd.print(treb*2);lcd.setCursor(13,0);lcd.print("dB");
   for(z=-7;z<=treb;z++){lcd.setCursor(z+7,1);lcd.write((uint8_t)0);}
 }
 ///////////////////////////////////////////////////////////
 
 // индикация баланс + управление кнопками +\- 4 дБ ///////
   if(menu==3){
   if(digitalRead(11)==HIGH){balans++;w=1;if(balans>4){balans=4;}}
   if(digitalRead(10)==HIGH){balans--;w=1;if(balans<-4){balans=-4;}}
  lcd.setCursor(0,0);
   if(balans>=0){lcd.print("-");}else{lcd.print("+");}
  lcd.print(abs(balans*2));lcd.print(" dB ");
  lcd.print(" <>  ");
   if(balans>=0){lcd.print("+");}else{lcd.print("-");}
  lcd.print(abs(balans*2));lcd.print(" dB ");
  lcd.setCursor(0,1);lcd.print("R");
  lcd.setCursor(15,1);lcd.print("L");
   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);}
   if(w==1){audio();cl();time=millis();w1=1;w=0;}
 }
 /////////////////////////////////////////////////////////////
 
 // запись всех настроек в EEPROM если кнопки + и - не нажимались в течении 10 сек
 // если настройки тембра, баланса и номер входа не менялись в течении 10 сек, переход в рег. Громкости
   if(millis()-time>10000 && w1==1){
     EEPROM.update(0,vol);
     EEPROM.update(4,balans+4);
     EEPROM.update(1,bass+7);
     EEPROM.update(3,treb+7);
     EEPROM.update(5,in);
  menu=0;w1=0;cl();
 }
 
}
void cl(){delay(200);lcd.clear();}
void audio(){  
  audioChip.source(in);//select your source 1...3  вход 3...1
  audioChip.volume(vol);//Vol 0...62 шаг 1 дБ
  audioChip.gain(0);//gain 0...3 шаг 3.75 дБ
  audioChip.bass(bass);//bass -7...+7 шаг 2 дБ
  audioChip.treble(treb);//treble -7...+7 шаг 2 дБ
  audioChip.balance(balans);//-31...+31 программно ограничено до +\-8 дБ
  audioChip.loudness(true);//true or false // тонкомпенсация
}

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Драйвер светодиода белого свечения с напряжением 1,5В

    Для свечения диода белого свечения необходимо напряжение 3…4В, что не позволяет использовать одну батарею на 1,5В, но если применить схему показанную на рисунке то можно использовать светодиод белого свечения от напряжения 1,2…1,5В. На микросхеме МАХ1722 собран повышающий преобразователь, на микросхеме МАХ4073Т собран регулятор с обратной связью который позволяет регулировать выходной …Подробнее...
  • НЕКОТОРЫЕ ВОПРОСЫ ЭКСПЛУАТАЦИИ АККУМУЛЯТОРНЫХ БАТАРЕЙ

    При эксплуатации аккумуляторных батарей следует всегда четко помнить следующее: • после покупки батареи находятся в разряженном состоянии и перед началом эксплуатации их необходимо зарядить; • напряжение на заряженном элементе аккумуляторной батареи составляет 1,2 В; • напряжение конца разряда (напряжение, ниже которого элемент разряжать не следует) составляет 1,0…1,05 В; • емкость …Подробнее...
  • Фазоинвертор (ламповый усилитель)

    В двухтактный ламповый усилитель входит каскад фазоинвертор, его назначение — разделение входного сигнала на две противофазные полуволны . Так как любой каскад с нагрузкой анодной цепи инвертирует сигнал, часто применяется простая схема фазоинвертора на двух усилительных каскадах. Фазоинвертор — это два усилительных каскада с общим катодом, сигнал с выхода первого …Подробнее...
  • ЭЛЕКТРОННЫЕ ИГРОВЫЕ КОСТИ

    ЭЛЕКТРОННЫЕ ИГРОВЫЕ КОСТИ

    На рисунке показана простая схема «Электронные игровые кости», состоящая из простых недорогих элементах. Схема «Игровые кости» состоит из таймера, счетчика и нескольких светодиодов. При нажатии переключателя S1, таймер 555 вырабатывает импульсы, которые поступают на счетчик. Из-за быстроты переключений счетчика человек не может отследить момент зажигания светодиодов, поэтому данную схему можно …Подробнее...
  • Семиполосный эквалайзер с активными фильтрами

    Ниже приведен вариант эквалайзера с 7-ю полосами регулирования и глубиной регулирования ±15дБ на всех частотах. Номинальная величина входного сигнала — 250мВ. ОУ DA1 выполняет роль нормирующего усилителя. В цепи ОС ОУ DA2 включены фильтры F1-F7 с центральными частотами40, 100, 270, 700, 2000, 5000, 12500 Гц. Ширина полосы фильтра определяется параметрами …Подробнее...