Maken van lichten reageren op Audio (4 / 5 stap)

Stap 4: Vereenvoudigde versie en aan de slag


Het meest complexe deel van de hardware is de audio input fase. Als u niet gebruiken van een stereo-installatie, maar een mono-signaal wilt, kunt u één van de input etappes gewoon knippen. Als u wilt dat het nog eenvoudiger kun je gewoon een heel simpel input etappe, die een hoge weerstand en alleen een filter heeft. Moet u wellicht een andere versterker stadium toevoegen aan dit.
Als u van een Arduino gebruikmaakt is het niet mogelijk om te kopiëren en plakken van de verstrekte broncode, aangezien de Arduino Board is niet gebaseerd op een atxmega-controller.

Als u gebruik wilt maken dit project met een andere controller, moet u zelf de code aan te passen. De volgende stappen moeten geven u een idee over wat te doen:

Het eerste wat dat je hoeft te doen is genieten van het audiosignaal. Wij moeten 128 gegevenspunten en wilt een samplefrequentie van ongeveer 32kHz. De eenvoudigste manier om dit te doen is om een lus, die leest de ADC en vervolgens wordt onderbroken voor over 30µs. De vertraging van de 30µs in combinatie met de tijd die nodig is om de gegevens te lezen moet een ruwweg nauwkeurige samplefrequentie geeft.

De volgende stap is de FFT. Sommige aardige vent zet de FFT-bibliotheek gebruikt in dit project in een handige bibliotheek voor de Arduino. Dit komt met een voorbeeld, waarin wordt uitgelegd hoe u het gebruikt. Het voorbeeld maakt gebruik van de gratis-run modus van de ADC, die helaas niet uitgevoerd vanaf 30kHz. Dit is niet noodzakelijk een slechte zaak, maar uw frequentiebereik zullen worden getroffen en uw FFT emmers heeft een verschillende resolutie. U kunt natuurlijk ook het officiële project van de FFT-bibliotheek.

Als u wilt gewoon een beat detectie implementeren Neem een kijkje op de uitleg in het deel van de software of de code van mijn project. Dit is elementaire wiskunde en kunt kopiëren/plakken.

Wat gebeurt er nadat dat is je fantasie. De meest gebruikte methoden om het maken van zoete animaties, kleur vervagen of wat u wilt doen, zijn deze:

  • doel/werkelijke waarde: de doelwaarde is afgeleid van de FFT-gegevens. De werkelijke waarde verandert langzaam totdat de streefwaarde wordt bereikt.
  • zwevend gemiddelde: U weet de laatste X-waarden. Deze waarden optellen en verdeel ze door X. Dit geeft u de voortschrijdend gemiddelde
  • gewogen zwevend gemiddelde: dit is een beetje zoals het voortschrijdend gemiddelde, maar nieuwere waarden hebben een hogere invloed op het resultaat dan oudere waarden. waarde = ((waarde * (NUM - 1)) + nieuwe_waarde) / Numeri NUM kan vrij worden gekozen; Hoger betekent dat het past zich langzamer/vloeiender

Deze methoden kunnen u vloeiende uitziende animaties maken. Als u rechtstreeks de gegevens van de FFT verschijnt mogelijk het plotselinge sprongen in bijvoorbeeld uw kleur vervagen. Ik gebruik de werkelijke/waarde doelsysteem en het gewogen gemiddelde van de meeste van de tijd te verplaatsen.

Een heel eenvoudig voorbeeld over het gebruik van deze formules is deze coderegel: kleur = ((color * 15) + fft_bucket_h_l) / 16;
Het berekent een gewogen voortschrijdend gemiddelde van de FFT emmer met de hoogste waarde op het linker kanaal. Deze waarde kan vervolgens worden gebruikt om de kleur van een RGB-LED te stellen. Gefeliciteerd! U zojuist een LED, die verandert van kleur afhankelijk van de meest dominante frequentie.

Op het eerste gezicht alle deze wiskunde zou kunnen kijken overweldigend, maar gelukkig al het harde werk is al gedaan. Als u wat tijd om op uw manier in dit project ziet u dat u kunt maken geweldige effecten met sommige eenvoudige wiskunde die je op school hebt geleerd.

Belangrijke gegevens voor u te gebruiken
De FFT-gegevens toegankelijk zijn via de fft-klasse als volgt:

fft_result_t * fft_left = fft.getLeft(); voor kanaal 1

fft_result_t * fft_right = fft.getRight(); voor kanaal 2

De structuur van het resultaat ziet er zo uit:

typedef struct {}

uint16_t spectrum [FFT_N / 2];

uint16_t adc_min, adc_max;

} fft_result_t;

spectrum is een matrix van 64-elementen, die in het bezit van het resultaat uit de FFT. adc_min en adc_max zijn de minimale en maximale waarden van het signaal.

Binnen de animation.cpp, waar u uw animatie-code moet plaatsen hebt u toegang tot de volgende globale variabelen

uint16_t bands_l [ANIM_BAND_NUM], bands_r [ANIM_BAND_NUM]; arrays die de gegevens van de 7 houden condensed

banden uint16_t amplitude_l, amplitude_r; amplitude, afgeleid door de waarden adc_min en adc_max

uint8_t beats, bpm_h, bpm_m, bpm_l, bpm_all; beats bevat een bitmasker, waarin u kunt controleren of er een beat in een specifieke band was. De andere variabele geven u de beats per minuut voor de hoge, mid, low en alle (eventuele) band

uint8_t fft_bucket_h_l, fft_bucket_h_r, fft_bucket_l_l, fft_bucket_l_r; cijfer (0... 63) van de FFT verwijst emmer met de hoogste en laagste waarden voor alle variabelen _l naar het linker kanaal en _r naar rechts.

Gerelateerde Artikelen

