Микросхема 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 // тонкомпенсация }
Тестирование скетча:
PT2313 + энкодер + ИК пульт + анализатор спектра — http://forum.rcl-radio.ru/viewtopic.php?pid=56#p56
А есть ли скетч для 1 кнопин вход и энкодера ? все под лцд 1602
Здраствуйте прошил даним скетчом на екрани только надпись громкость ивсе больше нечего не работает,библиотеку в програму добавил ,когда прошиваем библиотека автоматои подтягуеца в скеч или туда нужно добавлять