RO EN

Indicator de nivel sonor cu 12 LED-uri

29.01.2026

Proiect: Vizualizator de sunet cu 12 LED-uri și Arduino

Acest proiect este ideal pentru cei care vor să combine sunetul cu efecte vizuale simple, dar de impact. Vom construi un sistem care folosește 12 LED-uri individuale ce se aprind progresiv în funcție de intensitatea sunetului captat de un modul microfon.

Pe măsură ce sunetul din jur devine mai puternic, Arduino aprinde tot mai multe LED-uri, obținând un efect asemănător cu cel al unui egalizator audio. Sensibilitatea poate fi reglată ușor cu ajutorul unui potențiometru, astfel încât proiectul să funcționeze bine atât într-o cameră liniștită, cât și într-un mediu mai zgomotos.

Componente necesare

  • Placă Arduino Uno (sau alt microcontroller compatibil)

  • Modul microfon (cu ieșire analogică)

  • Potențiometru (10kΩ recomandat)

  • 12 LED-uri (culori la alegere)

  • 12 rezistori de 220Ω

  • Fire de legătură (jumper wires)

  • Breadboard

Conexiuni

Modul microfon

  • VCC → 5V Arduino

  • GND → GND Arduino

  • OUT → A0

Potențiometru

  • Un pin exterior → 5V

  • Celălalt pin exterior → GND

  • Pinul din mijloc → A1

LED-uri

Cele 12 LED-uri sunt conectate pe pinii digitali 2–13, fiecare printr-un rezistor de 220Ω către GND:

  • LED 1 → D2

  • LED 2 → D3

  • LED 3 → D4

  • LED 4 → D5

  • LED 5 → D6

  • LED 6 → D7

  • LED 7 → D8

  • LED 8 → D9

  • LED 9 → D10

  • LED 10 → D11

  • LED 11 → D12

  • LED 12 → D13

Anodul LED-ului se leagă la pinul Arduino, iar catodul prin rezistor la GND.

Cum funcționează proiectul

Arduino citește semnalul analogic de la modulul microfon și îl filtrează pentru a reduce fluctuațiile bruște. Valoarea rezultată este comparată cu pragul setat de potențiometru, apoi este mapată pe un interval de la 0 la 12.

În funcție de acest nivel, LED-urile se aprind sau se sting progresiv, oferind un efect vizual fluent și plăcut.

Cod:

#define MIC_PIN A0

#define POT_PIN A1

int greenLeds[3] = {2, 3, 4};

int yellowLeds[3] = {5, 6, 7};

int redLeds[3] = {8, 9, 10};

int blueLeds[3] = {11, 12, 13};

int micValue, potValue;

int currentLevel = 0;

void setup() {

Serial.begin(9600);

for (int i = 0; i < 3; i++) {

pinMode(greenLeds[i], OUTPUT);

pinMode(yellowLeds[i], OUTPUT);

pinMode(redLeds[i], OUTPUT);

pinMode(blueLeds[i], OUTPUT);

}

}

int readMicFiltered() {

long sum = 0;

for (int i = 0; i < 100; i++) {

sum += analogRead(MIC_PIN);

}

return sum / 100;

}

void setBarGraph(int targetLevel) {

int leds[12] = {2,3,4,5,6,7,8,9,10,11,12,13};

while (currentLevel < targetLevel) {

digitalWrite(leds[currentLevel], HIGH);

currentLevel++;

delay(50);

}

while (currentLevel > targetLevel) {

currentLevel--;

digitalWrite(leds[currentLevel], LOW);

delay(50);

}

}

void loop() {

micValue = readMicFiltered();

potValue = analogRead(POT_PIN);

int level = map(micValue, 0, potValue, 0, 12);

level = constrain(level, 0, 12);

setBarGraph(level);

}