Göra lampor reagera på ljud (4 / 5 steg)

Steg 4: Förenklad Version och komma igång



Den mest komplexa delen av maskinvaran är audio input scenen. Om du inte vill använda en stereo, men en mono signal, kan du helt enkelt klippa en av de ingående stegen. Om du vill det ännu enklare kan du bara en mycket enkel input etapp, som har en hög motståndskraft och endast ett filter. Du kan behöva lägga till en annan förstärkare scenen i detta.
Om du använder en Arduino är det inte möjligt att kopiera och klistra in den medföljande källkoden, eftersom Arduino styrelsen inte är baserad på en atxmega domänkontrollant.

Om du vill använda detta projekt med en annan styrenhet, måste du anpassa koden själv. Följande steg bör ge dig en idé om vad man ska göra:

Det första du behöver göra är att prova ljudsignalen. Vi behöver 128 datapunkter och vill ha en samplingsfrekvens på ca 32kHz. Det enklaste sättet att göra detta är att göra en loop, som läser ADC och sedan pausar för om 30µs. 30µs förseningen i kombination med den tid som behövs för att läsa data bör ge en ungefär exakt samplingsfrekvens.

Nästa steg är FFTEN. En trevlig kille sätta FFT biblioteket används i detta projekt i ett bekvämt bibliotek för Arduino. Detta kommer med ett exempel, som förklarar hur du använder den. Exemplet använder gratis-run funktionsläget av ADC, som tyvärr inte fungerar på 30kHz. Detta är inte nödvändigtvis en dålig sak, men dina frekvensområde kommer att påverkas och din FFT hinkar har en annan upplösning. Du kan naturligtvis också kontrollera officiella projektet av FFT biblioteket.

Om du vill genomföra en slå upptäckt bara ta en titt på förklaringen i programvara del eller koden för mitt projekt. Detta är grundläggande matematik och kan kopiera/klistras.

Vad händer efter det är du fantasi. De mest använda metoderna för att göra söta animationer, färg bleknar eller vad du vill göra är dessa:

  • mål/faktiska värde: målvärdet är härrör från FFT data. Det faktiska värdet ändras långsamt tills den når målvärdet.
  • glidande medelvärde: du kommer ihåg sist X-värden. Summera dessa värden och dela dem med X. Detta ger dig glidande medelvärde
  • viktade glidande medelvärde: detta är lite som glidande medelvärde, men nyare värden har en högre inflytande på resultatet än äldre värden. värde = ((värde * (NUM - 1)) + new_value) / NUM. NUM kan vara fritt valt; Högre betyder det anpassar sig långsammare/mjukare

Dessa metoder kan du göra flytande snygga animationer. Om du tar direkt data från FFTEN du kanske ser plötsligt hoppar i t.ex. din färg bleknar. Jag använder den faktiska värde/målsystemet och vägda flyttanden genomsnitt för det mesta.

Ett mycket enkelt exempel på hur man använder denna formler är denna kodrad: färg = ((color * 15) + fft_bucket_h_l) / 16;
Beräknas ett viktat glidande medelvärde för FFT hinken med det högsta värdet på den vänstra kanalen. Det här värdet kan sedan användas för att ange färg för en RGB LED. Grattis! Du har precis gjort en LED, som ändrar dess färg beroende på den mest dominerande frekvensen.

Vid första anblicken denna matematik kan se överväldigande, men lyckligtvis allt hårt arbete är redan gjort. Om du spenderar lite tid att arbeta dig in i detta projekt ser du att du kan göra awesome effekter med några enkla matematiska du lärt dig i skolan.

Viktiga data som du kan använda
FFT data kan nås via klassen fft såhär:

fft_result_t * fft_left = fft.getLeft(); för kanal 1

fft_result_t * fft_right = fft.getRight(); för kanal 2

Resultatet strukturen ser ut så här:

TypeDef struct {

uint16_t spektrum [FFT_N / 2];

uint16_t adc_min, adc_max;

} fft_result_t;

spektrum är en matris av 64 beståndsdelar, som håller resultatet från FFTEN. adc_min och adc_max är de minsta och största värdena av signalen.

Inom animation.cpp, där du ska placera din animering kod har du tillgång till följande globala variabler

uint16_t bands_l [ANIM_BAND_NUM], bands_r [ANIM_BAND_NUM]; matriser som innehar data av 7 i sammandrag

band uint16_t amplitude_l, amplitude_r; amplitud, härlett av värdena adc_min och adc_max

uint8_t beats, bpm_h, bpm_m, bpm_l, bpm_all; beats innehåller en bitmask, som låter dig kontrollera om det fanns ett beat i ett specifikt band. Den andra variabeln ger dig taktslagen per minut för hög, medel, låg och alla (alla) band

uint8_t fft_bucket_h_l, fft_bucket_h_r, fft_bucket_l_l, fft_bucket_l_r; nummer (0... 63) av FFTEN hänvisar hink med högsta och lägsta värdet för alla variabler _l till vänster kanal och Triton till höger.

Se Steg
Relaterade Ämnen

Arduino/behandling: Rörlig grafik och lampor reagera på ljud

tog en stund för att fånga vad jag ville, men det var det värt....

Enkla FC-04 ljud Sensor Demo

FC-04 ljud Sensormodul, enligt min mening, är en mycket känslig ljud upptäckt modul för priset. Även om denna sensor inte ger någon möjlighet att identifiera specifika ljud eller frekvensen av ett ljud den gör vad den ska - upptäcker den ljud.Nyckeln...

