<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; TDA7317]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=22&amp;type=atom" />
	<updated>2019-08-23T15:41:46Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=22</id>
		<entry>
			<title type="html"><![CDATA[TDA7317]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=27#p27" />
			<content type="html"><![CDATA[<p>TDA7317 – стереофонический 5-полосный эквалайзер с цифровым управлением, позволяющий осуществлять регулировку уровня звука и тембра в пяти полосах 60 Гц, 260 Гц, 1 кГц, 3 кГц, 10 кГц. В связке с Arduino TDA7317 можно сделать функциональный предварительный усилитель с регулировкой тембра по пяти полосам, а если добавить аудиопроцессор например TDA7313 или TDA7318, то помимо регулировки тембра добавятся дополнительные функции, например коммутатор входов, регулятор громкости и баланса, предусилитель.</p><p><span class="postimg"><img src="http://rcl-radio.ru/wp-content/uploads/2019/05/TDA7317.gif" alt="http://rcl-radio.ru/wp-content/uploads/2019/05/TDA7317.gif" /></span></p><p><a href="http://rcl-radio.ru/?p=58798">http://rcl-radio.ru/?p=58798</a></p><p>TDA7317.h</p><div class="codebox"><pre><code>#ifndef TDA7317_H
#define TDA7317_H


#define TDA7317_address 0x43 // 18 вывод ADDR не замкнут на землю

#include &lt;Arduino.h&gt;
class TDA7317
{
  public:
    TDA7317();
        void setVolume(int vol);        // 0...47   
        void setBand(int band, int db); // 0...4 (1...5 полоса) , -7...+7 (-14...+14 дБ)
    
  private:
    void writeWire(char a);
};
    
#endif //TDA7317_H</code></pre></div><p>TDA7317.cpp</p><div class="codebox"><pre><code>#include &lt;Arduino.h&gt;
#include &lt;Wire.h&gt;
#include &quot;TDA7317.h&quot;

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

void TDA7317::setVolume(int vol){
  vol = 47 - vol;
  writeWire(vol);
}

void TDA7317::setBand(int band, int db){
  switch(band){
     case 0: band = 0b10000000; break;
     case 1: band = 0b10010000; break;
     case 2: band = 0b10100000; break;
     case 3: band = 0b10110000; break;
     case 4: band = 0b11000000; break;
  }
  switch(db){
     case -0: db = 0b00001000; break;
     case -1: db = 0b00001001; break;
     case -2: db = 0b00001010; break;
     case -3: db = 0b00001011; break;
     case -4: db = 0b00001100; break;
     case -5: db = 0b00001101; break;
     case -6: db = 0b00001110; break;
     case -7: db = 0b00001111; break;

     case 1: db = 0b00000001; break;
     case 2: db = 0b00000010; break;
     case 3: db = 0b00000011; break;
     case 4: db = 0b00000100; break;
     case 5: db = 0b00000101; break;
     case 6: db = 0b00000110; break;
     case 7: db = 0b00000111; break;
  }
    int ekv = band + db;
    writeWire(ekv);
}


void TDA7317::writeWire(char a){
  Wire.beginTransmission(TDA7317_address);
  Wire.write (a);
  Wire.endTransmission();
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2019-08-23T15:41:46Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=27#p27</id>
		</entry>
</feed>
