Napięcie zostaje zamienione na wartość 8 lub 10 bitową. Naj-naj-naj-prostrzy sposób będzie się opierał na naj-naj-naj-prostrzym algorytmie, który ma sens.
Zakładamy, że częstotliwość zmian słupka to 20Hz. Dlaczego 20Hz? W tej metodzie ma to znaczenie, bo potrzebujemy trochę próbek i warto by częstotliwość zmian była mniejsza lub równa najniższej częstotliwości jaka ma znaczenie w sygnale. Dźwięk dla nas zaczyna się od ok 20Hz. Wynika z tego, że okres zmian wynosi 1/20s=0.05s. Przeliczamy ile próbek dźwięku dostaniemy w tym czasie. Załóżmy, że będzie to 20k. Jeden okres próbki jest równy wówczas 1/20k = 0.00005. Teraz dzielimy obie wartości i dostajemy 0.05 / 0.00005 = 1000.
Teraz już wiemy ile próbek będziemy analizować przy założeniach że próbkowanie to 20kHz a odświeżanie słupka to 20Hz. Obliczenia przedstawione przez mnie są bardziej zrozumiałe (łopatologiczne), choć jak łatwo zauważyć 20kHz / 20Hz = 1k = 1000.
Piszesz, więc teraz pętle, która będzie odczytywała 1000 kolejnych próbek i wybierała tę o największej wartości. Można to oczywiście zrobić w jednej pętli. Po pętli już wiesz jaka była najwyższa wartość. Teraz możesz tę wartość zamienić na ilość diod, które powinny się zapalić np.
załóżmy, że pętla może zwrócić wartość z przedziału. 0-1023 (10 bitów). Pominę tutaj kwestię dolnej i górnej połówki sygnału (to zrobisz sobie sam podczas prób). Zakładamy po drugie, że diod jest 50. Teraz mamy zależość wartości od ilości diod:
y = wartość * 50 / 1023, gdzie
wartość - wartość maksymalna z pętli
y - ilość diod do zapalenia