<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; BD37033FV]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=478</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=478&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «BD37033FV».]]></description>
		<lastBuildDate>Sun, 13 Mar 2022 08:23:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[BD37033FV]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=5515#p5515</link>
			<description><![CDATA[<p><span class="attention-yellow"></span> </p><p>BD37033FV.h<br /></p><div class="codebox"><pre><code>#ifndef BD37033FV_H
#define BD37033FV_H

#define BD37033FV_address 0b1000000 

#define INITIAL_SETUP        0x01
#define LPF_SETUP            0x02
#define MIXING_SETUP         0x03
#define INPUT_SELECT         0x05
#define INPUT_GAIN           0x06
#define VOLUME_GAIN          0x20
#define FADER_1_FRONT        0x28
#define FADER_2_FRONT        0x29
#define FADER_1_REAR         0x2A
#define FADER_2_REAR         0x2B
#define FADER_SUB_1          0x2C
#define FADER_SUB_2          0x30
#define BASS_SETUP           0x41
#define MIDDLE_SETUP         0x44
#define TREBLE_SETUP         0x47
#define BASS_GAIN            0x51
#define MIDDLE_GAIN          0x54
#define TREBLE_GAIN          0x57
#define LOUDNESS_GAIN        0x75

#include &lt;Arduino.h&gt;
class BD37033FV
{
  public:
    BD37033FV();
    void setInitial();
        void setSub_setup(int sub_f,int sub_out, int faza); // off 55hz 85hz 120hz 160hz pass = int sub_f(0...5) || LPF front rear sub = int sub_out(0...3) 0 - default || 0 180 = int faza(0...1)
        void setLoud_f(int mix_in, int loud_f, int mix_ch1, int mix_ch2); // MIX_IN 0...3 3=off || 400hz 800hz 2400hz Prohibition = int loud_f(0...3) || MIXING 1ch 2ch -- on off = mix_ch1(0...1) mix_ch2(0..1)
        void setIn(int in); // in1 in2 in3 = int in(0...2)
        void setIn_gain(int in_gain, int mute); // 0...16 dB = int in_gain(0...16) || off on = int mute(0...1)
        void setVol(int vol); // -79...+15 dB = int vol(-79...15)
        void setFront_1(int front_1); // -79...+15 dB = int -79...15
        void setFront_2(int front_2); // -79...+15 dB = int -79...15
        void setRear_1(int rear_1); // -79...+15 dB = int -79...15
        void setRear_2(int rear_2); // -79...+15 dB = int -79...15
        void setSub1(int sub1); // -79...+15 dB = int -79...15
        void setSub2(int sub2); // -79...+15 dB = int -79...15
        void setBass_setup(int bass_q, int bass_f); // 0.5 1.0 1.5 2.0 --- int 0...3, 60Hz 80Hz 100Hz 120Hz --- int 0...3
        void setMiddle_setup(int mid_q, int mid_f); // 0.75 1.0 1.25 1.5 --- int 0...3, 500Hz 1kHz 1.5kHz 2.5kHz --- int 0...3
        void setTreble_setup(int treb_q, int treb_f); // 0.75 1.25  --- int 0...1, 7.5kHz 10kHz 12.5kHz 15kHz --- int 0...3
        void setBass_gain(int bass_gain); // --15 ... +15 dB = int -15 ... 15    
        void setMiddle_gain(int mid_gain); // --15 ... +15 dB = int -15 ... 15
        void setTreble_gain(int treb_gain); // --15 ... +20 dB = int -15 ... 15
        void setLoudness_gain(int loud_gain); // 0 ... 15 dB = int 0 ... 15    

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

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

void BD37033FV::setInitial(){
             int initial = 0b00100100;
           writeWire(INITIAL_SETUP, initial); 
   }

void BD37033FV::setSub_setup(int sub_f,int sub_out, int faza){
          switch(sub_f){
             case 0: sub_f = 0b00000000;break;  
             case 1: sub_f = 0b00000001;break; 
             case 2: sub_f = 0b00000010;break; 
             case 3: sub_f = 0b00000011;break; 
             case 4: sub_f = 0b00000100;break; 
             case 5: sub_f = 0b00000101;break;        
   }   
          switch(sub_out){
             case 0: sub_out = 0b00000000;break;  
             case 1: sub_out = 0b00010000;break; 
             case 2: sub_out = 0b00100000;break; 
             case 3: sub_out = 0b00110000;break;
   } 
          switch(faza){
             case 0: faza = 0b00000000;break;
             case 1: faza = 0b10000000;break;
   }
             int sub_set_sum = sub_f + sub_out + faza;
             writeWire(LPF_SETUP, sub_set_sum); 
   }

void BD37033FV::setLoud_f(int mix_in, int loud_f, int mix_ch1, int mix_ch2){
             switch(mix_in){
             case 0: mix_in = 0b00000000;break;  
             case 1: mix_in = 0b01000000;break; 
             case 2: mix_in = 0b10000000;break; 
             case 3: mix_in = 0b11000000;break; 
   }
             switch(loud_f){
             case 0: loud_f = 0b00000000;break;  
             case 1: loud_f = 0b00001000;break; 
             case 2: loud_f = 0b00010000;break; 
             case 3: loud_f = 0b00011000;break;      
   }   
             switch(mix_ch1){
             case 0: mix_ch1 = 0b00000000;break;  
             case 1: mix_ch1 = 0b00000010;break; 
   }
             switch(mix_ch2){
             case 0: mix_ch2 = 0b00000000;break;  
             case 1: mix_ch2 = 0b00000100;break; 
   }     
             int loun_sum = 0b00000001 + loud_f + mix_ch1 + mix_ch2 + mix_in;
             writeWire(MIXING_SETUP, loun_sum); 
   }

void BD37033FV::setIn(int in){
             switch(in){
             case 0: in = 0b00000000;break;  
             case 1: in = 0b00000001;break; 
             case 2: in = 0b00000010;break;      
   }   
             writeWire(INPUT_SELECT, in); 
   }

void BD37033FV::setIn_gain(int in_gain, int mute){
            switch(mute){
               case 0: mute = 0b00000000;break;
               case 1: mute = 0b10000000;break;
   }
            int sum_in_gain = in_gain + mute;
            writeWire(INPUT_GAIN, sum_in_gain); 
   }

void BD37033FV::setVol(int vol){
            if(vol &gt; 0){vol = 128 - vol;}
            if(vol &lt;= 0){vol = abs(vol) + 128;}
            writeWire(VOLUME_GAIN, vol); 
   }

void BD37033FV::setFront_1(int front_1){
            if(front_1 &gt; 0){front_1 = 128 - front_1;}
            if(front_1 &lt;= 0){front_1 = abs(front_1) + 128;}
            
            writeWire(FADER_1_FRONT, front_1); 
   }

void BD37033FV::setFront_2(int front_2){
            if(front_2 &gt; 0){front_2 = 128 - front_2;}
            if(front_2 &lt;= 0){front_2 = abs(front_2) + 128;}
            
            writeWire(FADER_2_FRONT, front_2); 
   }

void BD37033FV::setRear_1(int rear_1){
            if(rear_1 &gt; 0){rear_1 = 128 - rear_1;}
            if(rear_1 &lt;= 0){rear_1 = abs(rear_1) + 128;}
            
            writeWire(FADER_1_REAR, rear_1); 
   }

void BD37033FV::setRear_2(int rear_2){
            if(rear_2 &gt; 0){rear_2 = 128 - rear_2;}
            if(rear_2 &lt;= 0){rear_2 = abs(rear_2) + 128;}
            
            writeWire(FADER_2_REAR, rear_2); 
   }

void BD37033FV::setSub1(int sub1){
            if(sub1 &gt; 0){sub1 = 128 - sub1;}
            if(sub1 &lt;= 0){sub1 = abs(sub1) + 128;}
            
            writeWire(FADER_SUB_1, sub1); 
   }

void BD37033FV::setSub2(int sub2){
            if(sub2 &gt; 0){sub2 = 128 - sub2;}
            if(sub2 &lt;= 0){sub2 = abs(sub2) + 128;}
            
            writeWire(FADER_SUB_2, sub2); 
   }

void BD37033FV::setBass_setup(int bass_q, int bass_f){
            switch(bass_q){
               case 0: bass_q = 0b00000000;break;
               case 1: bass_q = 0b00000001;break;
               case 2: bass_q = 0b00000010;break;
               case 3: bass_q = 0b00000011;break;  
   }
            switch(bass_f){
               case 0: bass_f = 0b00000000;break;
               case 1: bass_f = 0b00010000;break;
               case 2: bass_f = 0b00100000;break;
               case 3: bass_f = 0b00110000;break;  
   }
            int bass_s_sum = bass_q + bass_f;
            writeWire(BASS_SETUP, bass_s_sum); 
   }

void BD37033FV::setMiddle_setup(int mid_q, int mid_f){
            switch(mid_q){
               case 0: mid_q = 0b00000000;break;
               case 1: mid_q = 0b00000001;break;
               case 2: mid_q = 0b00000010;break;
               case 3: mid_q = 0b00000011;break;  
   }
            switch(mid_f){
               case 0: mid_f = 0b00000000;break;
               case 1: mid_f = 0b00010000;break;
               case 2: mid_f = 0b00100000;break;
               case 3: mid_f = 0b00110000;break;  
   }
            int mid_s_sum = mid_q + mid_f;
            writeWire(MIDDLE_SETUP, mid_s_sum); 
   }

void BD37033FV::setTreble_setup(int treb_q, int treb_f){
            switch(treb_q){
               case 0: treb_q = 0b00000000;break;
               case 1: treb_q = 0b00000001;break; 
   }
            switch(treb_f){
               case 0: treb_f = 0b00000000;break;
               case 1: treb_f = 0b00010000;break;
               case 2: treb_f = 0b00100000;break;
               case 3: treb_f = 0b00110000;break;  
   }
            int treb_s_sum = treb_q + treb_f;
            writeWire(TREBLE_SETUP, treb_s_sum); 
   }

void BD37033FV::setBass_gain(int bass_gain){
                 if(bass_gain&gt;0){bass_gain = bass_gain + 0b00000000;}                     
                 if(bass_gain&lt;=0){bass_gain = abs(bass_gain) + 0b10000000;}  
               writeWire(BASS_GAIN, bass_gain);   
   }

void BD37033FV::setMiddle_gain(int mid_gain){
                 if(mid_gain&gt;0){mid_gain = mid_gain + 0b00000000;}                     
                 if(mid_gain&lt;=0){mid_gain = abs(mid_gain) + 0b10000000;}  
               writeWire(MIDDLE_GAIN, mid_gain);   
   }

void BD37033FV::setTreble_gain(int treb_gain){
                 if(treb_gain&gt;0){treb_gain = treb_gain + 0b00000000;}                     
                 if(treb_gain&lt;=0){treb_gain = abs(treb_gain) + 0b10000000;}  
               writeWire(TREBLE_GAIN, treb_gain);   
   }

void BD37033FV::setLoudness_gain(int loud_gain){
               writeWire(LOUDNESS_GAIN, loud_gain);  
   }



void BD37033FV::writeWire(char a, char b){
  Wire.beginTransmission(BD37033FV_address);
  Wire.write (a);
  Wire.write (b);
  Wire.endTransmission();
}</code></pre></div><p>test.ino<br /></p><div class="codebox"><pre><code>#include &lt;Wire.h&gt; 
#include &lt;BD37033FV.h&gt;
BD37033FV tda; 

void setup(){
   Wire.begin();
   audio();
}

void loop(){}

void audio(){
        tda.setInitial();
        tda.setSub_setup(0,0,0); // off 55hz 85hz 120hz 160hz pass = int sub_f(0...5) || LPF front rear sub = int sub_out(0...3) 0 - default || 0 180 = int faza(0...1)
        tda.setLoud_f(3,0,0,0); // mix_in off || 400hz 800hz 2400hz Prohibition = int loud_f(0...3) || MIXING 1ch 2ch -- on off = mix_ch1(0...1) mix_ch2(0..1)
        tda.setIn(0); // in1 in2 in3 = int in(0...2)
        tda.setIn_gain(0,0); // 0...16 dB = int in_gain(0...16) || off on = int mute(0...1)
        tda.setVol(0); // -79...+15 dB = int vol(-79...15)
        tda.setFront_1(0); // -79...+15 dB = int -79...15
        tda.setFront_2(0); // -79...+15 dB = int -79...15
        tda.setRear_1(0); // -79...+15 dB = int -79...15
        tda.setRear_2(0); // -79...+15 dB = int -79...15
        tda.setSub1(0); // -79...+15 dB = int -79...15
        tda.setSub2(0); // -79...+15 dB = int -79...15
        tda.setBass_setup(0,0); // 0.5 1.0 1.5 2.0 --- int 0...3, 60Hz 80Hz 100Hz 120Hz --- int 0...3
        tda.setMiddle_setup(0,0); // 0.75 1.0 1.25 1.5 --- int 0...3, 500Hz 1kHz 1.5kHz 2.5kHz --- int 0...3
        tda.setTreble_setup(0,0); // 0.75 1.25  --- int 0...1, 7.5kHz 10kHz 12.5kHz 15kHz --- int 0...3
        tda.setBass_gain(0); // --15 ... +15 dB = int -15 ... 15 
        tda.setMiddle_gain(0); // --15 ... +15 dB = int -15 ... 15
        tda.setTreble_gain(0); // --15 ... +20 dB = int -15 ... 15
        tda.setLoudness_gain(0); // 0 ... 15 dB = int 0 ... 15 
  }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 13 Mar 2022 08:23:12 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=5515#p5515</guid>
		</item>
	</channel>
</rss>
