<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; LC75412]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=539&amp;type=atom" />
	<updated>2023-02-19T06:14:28Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=539</id>
		<entry>
			<title type="html"><![CDATA[LC75412]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7384#p7384" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>// LC75412
#define CE 3 // pin 24
#define DI 2 // pin 25
#define CL 4 // pin 26
#define MUTE 5

void setup(){
  Serial.begin(9600);
  pinMode(CE,OUTPUT);pinMode(DI,OUTPUT);pinMode(CL,OUTPUT);pinMode(MUTE,OUTPUT);
  digitalWrite(CL,LOW);digitalWrite(CE,LOW);digitalWrite(DI,LOW);
  delay(500);digitalWrite(MUTE,1);
  //      in  gain vol bass treb fader ch  r/f loud zero zero_s
    audio(0,  0,    0,  0,   0,   0,   3,  0,  0,   0,   3);
  }

void loop(){
    
  delay(1000);
  }


void audio(int in, int gain, int vol, int bass, int treb, int fader, int ch, int rf, int loud, int zero, int zero_s){
  digitalWrite(CL,LOW);
  digitalWrite(CE,LOW);
    byte addr = 0x81;                                         
 for(int i = 7; i &gt;= 0; i--){
   digitalWrite(CL,LOW);
   digitalWrite(DI, (addr &gt;&gt; i) &amp; 0x01);Serial.print((addr &gt;&gt; i) &amp; 0x01);
   digitalWrite(CL,HIGH);
   }
   Serial.print(&quot; &quot;); 
   digitalWrite(CL,LOW);
   digitalWrite(CE,HIGH);
   digitalWrite(CL,LOW);

/// input control //////////////////////////////////////
// ch1...ch6 = byte 0...5 --- 0...2 bit
for(int i = 0; i &lt;= 2; i++){
        digitalWrite(CL,LOW);
        switch(i){
         case 0: digitalWrite(DI, (in &amp; 0b001)&gt;&gt;0);Serial.print((in &amp; 0b001)&gt;&gt;0);break;
         case 1: digitalWrite(DI, (in &amp; 0b010)&gt;&gt;1);Serial.print((in &amp; 0b010)&gt;&gt;1);break;
         case 2: digitalWrite(DI, (in &amp; 0b100)&gt;&gt;2);Serial.print((in &amp; 0b100)&gt;&gt;2);break;
        } 
        digitalWrite(CL,HIGH);
        }     
        Serial.print(&quot; &quot;);

/// 3 bit to 0 normal   
        digitalWrite(CL,LOW);
        digitalWrite(DI, 0);Serial.print(0);Serial.print(&quot; &quot;);
        digitalWrite(CL,HIGH); 

/// input gain conrtol /////////////////////////////////
// 0...+18.75 dB = byte 0...15 --- 4...7 bit
    for(int i = 0; i &lt;= 3; i++){
       digitalWrite(CL,LOW);
    switch(i){
       case 0: digitalWrite(DI, (gain &amp; 0b0001)&gt;&gt;0);Serial.print((gain &amp; 0b001)&gt;&gt;0);break;
       case 1: digitalWrite(DI, (gain &amp; 0b0010)&gt;&gt;1);Serial.print((gain &amp; 0b010)&gt;&gt;1);break;
       case 2: digitalWrite(DI, (gain &amp; 0b0100)&gt;&gt;2);Serial.print((gain &amp; 0b100)&gt;&gt;2);break;
       case 3: digitalWrite(DI, (gain &amp; 0b1000)&gt;&gt;3);Serial.print((gain &amp; 0b100)&gt;&gt;3);break;
       } 
       digitalWrite(CL,HIGH);
       }
       Serial.print(&quot; &quot;);
       
/// volume conrtol /////////////////////////////////
// 0...-78 dB = byte 0...78 --- 8...15 bit
    for(int i = 0; i &lt;= 7; i++){
       digitalWrite(CL,LOW);
    switch(i){
       case 0: digitalWrite(DI, (vol &amp; 0b00000001)&gt;&gt;0);Serial.print((vol &amp; 0b00000001)&gt;&gt;0);break;
       case 1: digitalWrite(DI, (vol &amp; 0b00000010)&gt;&gt;1);Serial.print((vol &amp; 0b00000010)&gt;&gt;1);break;
       case 2: digitalWrite(DI, (vol &amp; 0b00000100)&gt;&gt;2);Serial.print((vol &amp; 0b00000100)&gt;&gt;2);break;
       case 3: digitalWrite(DI, (vol &amp; 0b00001000)&gt;&gt;3);Serial.print((vol &amp; 0b00001000)&gt;&gt;3);break;
       case 4: digitalWrite(DI, (vol &amp; 0b00010000)&gt;&gt;4);Serial.print((vol &amp; 0b00010000)&gt;&gt;4);break;
       case 5: digitalWrite(DI, (vol &amp; 0b00100000)&gt;&gt;5);Serial.print((vol &amp; 0b00100000)&gt;&gt;5);break;
       case 6: digitalWrite(DI, (vol &amp; 0b01000000)&gt;&gt;6);Serial.print((vol &amp; 0b01000000)&gt;&gt;6);break;
       case 7: digitalWrite(DI, (vol &amp; 0b10000000)&gt;&gt;7);Serial.print((vol &amp; 0b10000000)&gt;&gt;7);break;
       } 
       digitalWrite(CL,HIGH);
       } 
       Serial.print(&quot; &quot;);
       
/// bass conrtol /////////////////////////////////
// -18...+18 dB = int -18...0...+18 
// 16...19 bit
int bass_d;
switch(bass){
  case  18:bass_d = 0b1100;break;
  case  16:bass_d = 0b0100;break;
  case  14:bass_d = 0b1000;break;
  case  12:bass_d = 0b0110;break;
  case  10:bass_d = 0b1010;break;
  case  8 :bass_d = 0b0010;break;
  case  6 :bass_d = 0b1100;break;
  case  4 :bass_d = 0b0100;break;
  case  2 :bass_d = 0b1000;break;
  case  0 :bass_d = 0b0000;break;
  case  -2:bass_d = 0b1001;break;
  case  -4:bass_d = 0b0101;break;
  case  -6:bass_d = 0b1101;break;
  case  -8:bass_d = 0b0011;break;
  case -10:bass_d = 0b1011;break;
  case -12:bass_d = 0b0111;break;
  case -14:bass_d = 0b1001;break;
  case -16:bass_d = 0b0101;break;
  case -18:bass_d = 0b1101;break;
  }
 for(int i = 3; i &gt;= 0; i--){
   digitalWrite(CL,LOW);
   digitalWrite(DI, (bass_d &gt;&gt; i) &amp; 0x01);Serial.print((bass_d &gt;&gt; i) &amp; 0x01);
   digitalWrite(CL,HIGH);
   } 
   Serial.print(&quot; &quot;);
       
////////////////////////////////////
// 20..23 bit
for(int i = 0; i &lt;= 3; i++){
        digitalWrite(CL,LOW);
        digitalWrite(DI, 0);Serial.print(0);
        digitalWrite(CL,HIGH);
   } 
   Serial.print(&quot; &quot;);
/// treble conrtol /////////////////////////////////
// -18...+18 dB = int -18...0...+18 
// 24...27 bit
int treb_d;
switch(treb){
  case  18:treb_d = 0b1100;break;
  case  16:treb_d = 0b0100;break;
  case  14:treb_d = 0b1000;break;
  case  12:treb_d = 0b0110;break;
  case  10:treb_d = 0b1010;break;
  case  8 :treb_d = 0b0010;break;
  case  6 :treb_d = 0b1100;break;
  case  4 :treb_d = 0b0100;break;
  case  2 :treb_d = 0b1000;break;
  case  0 :treb_d = 0b0000;break;
  case  -2:treb_d = 0b1001;break;
  case  -4:treb_d = 0b0101;break;
  case  -6:treb_d = 0b1101;break;
  case  -8:treb_d = 0b0011;break;
  case -10:treb_d = 0b1011;break;
  case -12:treb_d = 0b0111;break;
  case -14:treb_d = 0b1001;break;
  case -16:treb_d = 0b0101;break;
  case -18:treb_d = 0b1101;break;
  }
 for(int i = 3; i &gt;= 0; i--){
   digitalWrite(CL,LOW);
   digitalWrite(DI, (treb_d &gt;&gt; i) &amp; 0x01);Serial.print((treb_d &gt;&gt; i) &amp; 0x01);
   digitalWrite(CL,HIGH);
   }    
   Serial.print(&quot; &quot;);
       
/// fader volume conrtol /////////////////////////////////
// byte 0...15 --- 28...31 bit
  for(int i = 0; i &lt;= 3; i++){
       digitalWrite(CL,LOW);
    switch(i){
       case 0: digitalWrite(DI, (fader &amp; 0b0001)&gt;&gt;0);Serial.print((fader &amp; 0b0001)&gt;&gt;0);break;
       case 1: digitalWrite(DI, (fader &amp; 0b0010)&gt;&gt;1);Serial.print((fader &amp; 0b0010)&gt;&gt;1);break;
       case 2: digitalWrite(DI, (fader &amp; 0b0100)&gt;&gt;2);Serial.print((fader &amp; 0b0100)&gt;&gt;2);break;
       case 3: digitalWrite(DI, (fader &amp; 0b1000)&gt;&gt;3);Serial.print((fader &amp; 0b1000)&gt;&gt;3);break;
       } 
       digitalWrite(CL,HIGH);
       }  
       Serial.print(&quot; &quot;);
          
/// ch selection conrtol /////////////////////////////////
// byte 0...3
// 32...33 bit
  for(int i = 0; i &lt;= 1; i++){
       digitalWrite(CL,LOW);
    switch(i){
       case 0: digitalWrite(DI, (ch &amp; 0b01)&gt;&gt;0);Serial.print((ch &amp; 0b0001)&gt;&gt;0);break;
       case 1: digitalWrite(DI, (ch &amp; 0b10)&gt;&gt;1);Serial.print((ch &amp; 0b0010)&gt;&gt;1);break;
       } 
       digitalWrite(CL,HIGH);
       }   
       Serial.print(&quot; &quot;);
/// read/front conrtol /////////////////////////////////
// byte 0...1
// 34 bit
        digitalWrite(CL,LOW);
        digitalWrite(DI,rf);Serial.print(rf);
        digitalWrite(CL,HIGH);
        Serial.print(&quot; &quot;);
/// loudness conrtol /////////////////////////////////
// byte 0...1
// 35 bit
        digitalWrite(CL,LOW);
        digitalWrite(DI,loud);Serial.print(loud);
        digitalWrite(CL,HIGH); 
        Serial.print(&quot; &quot;);            
/// zero-cross conrtol /////////////////////////////////
// byte 0...2
// 36...37 bit
  for(int i = 0; i &lt;= 1; i++){
       digitalWrite(CL,LOW);
    switch(i){
       case 0: digitalWrite(DI, (zero &amp; 0b01)&gt;&gt;0);Serial.print((zero &amp; 0b01)&gt;&gt;0);break;
       case 1: digitalWrite(DI, (zero &amp; 0b10)&gt;&gt;1);Serial.print((zero &amp; 0b10)&gt;&gt;1);break;
} 
       digitalWrite(CL,HIGH);
       } 
       Serial.print(&quot; &quot;); 
       
/// zero-cross signal conrtol /////////////////////////////////
// byte 0...2
// 38...39 bit
  for(int i = 0; i &lt;= 1; i++){
       digitalWrite(CL,LOW);
    switch(i){
       case 0: digitalWrite(DI, (zero_s &amp; 0b01)&gt;&gt;0);Serial.print((zero_s &amp; 0b01)&gt;&gt;0);break;
       case 1: digitalWrite(DI, (zero_s &amp; 0b10)&gt;&gt;1);Serial.print((zero_s &amp; 0b10)&gt;&gt;1);break;
       } 
       digitalWrite(CL,HIGH);
       } 
       Serial.print(&quot; &quot;);
       
/// bass conrtol d40 /////////////////////////////////
// 40 bit
switch(bass){
  case  18:bass_d = 1;break;
  case  16:bass_d = 1;break;
  case  14:bass_d = 1;break;
  case  12:bass_d = 0;break;
  case  10:bass_d = 0;break;
  case  8 :bass_d = 0;break;
  case  6 :bass_d = 0;break;
  case  4 :bass_d = 0;break;
  case  2 :bass_d = 0;break;
  case  0 :bass_d = 0;break;
  case  -2:bass_d = 0;break;
  case  -4:bass_d = 0;break;
  case  -6:bass_d = 0;break;
  case  -8:bass_d = 0;break;
  case -10:bass_d = 0;break;
  case -12:bass_d = 0;break;
  case -14:bass_d = 1;break;
  case -16:bass_d = 1;break;
  case -18:bass_d = 1;break;
  }
        digitalWrite(CL,LOW);
        digitalWrite(DI, bass_d);Serial.print(bass_d);
        digitalWrite(CL,HIGH);
        Serial.print(&quot; &quot;);
/// treb conrtol d41 /////////////////////////////////
// 41 bit
switch(treb){
  case  18:treb_d = 1;break;
  case  16:treb_d = 1;break;
  case  14:treb_d = 1;break;
  case  12:treb_d = 0;break;
  case  10:treb_d = 0;break;
  case  8 :treb_d = 0;break;
  case  6 :treb_d = 0;break;
  case  4 :treb_d = 0;break;
  case  2 :treb_d = 0;break;
  case  0 :treb_d = 0;break;
  case  -2:treb_d = 0;break;
  case  -4:treb_d = 0;break;
  case  -6:treb_d = 0;break;
  case  -8:treb_d = 0;break;
  case -10:treb_d = 0;break;
  case -12:treb_d = 0;break;
  case -14:treb_d = 1;break;
  case -16:treb_d = 1;break;
  case -18:treb_d = 1;break;
  }
        digitalWrite(CL,LOW);
        digitalWrite(DI, treb_d);Serial.print(treb_d);
        digitalWrite(CL,HIGH); 
        Serial.print(&quot; &quot;);
/// test mode conrtol /////////////////////////////////
// byte 0...3
// 42...43 bit
int test = 0;
for(int i = 0; i &lt;= 1; i++){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (test &gt;&gt; i) &amp; 0x01);Serial.print(0);
        digitalWrite(CL,HIGH);
   }
//// end byte    
        digitalWrite(CL,LOW);
        delayMicroseconds(1);
        digitalWrite(CE,LOW);   
        delay(1);   
        Serial.println();    
  }  
    </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-02-19T06:14:28Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7384#p7384</id>
		</entry>
</feed>
