<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; TDA7442]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=467&amp;type=atom" />
	<updated>2022-03-03T08:25:14Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=467</id>
		<entry>
			<title type="html"><![CDATA[TDA7442]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=5504#p5504" />
			<content type="html"><![CDATA[<p><span class="attention-yellow"></span> </p><p>TDA7442.h<br /></p><div class="codebox"><pre><code>// rcl-radio.ru liman324@yandex.ru 


#ifndef TDA7442_H
#define TDA7442_H

#define TDA7442_address 0x40

//Sub addresses
#define TDA7442_INPUT_ATT      0b00000000
#define TDA7442_SURR_OUT_EFF   0b00000001
#define TDA7442_REZ            0b00000010
#define TDA7442_BASS           0b00000011
#define TDA7442_TREBLE         0b00000100
#define TDA7442_ATT_L          0b00000101
#define TDA7442_ATT_R          0b00000110
#define TDA7442_INPUT_MULT     0b00001001

#include &lt;Arduino.h&gt;
class TDA7442
{
  public:
    TDA7442();
	void setInput_att(int in_att);  // int -63...0 = -31.5...0 dB step 0.5 dB
        void setSurr_sel(int surr, int out, int effect);/* int 0...2, int 0...1, int 0...15:
                                                           SIMULATED STEREO | MUSIC | OFF
                                                           VAR | FIX
                                                           EFFECT CONTROL -6...-21 dB  */
        void setRez(int rez);  // int 0...3 = 12, 14, 18, 37 kOm
        void setBass(int bass);   // int -7...7 = -14...+14 dB step 2 dB
        void setTreble(int treb); // int -7...7 = -14...+14 dB step 2 dB
        void setVol_L(int vol_l); // int -79...0 = -79...0 dB
        void setVol_R(int vol_r); // int -79...0 = -79...0 dB
        void setInput(int in);  // int 1...4 

  private:
	void writeWire(char a, char b);
};
	
#endif //TDA7442</code></pre></div><p>TDA7442.cpp<br /></p><div class="codebox"><pre><code>#include &lt;Arduino.h&gt;
#include &lt;Wire.h&gt;
#include &quot;TDA7442.h&quot;

TDA7442::TDA7442(){
	Wire.begin();
}

void TDA7442::setInput_att(int in_att){
          in_att = 0b01000000 + abs(in_att);
      writeWire(TDA7442_INPUT_ATT, in_att);
}

void TDA7442::setSurr_sel(int surr, int out, int effect){
      switch(surr){
         case 0: surr = 0b00000000;break;
         case 1: surr = 0b00000001;break; 
         case 2: surr = 0b00000010;break;
}
      switch(out){
         case 0: out = 0b00000000;break;
         case 1: out = 0b00000100;break; 
}
      switch(effect){
         case 0:  effect = 0b00000000;break;
         case 1:  effect = 0b00001000;break; 
         case 2:  effect = 0b00010000;break; 
         case 3:  effect = 0b00011000;break; 
         case 4:  effect = 0b00100000;break; 
         case 5:  effect = 0b00101000;break; 
         case 6:  effect = 0b00110000;break; 
         case 7:  effect = 0b00111000;break; 
         case 8:  effect = 0b01000000;break; 
         case 9:  effect = 0b01001000;break; 
         case 10: effect = 0b01010000;break; 
         case 11: effect = 0b01011000;break; 
         case 12: effect = 0b01100000;break; 
         case 13: effect = 0b01101000;break; 
         case 14: effect = 0b01110000;break; 
         case 15: effect = 0b01111000;break; 
}
         int sum = surr + out + effect;
      writeWire(TDA7442_SURR_OUT_EFF, sum);
}

void TDA7442::setRez(int rez){
      switch(rez){
         case 0: rez = 0b00000000;break;
         case 1: rez = 0b00000001;break; 
         case 2: rez = 0b00000010;break;
         case 3: rez = 0b00000011;break;
}
     writeWire(TDA7442_REZ, rez);
}

void TDA7442::setBass(int bass){
      switch(bass){
         case -7: bass = 0b00010000;break;
         case -6: bass = 0b00010001;break; 
         case -5: bass = 0b00010010;break;
         case -4: bass = 0b00010011;break;
         case -3: bass = 0b00010100;break;
         case -2: bass = 0b00010101;break;
         case -1: bass = 0b00010110;break;

         case 0:  bass = 0b00011111;break;

         case 1:  bass = 0b00011110;break;
         case 2:  bass = 0b00011101;break;
         case 3:  bass = 0b00011100;break;
         case 4:  bass = 0b00011011;break;
         case 5:  bass = 0b00011010;break;
         case 6:  bass = 0b00011001;break;
         case 7:  bass = 0b00011000;break;
}
     writeWire(TDA7442_BASS, bass);
}

void TDA7442::setTreble(int treb){
      switch(treb){
         case -7: treb = 0b00001110;break;
         case -6: treb = 0b00011110;break; 
         case -5: treb = 0b00101110;break;
         case -4: treb = 0b00111110;break;
         case -3: treb = 0b01001110;break;
         case -2: treb = 0b01011110;break;
         case -1: treb = 0b01101110;break;

         case 0:  treb = 0b11111110;break;

         case 1:  treb = 0b11101110;break;
         case 2:  treb = 0b11011110;break;
         case 3:  treb = 0b11001110;break;
         case 4:  treb = 0b10111110;break;
         case 5:  treb = 0b10101110;break;
         case 6:  treb = 0b10011110;break;
         case 7:  treb = 0b10001110;break;
}
     writeWire(TDA7442_TREBLE, treb);
}

void TDA7442::setVol_L(int vol_l){     
      writeWire(TDA7442_ATT_L, abs(vol_l));
}

void TDA7442::setVol_R(int vol_r){     
      writeWire(TDA7442_ATT_R, abs(vol_r));
}

void TDA7442::setInput(int in){
      switch(in){
         case 2: in = 0b00000000;break;
         case 3: in = 0b00000010;break; 
         case 4: in = 0b00000100;break;
         case 1: in = 0b00000110;break;
}
     writeWire(TDA7442_INPUT_MULT, in);
}

void TDA7442::writeWire(char a, char b){
  Wire.beginTransmission(TDA7442_address);
  Wire.write (a);
  Wire.write (b);
  Wire.endTransmission();
}</code></pre></div><p>TDA7442.ino<br /></p><div class="codebox"><pre><code>#include &lt;Wire.h&gt;
#include &lt;TDA7442.h&gt;
  TDA7442 tda;
  
void setup(){ 
  Serial.begin(9600);Wire.begin();
  audio();
}

void loop(){}

void audio(){
 tda.setInput_att(0);  // int -63...0 = -31.5...0 dB step 0.5 dB
 tda.setSurr_sel(2, 1, 0);/* int 0...2, int 0...1, int 0...15:
                                                           SIMULATED STEREO | MUSIC | OFF
                                                           VAR | FIX
                                                           EFFECT CONTROL -6...-21 dB  */
 tda.setRez(3);  // int 0...3 = 12, 14, 18, 37 kOm
 tda.setBass(4);   // int -7...7 = -14...+14 dB step 2 dB
 tda.setTreble(5); // int -7...7 = -14...+14 dB step 2 dB
 tda.setVol_L(-20); // int -79...0 = -79...0 dB
 tda.setVol_R(-20); // int -79...0 = -79...0 dB
 tda.setInput(1); // int 1...4
 }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2022-03-03T08:25:14Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=5504#p5504</id>
		</entry>
</feed>
