Wish List 0

Pt2314 4 Channel Audio Processor Module

Rs. 92.00 Rs. 111.00

This module is ideally suited to adding a control to your audio outputs. Connecting your audio inputs and a separate power 6 - 10V supply allows you to process an audio stream in preparation to be connected up to a pair of speakers. This module is ideal for situations where a source might need a little more bass, a little less treble and maybe be a touch louder.
Configuration is handled through a 2 pin I2C interface, available on a wide range of micro-controllers. The I2C address is 0x88. A full list of configuration settings is available in the datasheet.
As with all audio devices, noise can and will come from all manner of sources. To minimize the noise added through the amplifier a clean power source should be used. If you are unsure, connecting a 470µF Electrolytic capacitor to either side should help cut it out.
Please do not hesitate to contact us if you require further information regarding the module's operation.

Pin Description
        -VCC Supply input voltage
        -GND Ground
        -R4 Right channel input 4
        -R3 Right channel input 3
        -R2 Right channel input 2
        -R1 Right channel input 1
        -L4 Left channel Input 4
        -L3 Left channel input 3
        -L2 Left channel input 2
        -L1 Left channel input 1
         -R Right speaker output 23
         -L Left speaker output
       -GND Speaker ground
       -SDA I2C Control data input
         SCL I2C Clock input

   
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

/* 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

Write a review

Please login or register to review