<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; M62429]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=469&amp;type=atom" />
	<updated>2022-03-03T13:56:04Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=469</id>
		<entry>
			<title type="html"><![CDATA[M62429]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=5506#p5506" />
			<content type="html"><![CDATA[<p><span class="attention-yellow"></span> </p><p>M62429.h<br /></p><div class="codebox"><pre><code>//rcl-radio.ru
// liman324@yandex.ru
// библиотека создана на основе https://soltau.ru/index.php/arduino/item/497-kak-podklyuchit-regulyator-gromkosti-m62429-k-arduino

#include &lt;Arduino.h&gt;

void setVolume (int clk, int data, int canal, int k, int att);
	</code></pre></div><p>M62429.cpp<br /></p><div class="codebox"><pre><code>//rcl-radio.ru
// liman324@yandex.ru
// библиотека создана на основе https://soltau.ru/index.php/arduino/item/497-kak-podklyuchit-regulyator-gromkosti-m62429-k-arduino

#include &lt;Arduino.h&gt;

void setVolume (int clk, int data, int canal, int k, int att){
  pinMode(data, OUTPUT);
  pinMode(clk, OUTPUT);
  digitalWrite(data, HIGH);
  digitalWrite(clk, LOW);
  
  
   int att1[21][5] = {
  {1, 0, 1, 0, 1}, //-0db
  {0, 0, 1, 0, 1}, //-4db
  {1, 1, 0, 0, 1}, //-8db
  {0, 1, 0, 0, 1}, //-12db
  {1, 0, 0, 0, 1}, //-16db
  {0, 0, 0, 0, 1}, //-20db
  {1, 1, 1, 1, 0}, //-24db
  {0, 1, 1, 1, 0}, //-28db
  {1, 0, 1, 1, 0}, //-32db
  {0, 0, 1, 1, 0}, //-36db
  {1, 1, 0, 1, 0}, //-40db
  {0, 1, 0, 1, 0}, //-44db
  {1, 0, 0, 1, 0}, //-48db
  {0, 0, 0, 1, 0}, //-52db
  {1, 1, 1, 0, 0}, //-56db
  {0, 1, 1, 0, 0}, //-60db
  {1, 0, 1, 0, 0}, //-64db
  {0, 0, 1, 0, 0}, //-68db
  {1, 1, 0, 0, 0}, //-72db
  {0, 1, 0, 0, 0}, //-76db
  {1, 0, 0, 0, 0}  //-80db
};

// Коды громкости аттенюатора 2
int att2[4][2] = {
  {1, 1}, //-0db
  {0, 1}, //-1db
  {1, 0}, //-2db
  {0 ,0}  //-3db
};   
int att1index = floor(abs(att) / 4);
  int att2index = abs(att) % 4;
  
  // Задаём в пакете канал:
  digitalWrite(data, (bool)canal);
  digitalWrite(clk, HIGH);
  digitalWrite(data, LOW);
  digitalWrite(clk, LOW);

  // Задаём одновременное или независимое управление каналами:
  digitalWrite(data, k);
  digitalWrite(clk, HIGH);
  digitalWrite(data, LOW);
  digitalWrite(clk, LOW);

  // Задаём значение 1-го аттенюатора D2..D6:
  for (int i=0; i&lt;5; i++) {
    digitalWrite(data, (bool)att1[att1index][i]);
    digitalWrite(clk, HIGH);
    digitalWrite(data, LOW);
    digitalWrite(clk, LOW);
  }
  
  // Задаём значение 2-го аттенюатора D7..D8:
  for (int i=0; i&lt;2; i++) {
    digitalWrite(data, (bool)att2[att2index][i]);
    digitalWrite(clk, HIGH);
    digitalWrite(data, LOW);
    digitalWrite(clk, LOW);
  }

  // Два последних бита пакета – две единицы:
  digitalWrite(data, HIGH);
  digitalWrite(clk, HIGH);
  delayMicroseconds(2);
  digitalWrite(data, LOW);
  digitalWrite(clk, LOW);
  delayMicroseconds(2);

  digitalWrite(data, HIGH);
  digitalWrite(clk, HIGH);
  delayMicroseconds(2);
  digitalWrite(clk, LOW);
  digitalWrite(data, LOW);
  delayMicroseconds(2);

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

void setup(){
}

void loop(){
audio();
delay(1000);
}

void audio(){
setVolume (11,12,0,0,5); 
setVolume (11,12,0,1,5);
/* pin CLK
   pin DATA
   0 - по одному каналу, 1 - оба вместе
   0 ПК 1 ЛК
   83 ... 0 громкость 83 = -83 дБ */  
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2022-03-03T13:56:04Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=5506#p5506</id>
		</entry>
</feed>