Hoe te maken van led lichten uit auto elektrische werken

Hoe te maken van led lichten uit auto elektrische werken

elk jaar ik een krans op mijn sprintervan.  Heb ik besloten aan het eind van laatste XMAS te kopen van een kunststof krans en postuur uiterlijk te zin op wire led lights in mijn sprinter elektrisch systeem, zodat wanneer de frontschijnwerpers komen o
Maken van een microfoon isolatie doos voor hoge kwaliteit Audio-opname

Maken van een microfoon isolatie doos voor hoge kwaliteit Audio-opname

Dit project is een die ik hard nodig voor mezelf. U zou moeten opmerken dat een grote verbetering in de kwaliteit van mijn opname van nu af aan!Ik verhuisde naar een nieuw huis over een maand geleden nu dat is waarom u zou kunnen een nieuw landschap
Maken van ApplePi, samenvoegen een Vintage Macintosh Plus met de Raspberry Pi

Maken van ApplePi, samenvoegen een Vintage Macintosh Plus met de Raspberry Pi

Als een kind van de late 70 's en de lagere schoolstudent uit de 80 's, heb ik altijd gefascineerd door deze kleine beige en platina dozen en hun kleine schermen van B & W. Een paar popped opwaarts naast de Commodore huisdieren en de Apple] [e's in o
Gebouw kleine Robots: Maken van één kubieke Inch Micro-Sumo Robots en kleinere

Gebouw kleine Robots: Maken van één kubieke Inch Micro-Sumo Robots en kleinere

hier zijn enkele details op het opbouwen van uiterst kleine robots en circuits. Dit instructable zal ook dekking enkele eenvoudige tips en technieken die nuttig zijn bij het opbouwen van robots van elke omvang.Voor mij is een van de grote uitdagingen
Maken van de Arduino aangedreven LED growbox

Maken van de Arduino aangedreven LED growbox

een tijdje geleden merkte ik veel mensen met behulp van de Arduino controller voor allerlei soorten home projects home projecten. Ik wist dat ik gewoon * had * om een te hebben.Nadat ik via de mail ontvangen en het verkennen van de mogelijkheden, het
Het bouwen van de BandBlinker - 120v audio trigger op de goedkoperehotels.

Het bouwen van de BandBlinker - 120v audio trigger op de goedkoperehotels.

Om te helpen complimenten van de BandBlinder, een goedkoop maar goed werkende fase licht kit voor een vriend de band, heb ik ook de BandBlinker, een audio-trigger voor de lichte kit gemaakt met goedkope, gemakkelijk om onderdelen te vinden.Stap 1: Ve
Maken van licht van magnetisme: elektromagnetische inductie & de Bedini Machine

Maken van licht van magnetisme: elektromagnetische inductie & de Bedini Machine

grote ontdekkingen soms door meer dan één persoon tegelijk worden gemaakt. Michael Faraday en Joseph Henry ontdekt de beginselen van elektromagnetische inductie veel tegelijk. Faraday publiceerde de resultaten van zijn werk in 1831, voor Henry, en du
Maken van een paar Audiostrobe-compatibele LED glazen voor gebruik met brainwave entrainment software

Maken van een paar Audiostrobe-compatibele LED glazen voor gebruik met brainwave entrainment software

Audiostrobe glazen worden gebruikt in combinatie met licht en geluid machines, evenals sommige brainwave entrainment software. De glazen hebben LEDs gebouwd in welke puls in synchronisatie met geluid, meestal binaural beats of isochronic tonen. Het l
Laten we het maken van een game controller!

Laten we het maken van een game controller!

Ik hou van vliegende spelen, maar het voelt alsof er nooit genoeg knoppen op mijn joystick.Dit instructable zal u tonen hoe te bouwen uw eigen panel schakelaar in geen tijd.Het zal werken met een spel en de computer die ondersteuning biedt voor een j
Een eenvoudig protocol voor het maken van ijzer (II, III) oxide (magnesiet)

Een eenvoudig protocol voor het maken van ijzer (II, III) oxide (magnesiet)

Hallo.In mijn eerste Instructable, 'm I gonna beschrijven de synthese van ijzer (II, III) oxide (magnesiet).Ijzer (II, III) oxide is een verbinding die Ferrimagnetisme vertoont. Het heeft vele toepassingen en veel van hen zijn beschreven op het Inter
Maken van een iglo van de blok ijs

Maken van een iglo van de blok ijs

We leven in upstate NY, wat betekent dat we zijn gewend aan koude en besneeuwde winters. Deze winter, is echter in tegenstelling tot alle in de recente geschiedenis geweest. We hebben meer dan een maand waar bijna elke dag bracht Sub-Zero temperature
Maken van een Contact microfoon

Maken van een Contact microfoon

Een contact microfoon is een soort microfoon die trillingen van contact met objecten pikt, in tegenstelling de het meer gangbare type microfoon die drukgolven in lucht pikt. Hier is een demo van een contact microfoon aangesloten op een wekker, samen
Maken van een oplaadbare 2 volt aluminium/Titanium Ion accu

Maken van een oplaadbare 2 volt aluminium/Titanium Ion accu

Zie veiligheid opmerkingen hieronder. Dit is niet een te bouwen voor de timide. Alleen bouwen op een goed geventileerde plaats.Na verscheidene jaren van verschillende experimenten kwam ik op een werkbare batterij chemie die licht, veiliger dan lood-e
De wetenschap van het maken van zeep in een Lab

De wetenschap van het maken van zeep in een Lab

Maken van zeep lijkt er niet iets wat je in een laboratorium doen zou, maar het is eigenlijk meer wetenschappelijk dan je zou denken. Verzeping is de zeep besluitvormingsproces, die gebruik maakt van de basisoplossing loog en de verschillende soorten