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);
}
}
Nah, pada akhirnya:

Dan, atas permintaan para pekerja, video:
PS. Namun, ada pertanyaan untuk yang lebih berpengalaman:
1) - Mengapa saya harus menggunakan anoda tambahan dan katoda tambahan untuk menstabilkan titik referensi pada awal skala, tetapi untuk yang lain tidak digunakan dan tidak ada yang rusak? Menurut manual mereka dibutuhkan.
2) - Perbarui frekuensi. Seberapa kritiskah direkomendasikan di atas / di bawah ini?
Saya akan dengan senang hati menjawab di komentar. Terima kasih