Возможно, вы хотели написать 12.5
вместо 12,5
в следующих выражениях: leftInput = analogRead(A0)/12,5; rightInput = analogRead(A1)/12,5;
Но даже тогда analogRead
возвращает значение от 0
до 1023
(включая). Таким образом, значение для left/rightInput
будет варьироваться от 0
до 81
, в то время как вам нужно, чтобы оно было в диапазоне 0...4
. Я предлагаю иметь другой массив пороговых значений и в зависимости от силы сигнала загораются все светодиоды, которые превышают пороговое значение, например (не проверено), добавьте это вместо вашего loop()
:
const int thresholdsLeftLed[leftLedCount] = { 4, 208, 412, 616, 820 };
const int thresholdsRightLed[rightLedCount] = { 4, 208, 412, 616, 820 };
void LightLEDs(int signalLeft, int signalRight)
{
for (int l = 0; l < leftLedCount; ++l)
digitalWrite(leftLed[l], signalLeft > thresholdsLeftLed[l] ? HIGH : LOW);
for (int r = 0; r < rightLedCount; ++r)
digitalWrite(rightLed[r], signalRight > thresholdsRightLed[r] ? HIGH : LOW);
}
void loop()
{
LightLEDs(analogRead(A0), analogRead(A1));
}
Обратите внимание, что вам, вероятно, не нужно выключать все светодиоды, поскольку они выключаются в контуре, если сигнал ниже порога