Trustpilot -         •           FRI FRAGT VED KØB OVER 700 KR.         •           Skriv til os         •           30 dages returret

Lydreaktiv LED-bar med mikrofon og NeoPixels

Illustration: Lydreaktiv LED-bar med mikrofon og NeoPixels

Her bygger du et lille VU-meter: jo højere lyd, jo flere lysdioder tænder, fra grøn over gul til rød. Baren reagerer på musik, klap og stemmer og kan stå ved højttaleren, i øvelokalet eller på skrivebordet. Det er også en god måde at lære, hvordan man måler et analogt signal.

Det skal du bruge

Kræver lidt lodning.

283,80 kr.Samlet, inkl. moms

Har du allerede nogle af delene? Fjern fluebenet.

Du skal også bruge en loddekolbe, loddetin, en lille tang til at afisolere og et USB-C-kabel, du har i forvejen.

Sådan virker det

MAX9814-modulet er en mikrofon med indbygget forstærker. Den har automatisk forstærkning (AGC), så den kan klare både stille tale og høj musik. Udgangen er en spænding, der svinger op og ned omkring et hvilepunkt i takt med lyden. QT Py’en måler den på en analog indgang mange gange i træk.

Lydstyrken finder du ved at gemme den laveste og den højeste måling over et kort vindue, her 50 ms. Forskellen, peak-to-peak, er stor ved høj lyd og lille ved stilhed. Koden omsætter forskellen til 0-8 lysdioder på NeoPixel-stick’en, som kun skal bruge ét datasignal. Fordi AGC’en skruer ned for kraftig lyd, måler baren ikke præcis lydstyrke, men den viser rytme og dynamik fint.

Sådan bygger du det

  1. Lod de løse stifter på QT Py’en. Så kan du sætte hunenderne af jumperledningerne direkte på.
  2. Mikrofonmodulet leveres med en løs stiftliste, men her er det nemmest at lodde ledninger direkte i hullerne. Klip hanenden af tre jumperledninger, afisolér, og lod dem på VDD (eller VCC), GND og OUT. Lad de andre ben være fri, så kører modulet med standardindstillingerne.
  3. Gør det samme med tre ledninger på NeoPixel-stick’ens indgangsende: 5V, GND og DIN. Brug ikke enden mærket DOUT.
  4. Forbind til QT Py’en: mikrofonens VDD til 3V og OUT til A0, stick’ens 5V til 5V og DIN til A3. QT Py’en har kun ét GND-ben, så lod de to stelledninger sammen til én, før den sættes på GND.
  5. I Arduino IDE tilføjer du RP2040-understøttelse via Boards Manager (Earle Philhowers kerne) og vælger Adafruit QT Py RP2040. Installér Adafruit NeoPixel via Library Manager. Dukker kortet ikke op første gang, så hold BOOT-knappen inde, mens du sætter kablet i.
  6. Upload koden, og åbn Serial Monitor. Se, hvilke tal du får ved stilhed og ved høj musik, og ret 20 og 600 i koden til dit rum.

Hold lysstyrken lav, når baren kører fra USB. Otte LED’er på fuld hvid trækker mere strøm, end en computerport bør levere. Foretrækker du Python, kan det samme laves i CircuitPython.

Koden

#include <Adafruit_NeoPixel.h>

const int MIC_PIN = A0;   // MAX9814 OUT
const int LED_PIN = A3;   // NeoPixel-stick'ens DIN
const int NUM_LEDS = 8;

Adafruit_NeoPixel stick(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  Serial.begin(115200);
  stick.begin();
  stick.setBrightness(40);  // hold lysstyrken nede på USB
}

void loop() {
  // Find laveste og højeste måling over 50 ms
  unsigned long start = millis();
  int lo = 1023, hi = 0;
  while (millis() - start < 50) {
    int v = analogRead(MIC_PIN);
    if (v < lo) lo = v;
    if (v > hi) hi = v;
  }
  int amp = hi - lo;  // peak-to-peak: stor ved høj lyd
  Serial.println(amp);  // brug tallet til at justere 20 og 600

  int level = map(constrain(amp, 20, 600), 20, 600, 0, NUM_LEDS);

  for (int i = 0; i < NUM_LEDS; i++) {
    uint32_t farve = 0;  // slukket
    if (i < level) {
      if (i < 4) farve = stick.Color(0, 255, 0);         // grøn
      else if (i < 6) farve = stick.Color(255, 160, 0); // gul
      else farve = stick.Color(255, 0, 0);               // rød
    }
    stick.setPixelColor(i, farve);
  }
  stick.show();
}

Byg videre

  • Lad baren vokse fra midten og ud til begge sider.
  • Lad den øverste lysdiode blive hængende et øjeblik, som på et rigtigt VU-meter.
  • Kæd flere stick’s sammen fra DOUT til DIN for en længere bar, og giv dem en separat 5 V-forsyning.
  • Forbind mikrofonens Gain-ben efter databladet, hvis baren er for følsom eller for doven.

Sidder du fast? Vi hjælper gratis med kode og opsætning. Skriv til [email protected].

Share this post