<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; CS3310 - Stereo Digital Volume Control]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=162&amp;type=atom" />
	<updated>2025-05-14T00:09:19Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=162</id>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11822#p11822" />
			<content type="html"><![CDATA[<p>Не проверял, но должно работать для PGA4311</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-05-14T00:09:19Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11822#p11822</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11821#p11821" />
			<content type="html"><![CDATA[<p>CS3310.h</p><div class="codebox"><pre><code>//  Alexander Liman
//  liman324@yandex.ru
//  rcl-radio.ru

#ifndef  CS3310_H
#define  CS3310_H

#include &lt;Arduino.h&gt;


class  CS3310
  {
    public:

  CS3310(uint8_t, uint8_t, uint8_t);
  void setVol(byte ch1, byte ch2, byte ch3, byte ch4);
  
    private:

  uint8_t CS;
  uint8_t SCLK;
  uint8_t SDATAI;

  };
#endif</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-05-14T00:08:36Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11821#p11821</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11820#p11820" />
			<content type="html"><![CDATA[<p>CS3310.cpp</p><div class="codebox"><pre><code>  
#include &lt;CS3310.h&gt;

CS3310::CS3310(uint8_t cs, uint8_t sclk, uint8_t sdatai){
            CS = cs;
            SCLK = sclk;
            SDATAI = sdatai;
      pinMode(CS,OUTPUT);
      pinMode(SCLK,OUTPUT);
      pinMode(SDATAI,OUTPUT);
}

void CS3310::setVol(byte r, byte l){
     // start 
     digitalWrite(CS,HIGH);
     digitalWrite(SCLK,HIGH);
     delay(2);
     digitalWrite(CS,LOW);

   //  ch1
  for(int i = 7; i &gt;= 0; i--){
        digitalWrite(SCLK,LOW);//delay(1);
        digitalWrite(SDATAI, (ch1 &gt;&gt; i) &amp; 0x01);delay(1);
        digitalWrite(SCLK,HIGH);delay(1);
  }

     //  ch2
  for(int i = 7; i &gt;= 0; i--){
        digitalWrite(SCLK,LOW);//delay(1);
        digitalWrite(SDATAI, (ch2 &gt;&gt; i) &amp; 0x01);delay(1);
        digitalWrite(SCLK,HIGH);delay(1);
  }
     //  ch3
  for(int i = 7; i &gt;= 0; i--){
        digitalWrite(SCLK,LOW);//delay(1);
        digitalWrite(SDATAI, (ch3 &gt;&gt; i) &amp; 0x01);delay(1);
        digitalWrite(SCLK,HIGH);delay(1);
  }

     //  ch4
  for(int i = 7; i &gt;= 0; i--){
        digitalWrite(SCLK,LOW);//delay(1);
        digitalWrite(SDATAI, (ch4 &gt;&gt; i) &amp; 0x01);delay(1);
        digitalWrite(SCLK,HIGH);delay(1);
  }
   // end
   digitalWrite(CS,HIGH);
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-05-14T00:04:54Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11820#p11820</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11819#p11819" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>liman324 пишет:</cite><blockquote><p>Все можно сделать.....</p></blockquote></div><p>Приветствую! Подскажите плииз, я правильно понимаю что эта библиотека может&nbsp; использоваться для всех регуляторов с похожим протоколом управления ? в частности PGA4311 ? <br />достаточно только в <br />void setVol(byte r, byte l);<br />объявить не 2, а 4 канала ?<br />void setVol(byte ch4, byte ch3, byte ch2, byte ch1);&nbsp; = норм ? <br />а может вообще плясок с библиотекой не устраивать ? объявить пины и к ним переделанный на 4 канала CS3310.cpp ???<br />или&nbsp; не получится ?</p>]]></content>
			<author>
				<name><![CDATA[4gam]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1587</uri>
			</author>
			<updated>2025-05-13T19:27:35Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11819#p11819</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1765#p1765" />
			<content type="html"><![CDATA[<p>Еще раз убедился на практике,что полный диапазон регулировки нужно ограничивать , в ряде случаев приводит к подвозбуду оконечников и подгоранию резистора в цобеле,когда кто то сдуру загонит регулировку в +31дб,даже при отсутствии сигнала.</p>]]></content>
			<author>
				<name><![CDATA[dmitry287]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=856</uri>
			</author>
			<updated>2020-06-14T09:16:20Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1765#p1765</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1627#p1627" />
			<content type="html"><![CDATA[<p>Понял , спасибо за ответ .</p>]]></content>
			<author>
				<name><![CDATA[folks]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=760</uri>
			</author>
			<updated>2020-05-23T08:43:03Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1627#p1627</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1626#p1626" />
			<content type="html"><![CDATA[<p>Все можно сделать, но пока на подобные проекты с FTF экранами интересных предложений мне не поступало.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-05-23T08:27:15Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1626#p1626</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1625#p1625" />
			<content type="html"><![CDATA[<p>Ну здесь на мой взгляд как то слишком много информации сразу выведено . Это чисто мое мнение , это как будто панель управления станка ЧПУ.<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/05/bc7bf22400528a271fff16aeaba277f7.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/05/bc7bf22400528a271fff16aeaba277f7.jpg" /></span>&nbsp; Вот здесь как то более гармонично смотрится .</p>]]></content>
			<author>
				<name><![CDATA[folks]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=760</uri>
			</author>
			<updated>2020-05-23T08:21:52Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1625#p1625</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1624#p1624" />
			<content type="html"><![CDATA[<p>Я делал проекты на ftf экранах для аудиопроцессоров с большим набором параметров, но все же на LCD1602 больше проектов повторяют, да и дешевле.<br /><span class="postimg"><img src="http://rcl-radio.ru/wp-content/uploads/2019/07/623786862187.png" alt="http://rcl-radio.ru/wp-content/uploads/2019/07/623786862187.png" /></span><br /><span class="postimg"><img src="http://rcl-radio.ru/wp-content/uploads/2019/04/7523965782368.png" alt="http://rcl-radio.ru/wp-content/uploads/2019/04/7523965782368.png" /></span></p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-05-23T08:16:31Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1624#p1624</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1623#p1623" />
			<content type="html"><![CDATA[<p>Я заметил , что вы как то любите дисплеи 1602 . Как то вы не любите цветные дисплеи , хотя на них все очень здорово смотрится .<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/05/615f74746a4d80ec6cbfd23b2d883c5b.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/05/615f74746a4d80ec6cbfd23b2d883c5b.jpg" /></span> <span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/05/bf91353c2f6831357dbd91b20002ef71.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/05/bf91353c2f6831357dbd91b20002ef71.jpg" /></span> <span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/05/b8f676a8232f93f9454a8fe75f62b70d.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/05/b8f676a8232f93f9454a8fe75f62b70d.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[folks]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=760</uri>
			</author>
			<updated>2020-05-23T08:12:10Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1623#p1623</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1622#p1622" />
			<content type="html"><![CDATA[<p>Эта функция ограничивает диапазон регулировки:</p><p>void vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;255){vol=255;}</p><p>например:</p><p>void vol_func(){if(vol&lt;20){vol=20;}if(vol&gt;200){vol=200;}</p><p>Диапазон регулировки будет не 255 шагов а 180, можно и меньше сделать</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-05-23T04:26:01Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1622#p1622</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1621#p1621" />
			<content type="html"><![CDATA[<p>Интересная тема...Делал РГ на этой микре,хорошая вещь,но диапазон регулировки громкости в большинстве случаев сильно избыточен,неплохо бы иметь возможность ограничивать его,как сверху,так и снизу,или через меню настроек или перед прошивкой какие то константы менять.</p>]]></content>
			<author>
				<name><![CDATA[dmitry287]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=856</uri>
			</author>
			<updated>2020-05-22T20:48:35Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1621#p1621</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1575#p1575" />
			<content type="html"><![CDATA[<p>mute</p><div class="codebox"><pre><code>#include &lt;Wire.h&gt; 
#include &lt;EEPROM.h&gt;
#include &lt;Encoder.h&gt;  // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include &lt;MsTimer2.h&gt; // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include &lt;CS3310.h&gt;
#include &lt;LiquidCrystal_I2C.h&gt; //Библиотека -  http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=45&amp;download=1
  LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей 
  Encoder myEnc(9, 8);//CLK, DT
  CS3310 cs(2,3,4);//CS,SCLK,SDATAI

  byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
  byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
  byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};  
  int vol,vol_d,z,z0,z1,vol_old;
  byte w,w1,mute;
  unsigned long times,oldPosition  = -999,newPosition;

void setup(){ 
  Wire.begin();Serial.begin(9600);
  lcd.init();lcd.backlight();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  lcd.setCursor(0,0);lcd.print(&quot;     CS3310   &quot;);delay(3000);lcd.clear();// ЗАСТАВКА
  vol = EEPROM.read(0);
  pinMode(7,INPUT);
  audio();
  }

void loop(){
   if (newPosition != oldPosition&amp;&amp;mute==0){oldPosition = newPosition;
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio();Serial.print(vol*0.5-96,1);Serial.print(&quot; &quot;);Serial.println(vol);} 
   vol_d=map(vol,0,255,0,45);
   if(w1==1){
   for(z=0,z0=0,z1=0;z&lt;=vol_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(&quot;   &quot;);}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w1=0;}

   if(digitalRead(7)==LOW&amp;&amp;mute==0){mute=1;vol_old=vol;vol=0;audio();lcd.clear();lcd.setCursor(0,0);lcd.print(&quot;      MUTE   &quot;);delay(300);}
   if(digitalRead(7)==LOW&amp;&amp;mute==1){mute=0;vol=vol_old;      audio();lcd.clear();w1=1;delay(300);}

   if(mute==0){  
     lcd.setCursor(0,0);lcd.print(&quot;VOLUME &quot;);
     if(vol*0.5-96&gt;=0){lcd.print(&quot;+&quot;);}
     lcd.print(vol*0.5-96,1);lcd.print(&quot; &quot;);
     lcd.setCursor(14,0);lcd.print(&quot;dB&quot;);}
//     delay(10);
   
 //////// EEPROM //////////////////////////////////////////////////
  if(millis()-times&gt;3000 &amp;&amp; w==1){EEPROM.update(0,vol);w=0;}
  } // LOOP

void audio(){
  cs.setVol(vol,vol);
  // byte 0  === mute
  // byte 1...255 === -95.5...+31.5 dB (step 0.5 dB)
  }
void to_Timer(){newPosition = myEnc.read()/4;}
void vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;255){vol=255;}
  }  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-05-13T09:21:22Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1575#p1575</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1574#p1574" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/05/60ef81cf6ff197690bfee2ecb84efb85.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/05/60ef81cf6ff197690bfee2ecb84efb85.png" /></span> </p><br /><div class="codebox"><pre><code>#include &lt;Wire.h&gt; 
#include &lt;EEPROM.h&gt;
#include &lt;Encoder.h&gt;  // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include &lt;MsTimer2.h&gt; // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include &lt;CS3310.h&gt;
#include &lt;LiquidCrystal_I2C.h&gt; //Библиотека -  http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=45&amp;download=1
  LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей 
  Encoder myEnc(9, 8);//CLK, DT
  CS3310 cs(2,3,4);//CS,SCLK,SDATAI

  byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
  byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
  byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};  
  int vol,vol_d,z,z0,z1;
  byte w,w1;
  unsigned long times,oldPosition  = -999,newPosition;

void setup(){ 
  Wire.begin();Serial.begin(9600);
  lcd.init();lcd.backlight();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  lcd.setCursor(0,0);lcd.print(&quot;     CS3310   &quot;);delay(3000);lcd.clear();// ЗАСТАВКА
  vol = EEPROM.read(0);
  audio();
  }

void loop(){
  if (newPosition != oldPosition){oldPosition = newPosition;
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio();Serial.print(vol*0.5-96,1);Serial.print(&quot; &quot;);Serial.println(vol);} 
   vol_d=map(vol,0,255,0,45);
   if(w1==1){
   for(z=0,z0=0,z1=0;z&lt;=vol_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(&quot;   &quot;);}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w1=0;}
     
     lcd.setCursor(0,0);lcd.print(&quot;VOLUME &quot;);
     if(vol*0.5-96&gt;=0){lcd.print(&quot;+&quot;);}
     lcd.print(vol*0.5-96,1);lcd.print(&quot; &quot;);
     lcd.setCursor(14,0);lcd.print(&quot;dB&quot;);
//     delay(10);
   
 //////// EEPROM //////////////////////////////////////////////////
  if(millis()-times&gt;3000 &amp;&amp; w==1){EEPROM.update(0,vol);w=0;}
  } // LOOP

void audio(){
  cs.setVol(vol,vol);
  // byte 0  === mute
  // byte 1...255 === -95.5...+31.5 dB (step 0.5 dB)
  }
void to_Timer(){newPosition = myEnc.read()/4;}
void vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;255){vol=255;}
  }  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-05-13T08:37:41Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1574#p1574</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CS3310 - Stereo Digital Volume Control]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=1572#p1572" />
			<content type="html"><![CDATA[<p><strong>Features</strong><br />Complete Digital Volume Control<br /> 2 Independent Channels<br />— Serial Control<br />— 0.5 dB Step Size<br />Wide Adjustable Range<br />— -95.5 dB Attenuation<br />— +31.5 dB Gain<br />Low Distortion &amp; Noise<br />— 0.001% THD+N<br />— 116 dB Dynamic Range<br />Noise Free Level Transitions<br />Channel-to-Channel Crosstalk Better Than 110 dB</p><p><span class="attention-yellow"></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/05/4e56bff41d83cacd0632e2a36f8782b5.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/05/4e56bff41d83cacd0632e2a36f8782b5.png" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/05/10751bef417c60d033677607035b79ab.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/05/10751bef417c60d033677607035b79ab.png" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/05/c41c65cf63314985570b7f83166cf8c7.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/05/c41c65cf63314985570b7f83166cf8c7.png" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/05/107e11d73cdbf6f5db20bf33e90f3e78.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/05/107e11d73cdbf6f5db20bf33e90f3e78.png" /></span> </p><p><span class="attention-yellow"></span> </p><br /><p>test.ino<br /></p><div class="codebox"><pre><code>#include &lt;CS3310.h&gt;

CS3310 cs(2,3,4);//CS,SCLK,SDATAI

void setup(){
  delay(100);
  audio();
  
  }

void loop(){}

void audio(){
  cs.setVol(200,200);
  // byte 0  === mute
  // byte 1...255 === -95.5...+31.5 dB (step 0.5 dB)
  }</code></pre></div><br /><p>CS3310.h<br /></p><div class="codebox"><pre><code>//  Alexander Liman
//  liman324@yandex.ru
//  rcl-radio.ru

#ifndef  CS3310_H
#define  CS3310_H

#include &lt;Arduino.h&gt;


class  CS3310
  {
    public:

  CS3310(uint8_t, uint8_t, uint8_t);
  void setVol(byte r, byte l);
  
    private:

  uint8_t CS;
  uint8_t SCLK;
  uint8_t SDATAI;

  };
#endif</code></pre></div><p>CS3310.cpp<br /></p><div class="codebox"><pre><code>#include &lt;CS3310.h&gt;

CS3310::CS3310(uint8_t cs, uint8_t sclk, uint8_t sdatai){
            CS = cs;
            SCLK = sclk;
            SDATAI = sdatai;
      pinMode(CS,OUTPUT);
      pinMode(SCLK,OUTPUT);
      pinMode(SDATAI,OUTPUT);
}

void CS3310::setVol(byte r, byte l){
     // start 
     digitalWrite(CS,HIGH);
     digitalWrite(SCLK,HIGH);
     delay(2);
     digitalWrite(CS,LOW);

     //  R
  for(int i = 7; i &gt;= 0; i--){
        digitalWrite(SCLK,LOW);//delay(1);
        digitalWrite(SDATAI, (r &gt;&gt; i) &amp; 0x01);delay(1);
        digitalWrite(SCLK,HIGH);delay(1);
  }

     //  L
  for(int i = 7; i &gt;= 0; i--){
        digitalWrite(SCLK,LOW);//delay(1);
        digitalWrite(SDATAI, (l &gt;&gt; i) &amp; 0x01);delay(1);
        digitalWrite(SCLK,HIGH);delay(1);
  }
   // end
   digitalWrite(CS,HIGH);
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-05-12T16:07:16Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=1572#p1572</id>
		</entry>
</feed>
