int Avg1[SumCounterMax];
int Avg2[SumCounterMax];
byte nAvg = 0;
const byte Log_Conv[256] = {0,2,4,5,7,9,10,12,13,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,33,34,35,36,37,37,38,39,40,40,41,42,42,43,44,44,45,45,46,47,47,48,48,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57,57,58,58,59,59,60,60,60,61,61,62,62,63,63,63,64,64,64,65,65,66,66,66,67,67,67,68,68,68,69,69,69,70,70,70,71,71,72,73,73,73,74,74,74,74,75,75,75,76,76,76,76,77,77,77,78,78,78,78,79,79,79,79,80,81,81,82,82,82,82,83,83,83,83,84,84,84,84,84,85,85,86,86,87,87,87,87,88,88,88,88,88,89,89,89,89,90,90,90,90,90,91,91,91,91,92,93,93,93,93,93,94,94,94,94,94,95,95,95,95,95,96,96,96,96,96,96,97,97,97,97,97,98,98,98,98,98,98,99,99,99,100,100,100,101,101,101,101,101,101,102,102,102,102,102,102,103,103,103,103,103,103,104,104,104,104,104,104,104,105,105,105,105,105,105,106,106,106,106,106,106,106,107,107,107,107,107,107,107};
void setup()
{
pinMode(pA1, OUTPUT);
pinMode(pA2, OUTPUT);
pinMode(pK1, OUTPUT);
pinMode(pK2, OUTPUT);
pinMode(pK3, OUTPUT);
pinMode(pKR, OUTPUT);
digitalWrite(pA1, LOW);
digitalWrite(pA2, LOW);
digitalWrite(pK1, LOW);
digitalWrite(pK2, LOW);
digitalWrite(pK3, LOW);
digitalWrite(pA1, LOW);
digitalWrite(pA2, LOW);
digitalWrite(pKR, HIGH);
delay(100);
analogReference(INTERNAL);
}
void loop()
{
//reset
digitalWrite(pA1, LOW);
digitalWrite(pA2, LOW);
digitalWrite(pK1, LOW);
digitalWrite(pK2, LOW);
digitalWrite(pK3, LOW);
digitalWrite(pA1, LOW);
digitalWrite(pA2, LOW);
// "" .
digitalWrite(pKR, HIGH);
digitalWrite(pA1, HIGH);
digitalWrite(pA2, HIGH);
// . * =)
nAvg ++;
if (nAvg == SumCounterMax)
{
nAvg = 0;
}
Avg1[nAvg] = min(analogRead(4) * InputMultiplier, 255);
Avg2[nAvg] = min(analogRead(5) * InputMultiplier, 255);
unsigned long sn1 = 0;
unsigned long sn2 = 0;
for(byte i = 0; i < SumCounterMax; i++)
{
sn1 += Avg1[i];
sn2 += Avg2[i];
}
int n1 = Log_Conv[sn1 / SumCounterMax];
int n2 = Log_Conv[sn2 / SumCounterMax];
// - .
for (int i = 0; i < max(max(n1, n2), 60) ; i++)
{
if ((i + 0) % 3 == 0)
{
digitalWrite(pK1, HIGH);
digitalWrite(pKR, LOW);
digitalWrite(pK3, LOW);
}
if ((i + 2) % 3 == 0)
{
digitalWrite(pK2, HIGH);
digitalWrite(pK1, LOW);
}
if ((i + 1) % 3 == 0)
{
digitalWrite(pK3, HIGH);
digitalWrite(pK2, LOW);
}
if (i > n1)
{
digitalWrite(pA1, LOW);
}
if (i > n2)
{
digitalWrite(pA2, LOW);
}
delayMicroseconds(90);
}
}
рдЦреИрд░, рдЕрдВрдд рдореЗрдВ:

рдФрд░, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░, рд╡реАрдбрд┐рдпреЛ:
рдкреБрдирд╢реНрдЪред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рдереЗ:
1) - рдореБрдЭреЗ рд╕реНрдХреЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдиреЛрдб рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреИрдереЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ , рд▓реЗрдХрд┐рди рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЯреВрдЯрд╛ рд╣реИ? рдореИрдиреБрдЕрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрдиреНрд╣реЗрдВ рдЬрд░реВрд░рдд рд╣реИред
2) - рдЕрджреНрдпрддрди рдЖрд╡реГрддреНрддрд┐ред рдпрд╣ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдКрдкрд░ / рдиреАрдЪреЗ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ?
рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдзрдиреНрдпрд╡рд╛рджред