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) - تحديث التردد. ما مدى أهمية ذلك فوق / أدناه الموصى به؟
سأكون سعيدا للإجابة في التعليقات. شكرا.