Tutu med inbyggda lysdioder

Jag behövde Visa mina elever ett enkelt sätt att bädda in lysdioder på en bit tyg, så jag gjorde en tutu som lyser upp. Framtida versioner kommer att reagera på ljud, ljus eller acceleration. Men för just nu, det slå bara på eller stänga av beroende...

Ruby Red LED Plushie Mod

Aww, du får mig att rodna. Skulle inte det vara häftigt att animera dina Adafruit krets lekplats elektronisk komponent plushie? Jag har Ruby Red LED plushie. Jag ville att det skulle lysa upp och har det reagera på ljud. Här är en lätt mod att få det...

Necomimi Arduino katt öron

de är så dang cute. Om du någonsin har sett cool promo för Necomimi Neurowear wearable uppsättning katt öron som svarar på hjärnvågor, vill du vill ha en alltför. Men det verkar de kanske vaporware eftersom den inte har inte förverkligades på marknad...

Croccolino!!! Smart sällskapsdjur mataren (förbättrat)

Lagt till kod förbättringar och kontroller. Nu kan mataren reagera med ljud när pet är i närheten.Maaaaaaaaaaaaaaaaaoooooooowwwwwwww!Har du någonsin varit utanför ditt hem för ett par dagar? Har du någon som kan mata din sällskapsdjur under din frånv...

Mini trä Arcade Machine skåp

Min son har arbetat på spel ett tag nu och vi ville ha ett sätt att visa dem på en hacka natten.Jag hade köpt en massa 10 tums VGA pekskärm nyss för vissa bil projekt var jag arbetar på.Jag hade 4 monitorerna kvar så jag gjorde 4 skåp.Jag gick till g...

DIY Intelligent Autonomus Robot (elektroniska Pet) /w Arduino

Jag älskar alla slags robotar speciellt autonomus eller intelligenta robotar, som har lite mer intelligens än att undvika ett hinder. Så jag bestämde mig att jag ska bygga min egen billig intelligent robot som har en bygga i kameran, avstånd sensorer...

Beating Heart

Publicerad den 3-Jan-2016denna instruktion skulle visa hur du kan göra din egen musik light box att reagera med ljud.Krets drift.1-vi har makt leverans avsnitt, som tar kraften från en USB-port och lagra den i batteriet.2-vi har växeln som antingen t...

LED puls Sensor (PPG) för Arduino

Inom detta Instructable kommer jag visa dig, hur man genomför en enkel PPG (photoplethysmogram) sensor för arduino. Denna enhet använder infrarött ljus för att mäta du puls. Du kanske känner denna teknik från fingertoppen puls sensorer i sjukhus.Denn...

SBOT återvunnet roboten

SBOT är en multifunktionell robot av återvunnet material. Han rör sig på kommando. Han visar dessutom tiden i en bifogad ledde matrisen väckarklocka. Han kan laddas med hjälp av solpaneler, vindkraftverk och andra källor av ren energi. SBOT kommer at...

Spionera anordning för Light Switch

vi ska göra en anordning som kan stänga av lampor helt utan ljud, perfekt för en spion eller en hemlig agent. Detta verktyg är mycket lätt att göra och är mycket användbar.Steg 1: Skaffa material Din endast kommer att behöva lite skum, ca 1 tum tjock...

Bugg-fånga spindeln i nätet, del 2

detta projekt är ett samarbete mellan idesigner4 och bhasudha(me), elever i höst2012 naturligtvis saker att tänka (CSCI 7000) vid University of Colorado - Boulder.Historien om vår bugg-fånga spider automat går så här: en jätte onda spindel bosatti en...

Suave-ser hjärnan maskin

Mitch Altmans hjärnan maskin är en gammal favorit maker. Jag kom över det tillbaka i Makezine volym 10 och trodde inte att mycket av det, men när jag läste frågan förra månaden det slog mig som en intressant enhet och ett roligt experiment. Det enda...

Komma igång med PICAXE

Hej. Idag kommer du att lära hur man använder PICAXE. Hurra!Så vad är PICAXE? PICAXE är i huvudsak en liten bit av metall och plast kan du göra saker. Enkelt nog? Du berätta för styrelsen att skicka och ta emot olika elektriska pulser, som i sin tur...

MJRoBot jag - enkla steg för att bygga en autonom robot.

För några månader sedan avslutade jag min första online elektronisk kurs. Det var en ny upplevelse men det väckte i mig en gammal passion mycket sömnig, elektronik!Kursen var: EE40LX: elektroniska gränssnitt, genom EDX plattform och administreras av...

Lilla Altoid Tin Robot med personlighet

jag älskar robotar. Normalt de som jag bygger är ganska stora och inte skulle passa i fickan, men för en omväxling jag beslutat jag skulle prova något litet och roligt! Denna robot är just detta, och i själva verket passar inuti en altoids tin. Det ä...

LED Spacehelmet

Jag är på inget sätt en ingenjör eller crafty, jag är en geolog med en fascination i rymden. Jag gjorde detta utrymme-hjälm och en kopia för min man som en EDC kostym.Material som behövs:14 i. Klar akryl Globe - med 5,25 in. Halsband öppningNASA Seal...

Lösenord beskyddat dörrlås med arduino

Projektet består av Arduino mega, en motor, en knappsats, en Summer, lcd, potentiella mätaren, röda led och gröna ledde. Efter uppladdning den hex filen, lcd startar.Steg 1: Välkomsthälsning uppmanas du att ange lösenordetI välkomstfönstret uppmanar...