Pt2314 4 Channel Audio Processor Module
Rs. 92.00 Rs. 111.00
- Brand: http://www.princeton.com.tw/en-us/products/multimediaaudioic/aud
- Product Code: SEN-AUDIO-AMP
- SKU -
- Availability: In Stock
- Price in reward points: 4
- For Bulk Order 9962060070
Quick support on WhatsApp (+919962060070) only between morning 11am-4pm, no call will be answered
SPECIFICATIONS: | |
-Onboard PT2314 sound quality processor chip | |
-Support 4 groups stereo input, dual channel output | |
-Support volume adjustment, high and low pass adjustment, mute etc | |
-Support I2C bus, and it can achieve all functions procedural | |
-Onboard power indicator lamp and filter electrolytic capacitor | |
-Main pins are basically led out | |
-Power Voltage | 6-10V, 9V (recommend) |
-PCB Size | 36.3*30.9mm |
OVERVIEW: -Onboard PT2314 sound quality processor chip -Support 4 groups stereo input, dual channel output -Support volume adjustment, high and low pass adjustment, mute etc -Support I2C bus, and it can achieve all functions procedural -Onboard power indicator lamp and filter electrolytic capacitor -Main pins are basically led out -Power Voltage: 6-10V, 9V (recommend) -PCB Size: 36.3*30.9mm |
PACKAGE INCLUDES:
1 PCS x Pt2314 4 Channel Audio Processor Module
http://www.princeton.com.tw/en-us/products/multimediaaudioic/audioprocessor/audioprocessor(generalpurpose).aspx
/* Audio processor PT2314 */
//SOURCE CODE TAKEN FROM BELOW LINK
//https://codebender.cc/sketch:254279#PT2314%20audio%20processor.ino
// per attivare il debug
//#define DEBUG
#undef DEBUG
#define STEP_CORRECT 4 /*correzione del numero incrementi per ogni step
va adeguato all'encoder che si ha ... a volte 2
a volte 4 ..... */
#define STEP_CORRECT_1 2 /*correzione del numero incrementi per ogni step
va adeguato all'encoder che si ha ... a volte 2
a volte 4 ..... */
#define NREPEAT 90
#include <Encoder.h>
#include <Bounce2.h>
#include <Wire.h>
#include <PT2314.h>
#include <TEA5767N.h>
#include <LiquidCrystal_I2C.h>
#include <PString.h>
#define MIN_FM_FREQ 88.0
#define MAX_FM_FREQ 108.0
#define STEP_FM_FREQ 0.1
// Indicare i numeri dei due pin a cui l'encoder si collega
// Migliore Performance: entrambi i pin possono generare interrupt
// Buona Performance: solo il primo pin può generare interrupt
// Bassa Performance: nessun pin può generare interrupt
// non usare pin a cui sono connessi led (es. pin 13)
// switch selezione canale ingresso
#define CHANNEL_SWITCH 11
//switch mute
#define MUTE_SWITCH 12
//loudness switch
#define LOUDNESS_SWITCH A0
// per il debounce dello switch
//va "regolato" sullo switch che si ha
#define DEBOUNCE_DELAY 5
#define ENC_VOL_BAL_SW 4
#define ENC_TONE_SW 7
#define ENC_SINTO_SW 10
// encoder volume e bilanciamento
Encoder EncVol_Bal (3, 2);
// encoder regolazione toni bassi e alti
Encoder EncTone (5, 6);
// encoder Sintonia FM
Encoder EncSintoFM(8, 9);
#define HOW_MANY_ENC 3
#define VOLUME_BAL 0
#define TONE 1
#define SINTO 2
#define CHANNEL_0 0 /* stato impostazione dei bassi */
#define CHANNEL_1 1 /* stato impostazione degli acuti */
#define CHANNEL_2 2 /* stato impostazione del bilanciamento */
#define CHANNEL_3 3 /* stato impostazione dell'anno*/
long oldPosition[HOW_MANY_ENC];
long newPosition[HOW_MANY_ENC];
int delta[HOW_MANY_ENC];
long oldPositionRadioFM = 100;
long newPositionRadioFM;
float frequency = MIN_FM_FREQ;
boolean loudness_is_on;
boolean mute_is_on;
int volume_val = 60;
int bass_val = 50;
int treble_val = 50;
int balance_left = 100;
int balance_right = 100;
int last_balance = 0;
#define SET_VOL 10
#define SET_BALANCE 20
#define SET_BASS 40
#define SET_TREBLE 50
#define FREQ_UNIT 70
#define FREQ_FRACT 72
short int mode_vol = SET_VOL;
short int mode_Tone = SET_BASS;
int mode_Sinto = FREQ_UNIT;
char row_0[17];
PString lcd_row_0(row_0, sizeof(row_0));
/* istanza dell'oggetto debounce i pulsanti di selezione */
Bounce debouncer_channel = Bounce();
Bounce debouncer_loudness = Bounce();
Bounce debouncer_mute = Bounce();
Bounce debouncer_Enc_Vol_Bal = Bounce();
Bounce debouncer_Enc_Tone = Bounce();
Bounce debouncer_Enc_Sinto = Bounce();
PT2314 Audio_Processor;
TEA5767N radio = TEA5767N();
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
short int audio_ch = CHANNEL_0;
void print_frequency_on_LCD(){
lcd_row_0.begin();
lcd_row_0.print(frequency);
lcd_row_0.print(" MHz ");
lcd.setCursor(0, 1);
lcd.print(lcd_row_0);
}
void setup()
{
#ifdef DEBUG
Serial.begin(115200);
Serial.println("Audio processor con PT2314 - by Gianni Candiani");
#endif
// da esempio Adafruit ... init bus I2C
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
/* si attiva la resistenza di pullup interna per gli switch */
pinMode(CHANNEL_SWITCH, INPUT_PULLUP);
pinMode(MUTE_SWITCH, INPUT_PULLUP);
pinMode(LOUDNESS_SWITCH, INPUT_PULLUP);
pinMode(ENC_VOL_BAL_SW, INPUT_PULLUP);
pinMode(ENC_TONE_SW, INPUT_PULLUP);
pinMode(ENC_SINTO_SW, INPUT_PULLUP);
debouncer_channel.interval(DEBOUNCE_DELAY);
debouncer_channel.attach(CHANNEL_SWITCH);
debouncer_mute.interval(DEBOUNCE_DELAY);
debouncer_mute.attach(MUTE_SWITCH);
debouncer_loudness.interval(DEBOUNCE_DELAY);
debouncer_loudness.attach(LOUDNESS_SWITCH);
debouncer_Enc_Vol_Bal.interval(DEBOUNCE_DELAY);
debouncer_Enc_Vol_Bal.attach(ENC_VOL_BAL_SW);
debouncer_Enc_Tone.interval(DEBOUNCE_DELAY);
debouncer_Enc_Tone.attach(ENC_TONE_SW);
debouncer_Enc_Sinto.interval(DEBOUNCE_DELAY);
debouncer_Enc_Sinto.attach(ENC_SINTO_SW);
oldPosition[VOLUME_BAL] = EncVol_Bal.read();
oldPosition[TONE] = EncTone.read();
oldPosition[SINTO] = EncSintoFM.read();
int ret = Audio_Processor.init();
for (int i = 0; i < NREPEAT; i++) {
Audio_Processor.channel(audio_ch);
Audio_Processor.volume(volume_val);
Audio_Processor.treble(treble_val);
Audio_Processor.bass(bass_val);
Audio_Processor.loudnessOff();
loudness_is_on = false;
Audio_Processor.muteOff();
mute_is_on = false;
Audio_Processor.attenuation(balance_left, balance_right);
}
lcd.begin(16, 2); // initialize the lcd for 16 chars 2 lines, turn on backlight
lcd.setCursor(0, 0); //Start at character 4 on line 0
lcd.print("Arduino Audio");
delay(2000);
print_frequency_on_LCD();
radio.selectFrequency(frequency);
}
//------------------------------------------------------------
void check_switches()
{
//verifico se è stato premuto lo switch dell'encoder Volume- Bilanciamento
// Se si modifico di conseguenza lo stato ad esso associato.
if (debouncer_Enc_Vol_Bal.update())
{
if (debouncer_Enc_Vol_Bal.read() == 0 ) //premuto l'albero ....
{
if (mode_vol == SET_VOL)
mode_vol = SET_BALANCE;
else if (mode_vol == SET_BALANCE )
mode_vol = SET_VOL;
}
}
else
//verifico se è stato premuto lo switch dell'encoder regolazione toni
// Se si modifico di conseguenza lo stato ad esso associato
if (debouncer_Enc_Tone.update())
{
if (debouncer_Enc_Tone.read() == 0 ) //premuto l'albero ....
{
if (mode_Tone == SET_BASS)
mode_Tone = SET_TREBLE;
else if (mode_Tone == SET_TREBLE )
mode_Tone = SET_BASS;
}
}
else
//verifico se è stato premuto lo switch dell'encoder regolazione toni
// Se si modifico di conseguenza lo stato ad esso associato
if (debouncer_Enc_Sinto.update())
{
if (debouncer_Enc_Sinto.read() == 0 ) //premuto l'albero ....
{
if (mode_Sinto == FREQ_UNIT){
mode_Sinto =FREQ_FRACT;
}
else if (mode_Sinto == FREQ_FRACT)
mode_Sinto = FREQ_UNIT;
}
}
else
//verifico se è stato premuto lo switch di selezione canale di input.
if (debouncer_channel.update())
{
if (debouncer_channel.read() == 0 ) // premuto lo switch ...
{
switch (audio_ch)
{
case CHANNEL_0:
audio_ch = CHANNEL_1;
break;
case CHANNEL_1:
audio_ch = CHANNEL_2;
break;
case CHANNEL_2:
audio_ch = CHANNEL_3;
break;
case CHANNEL_3:
audio_ch = CHANNEL_0;
break;
default:
break;
}
lcd_row_0.begin();
lcd_row_0.print("Input ch. ");
lcd_row_0.print(audio_ch);
lcd_row_0.print(" ");
lcd.setCursor(0, 0);
lcd.print(lcd_row_0);
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.channel(audio_ch);
}
}
else
//verifico se è stato premuto lo switch di muting.
if (debouncer_mute.update())
{
if (debouncer_mute.read() == 0 )
{
if (mute_is_on) {
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.muteOff();
mute_is_on = false;
lcd.setCursor(15, 1);
lcd.print(" ");
}
else {
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.muteOn();
mute_is_on = true;
lcd.setCursor(15, 1);
lcd.print("M");
}
}
}
else //verifico se è stato premuto lo switch di loudness
if (debouncer_loudness.update())
{
if (debouncer_loudness.read() == 0 ) // premuto lo switch
{
if (loudness_is_on)
{
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.loudnessOff();
loudness_is_on = false;
lcd.setCursor(15, 0);
lcd.print(" ");
}
else
{
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.loudnessOn();
loudness_is_on = true;
lcd.setCursor(15, 0);
lcd.print("L");
}
}
}
#ifdef DEBUG
if (changed) {
Serial.print("Enc VOL-BALANCE: ");
if (mode_vol == SET_VOL)
Serial.println("volume");
else
Serial.println("bilanciamento");
Serial.print("Enc TONE: ");
if (mode_Tone == SET_BASS)
Serial.println("toni bassi");
else
Serial.println("toni acuti");
if (mode_Tone == SET_BASS)
Serial.println("toni bassi");
else
Serial.println("toni acuti");
if (mode_Sinto == FREQ_UNIT)
Serial.println("Sintonia : 1 MHz");
else
Serial.println("Sintonia : 0.1 KHz");
Serial.print("Canale Audio: ");
Serial.println(audio_ch);
Serial.print("Muting: ");
if (mute_is_on)
Serial.println ("ON");
else
Serial.println ("OFF");
Serial.print("Loudness: ");
if (loudness_is_on)
Serial.println ("ON");
else
Serial.println ("OFF");
Serial.println();
}
#endif
}
//------------------------------------------------------------
unsigned long millisSinto = 0;
bool change_radio_freq = false;
void loop()
{
check_switches();
newPosition[SINTO] = EncSintoFM.read();
newPosition[VOLUME_BAL] = EncVol_Bal.read();
newPosition[TONE] = EncTone.read();
delta[VOLUME_BAL] = 0;
delta[TONE] = 0;
if (newPosition[SINTO] != oldPosition[SINTO])
{
if (newPosition[SINTO] % STEP_CORRECT == 0)
{
float delta_freq;
if (mode_Sinto == FREQ_FRACT)
delta_freq = 0.1;
else
delta_freq = 1.0;
if (newPosition[SINTO] > oldPosition[SINTO])
frequency += delta_freq;
else
frequency -= delta_freq;
//frequency -= 0.1;
if (frequency > MAX_FM_FREQ)
frequency = MIN_FM_FREQ;
else if (frequency < MIN_FM_FREQ)
frequency = MAX_FM_FREQ;
print_frequency_on_LCD();
change_radio_freq = true;
}
oldPosition[SINTO] = newPosition[SINTO];
millisSinto = millis();
}
if (newPosition[VOLUME_BAL] != oldPosition[VOLUME_BAL])
{
if (newPosition[VOLUME_BAL] % STEP_CORRECT_1 == 0)
{
if (newPosition[VOLUME_BAL] > oldPosition[VOLUME_BAL])
delta[VOLUME_BAL] = +2;
else
delta[VOLUME_BAL] = -2;
if (mode_vol == SET_VOL)
{
volume_val += delta[VOLUME_BAL];
if (volume_val < 0)
volume_val = 100;
else if (volume_val > 100)
volume_val = 0;
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.volume(volume_val);
lcd_row_0.begin();
lcd_row_0.print("Volume ");
lcd_row_0.print(volume_val);
lcd_row_0.print(" % ");
lcd.setCursor(0, 0);
lcd.print(lcd_row_0);
}
else
if (mode_vol == SET_BALANCE)
{
if (delta[VOLUME_BAL] > 0) { // ruotato senso orario
if (last_balance == -1) {
balance_left = 100;
balance_right = 100;
}
else {
balance_right--;
if (balance_right < 0)
balance_right = 100;
}
last_balance = +1;
}
else {
if (last_balance == 1) {
balance_left = 100;
balance_right = 100;
}
else {
balance_left--;
if (balance_left < 0)
balance_left = 100;
}
last_balance = -1;
}
/*
balance_val += delta[VOLUME_BAL];
if (balace_val < 0)
balance_val = 0;
else if (balance_val > 200)
balance_val = 200;
if (balance_val == 100){
left = balance_val;
right = balance_val;
}
else
if (balance_val < 100){
left = 100;
right = balance_val;
}
else
if (balance_val > 100){
left = 200 - balance_val;
right = 100;
}
*/
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.attenuation(balance_left, balance_right);
lcd_row_0.begin();
lcd_row_0.print("Bil.");
lcd_row_0.print(balance_left);
lcd_row_0.print("L ");
lcd_row_0.print(balance_right);
lcd_row_0.print("R ");
lcd.setCursor(0, 0);
lcd.print(lcd_row_0);
}
}
oldPosition[VOLUME_BAL] = newPosition[VOLUME_BAL];
}
if (newPosition[TONE] != oldPosition[TONE])
{
if (newPosition[TONE] % STEP_CORRECT == 0)
{
if (newPosition[TONE] > oldPosition[TONE])
delta[TONE] = +2;
else
delta[TONE] = -2;
if (mode_Tone == SET_BASS)
{
bass_val += delta[TONE];
if (bass_val < 0)
bass_val = 100;
else if (bass_val > 100)
bass_val = 0;
Audio_Processor.bass(bass_val);
lcd_row_0.begin();
lcd_row_0.print("Bassi ");
lcd_row_0.print(bass_val);
lcd_row_0.print(" % ");
lcd.setCursor(0, 0);
lcd.print(lcd_row_0);
}
else if (mode_Tone == SET_TREBLE)
{
treble_val += delta[TONE];
if (treble_val < 0)
treble_val = 100;
else if (treble_val > 100)
treble_val = 0;
lcd_row_0.begin();
lcd_row_0.print("Acuti ");
lcd_row_0.print(treble_val);
lcd_row_0.print(" % ");
lcd.setCursor(0, 0);
lcd.print(lcd_row_0);
Audio_Processor.treble(treble_val);
}
}
oldPosition[TONE] = newPosition[TONE];
}
/*
Audio_Processor.channel(audio_ch);
Audio_Processor.treble(treble_val);
Audio_Processor.bass(bass_val);
Audio_Processor.attenuation(balance_val, balance_val);
Audio_Processor.volume(volume_val);
*/
if ((change_radio_freq)) {
if ( millis() - millisSinto > 1600 ) {
lcd_row_0.begin();
lcd_row_0.print("Setting ...");
lcd.setCursor(0, 1);
lcd.print(lcd_row_0);
radio.selectFrequency(frequency);
print_frequency_on_LCD();
change_radio_freq = false;
}
}
}/* Audio processor PT2314 */
//SOURCE CODE TAKEN FROM BELOW LINK
//https://codebender.cc/sketch:254279#PT2314%20audio%20processor.ino
// per attivare il debug
//#define DEBUG
#undef DEBUG
#define STEP_CORRECT 4 /*correzione del numero incrementi per ogni step
va adeguato all'encoder che si ha ... a volte 2
a volte 4 ..... */
#define STEP_CORRECT_1 2 /*correzione del numero incrementi per ogni step
va adeguato all'encoder che si ha ... a volte 2
a volte 4 ..... */
#define NREPEAT 90
#include <Encoder.h>
#include <Bounce2.h>
#include <Wire.h>
#include <PT2314.h>
#include <TEA5767N.h>
#include <LiquidCrystal_I2C.h>
#include <PString.h>
#define MIN_FM_FREQ 88.0
#define MAX_FM_FREQ 108.0
#define STEP_FM_FREQ 0.1
// Indicare i numeri dei due pin a cui l'encoder si collega
// Migliore Performance: entrambi i pin possono generare interrupt
// Buona Performance: solo il primo pin può generare interrupt
// Bassa Performance: nessun pin può generare interrupt
// non usare pin a cui sono connessi led (es. pin 13)
// switch selezione canale ingresso
#define CHANNEL_SWITCH 11
//switch mute
#define MUTE_SWITCH 12
//loudness switch
#define LOUDNESS_SWITCH A0
// per il debounce dello switch
//va "regolato" sullo switch che si ha
#define DEBOUNCE_DELAY 5
#define ENC_VOL_BAL_SW 4
#define ENC_TONE_SW 7
#define ENC_SINTO_SW 10
// encoder volume e bilanciamento
Encoder EncVol_Bal (3, 2);
// encoder regolazione toni bassi e alti
Encoder EncTone (5, 6);
// encoder Sintonia FM
Encoder EncSintoFM(8, 9);
#define HOW_MANY_ENC 3
#define VOLUME_BAL 0
#define TONE 1
#define SINTO 2
#define CHANNEL_0 0 /* stato impostazione dei bassi */
#define CHANNEL_1 1 /* stato impostazione degli acuti */
#define CHANNEL_2 2 /* stato impostazione del bilanciamento */
#define CHANNEL_3 3 /* stato impostazione dell'anno*/
long oldPosition[HOW_MANY_ENC];
long newPosition[HOW_MANY_ENC];
int delta[HOW_MANY_ENC];
long oldPositionRadioFM = 100;
long newPositionRadioFM;
float frequency = MIN_FM_FREQ;
boolean loudness_is_on;
boolean mute_is_on;
int volume_val = 60;
int bass_val = 50;
int treble_val = 50;
int balance_left = 100;
int balance_right = 100;
int last_balance = 0;
#define SET_VOL 10
#define SET_BALANCE 20
#define SET_BASS 40
#define SET_TREBLE 50
#define FREQ_UNIT 70
#define FREQ_FRACT 72
short int mode_vol = SET_VOL;
short int mode_Tone = SET_BASS;
int mode_Sinto = FREQ_UNIT;
char row_0[17];
PString lcd_row_0(row_0, sizeof(row_0));
/* istanza dell'oggetto debounce i pulsanti di selezione */
Bounce debouncer_channel = Bounce();
Bounce debouncer_loudness = Bounce();
Bounce debouncer_mute = Bounce();
Bounce debouncer_Enc_Vol_Bal = Bounce();
Bounce debouncer_Enc_Tone = Bounce();
Bounce debouncer_Enc_Sinto = Bounce();
PT2314 Audio_Processor;
TEA5767N radio = TEA5767N();
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
short int audio_ch = CHANNEL_0;
void print_frequency_on_LCD(){
lcd_row_0.begin();
lcd_row_0.print(frequency);
lcd_row_0.print(" MHz ");
lcd.setCursor(0, 1);
lcd.print(lcd_row_0);
}
void setup()
{
#ifdef DEBUG
Serial.begin(115200);
Serial.println("Audio processor con PT2314 - by Gianni Candiani");
#endif
// da esempio Adafruit ... init bus I2C
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
/* si attiva la resistenza di pullup interna per gli switch */
pinMode(CHANNEL_SWITCH, INPUT_PULLUP);
pinMode(MUTE_SWITCH, INPUT_PULLUP);
pinMode(LOUDNESS_SWITCH, INPUT_PULLUP);
pinMode(ENC_VOL_BAL_SW, INPUT_PULLUP);
pinMode(ENC_TONE_SW, INPUT_PULLUP);
pinMode(ENC_SINTO_SW, INPUT_PULLUP);
debouncer_channel.interval(DEBOUNCE_DELAY);
debouncer_channel.attach(CHANNEL_SWITCH);
debouncer_mute.interval(DEBOUNCE_DELAY);
debouncer_mute.attach(MUTE_SWITCH);
debouncer_loudness.interval(DEBOUNCE_DELAY);
debouncer_loudness.attach(LOUDNESS_SWITCH);
debouncer_Enc_Vol_Bal.interval(DEBOUNCE_DELAY);
debouncer_Enc_Vol_Bal.attach(ENC_VOL_BAL_SW);
debouncer_Enc_Tone.interval(DEBOUNCE_DELAY);
debouncer_Enc_Tone.attach(ENC_TONE_SW);
debouncer_Enc_Sinto.interval(DEBOUNCE_DELAY);
debouncer_Enc_Sinto.attach(ENC_SINTO_SW);
oldPosition[VOLUME_BAL] = EncVol_Bal.read();
oldPosition[TONE] = EncTone.read();
oldPosition[SINTO] = EncSintoFM.read();
int ret = Audio_Processor.init();
for (int i = 0; i < NREPEAT; i++) {
Audio_Processor.channel(audio_ch);
Audio_Processor.volume(volume_val);
Audio_Processor.treble(treble_val);
Audio_Processor.bass(bass_val);
Audio_Processor.loudnessOff();
loudness_is_on = false;
Audio_Processor.muteOff();
mute_is_on = false;
Audio_Processor.attenuation(balance_left, balance_right);
}
lcd.begin(16, 2); // initialize the lcd for 16 chars 2 lines, turn on backlight
lcd.setCursor(0, 0); //Start at character 4 on line 0
lcd.print("Arduino Audio");
delay(2000);
print_frequency_on_LCD();
radio.selectFrequency(frequency);
}
//------------------------------------------------------------
void check_switches()
{
//verifico se è stato premuto lo switch dell'encoder Volume- Bilanciamento
// Se si modifico di conseguenza lo stato ad esso associato.
if (debouncer_Enc_Vol_Bal.update())
{
if (debouncer_Enc_Vol_Bal.read() == 0 ) //premuto l'albero ....
{
if (mode_vol == SET_VOL)
mode_vol = SET_BALANCE;
else if (mode_vol == SET_BALANCE )
mode_vol = SET_VOL;
}
}
else
//verifico se è stato premuto lo switch dell'encoder regolazione toni
// Se si modifico di conseguenza lo stato ad esso associato
if (debouncer_Enc_Tone.update())
{
if (debouncer_Enc_Tone.read() == 0 ) //premuto l'albero ....
{
if (mode_Tone == SET_BASS)
mode_Tone = SET_TREBLE;
else if (mode_Tone == SET_TREBLE )
mode_Tone = SET_BASS;
}
}
else
//verifico se è stato premuto lo switch dell'encoder regolazione toni
// Se si modifico di conseguenza lo stato ad esso associato
if (debouncer_Enc_Sinto.update())
{
if (debouncer_Enc_Sinto.read() == 0 ) //premuto l'albero ....
{
if (mode_Sinto == FREQ_UNIT){
mode_Sinto =FREQ_FRACT;
}
else if (mode_Sinto == FREQ_FRACT)
mode_Sinto = FREQ_UNIT;
}
}
else
//verifico se è stato premuto lo switch di selezione canale di input.
if (debouncer_channel.update())
{
if (debouncer_channel.read() == 0 ) // premuto lo switch ...
{
switch (audio_ch)
{
case CHANNEL_0:
audio_ch = CHANNEL_1;
break;
case CHANNEL_1:
audio_ch = CHANNEL_2;
break;
case CHANNEL_2:
audio_ch = CHANNEL_3;
break;
case CHANNEL_3:
audio_ch = CHANNEL_0;
break;
default:
break;
}
lcd_row_0.begin();
lcd_row_0.print("Input ch. ");
lcd_row_0.print(audio_ch);
lcd_row_0.print(" ");
lcd.setCursor(0, 0);
lcd.print(lcd_row_0);
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.channel(audio_ch);
}
}
else
//verifico se è stato premuto lo switch di muting.
if (debouncer_mute.update())
{
if (debouncer_mute.read() == 0 )
{
if (mute_is_on) {
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.muteOff();
mute_is_on = false;
lcd.setCursor(15, 1);
lcd.print(" ");
}
else {
for (int i = 0; i < NREPEAT; i++)
Audio_Processor.muteOn();
mute_is_on = true;
lcd.setCursor(15, 1);
lcd.print("M");
}
}
}
else //verifico se è stato premuto lo switch di loudness
if (debouncer_loudness.update())
{
if (debouncer_loudness.read() == 0 ) &am
15 days