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);
	}
}
Bem, no final:

E, a pedido dos trabalhadores, vídeo:
PS. No entanto, havia perguntas para os mais experientes:
1) - Por que eu tive que usar o ânodo Adicional e o cátodo adicional para estabilizar o ponto de referência no início da escala, mas para outros ele não é usado e nada está quebrado? De acordo com o manual, eles são necessários.
2) - Atualize a frequência. Quão crítico é recomendado acima / abaixo?
Ficarei feliz em responder nos comentários. Obrigado.