Obsah:
- Krok 1: Vytvořte základnu
- Krok 2: Příprava prstenů Neopixelu
- Krok 3: Zapojení
- Krok 4: Kód
- Krok 7: Zapojení mikrofonu
Video: Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Takže můj syn Doon si všiml velmi cool párty světla vyrobeného ze starých koksových lahví a mazlavého vnitřku Glow Sticks a zeptal se, jestli bychom mohli udělat jeden pro jeho nadcházející školní zkoušky jsou u konce Blowout PartAYYY !!! Říkám jistě, ale nechtěli byste raději nějaké ty spiffy prsteny Adafruit Neopixel, o kterých jsme četli … Věnoval mi prázdný pohled. Protože faktem je, že neví, o čem mluvím, ale táta si všiml příležitosti hrát s těmi Neopixelovými prsteny, o kterých ON četl, a my všichni víme jeden z top 10 důvodů, proč geekové tátové plodí, že mají výmluva na hraní se skvělými gadgety, o kterých říkají, že jsou všichni pro své děti.
Jedná se o super jednoduchý projekt, který vypadá opravdu skvěle. Postavili jsme naše 3 staré koksové láhve, dřevěnou desku a držák na hřiště - věci ležící ve sklepě - v kombinaci s Arduinem (v našem případě Leonardo, ale jakákoli deska Genuino to zvládne!) A třemi kroužky Neopixel. Objednal jsem si 9-LED prsten, ale skončil jsem s 12-LED prstenem za stejnou cenu. Což bylo milé, ale znamenalo to překopání jamek-12-LED kroužky jsou široké 35 mm, na rozdíl od 23 mm. Co budete potřebovat:
- Deska Genuino/Arduino (Použili jsme Leonardo, ale téměř každá deska to zvládne)
- 3 prstence Neopixel (každý po 12 LED): získejte je od Adafruit a podpořte ty jemné lidi
- 1000 µf 6,3 V nebo lepší kondenzátor
- Odpor 300-500 ohmů
- Dřevěný talíř nebo čtverec šrotu nebo cokoli, do čeho můžete vložit neopixely a posadit koksové lahve nahoře
- Nějaká forma držáku na desku - držák na sloupek na hřiště pro nás fungoval skvěle
- 9v stěnová bradavice
- 40mm vrták
- Šrouby, matice, podložky, distanční podložky
- Drát z pevného jádra
- Páječka a pájka
- Prkénko
- Plastové pouzdro pro Arduino. Můžete jít ven a koupit si opravdu pěkné, perfektně padnoucí plastové pouzdro vyrobené z milion let staré ropy vyvrtané ze země v nějakém křehkém prostředí a vyrobené na druhé straně planety a odeslané v kontejneru do skladu poblíž vás se všemi porty vyřezané v dokonalém souladu a nechat je doručit k vašim dveřím dodávkou chrlící oxid uhličitý do atmosféry. Nebo můžete udělat to, co jsem udělal já, a použít starou vyřazenou plastovou krabičku … v tomto případě madagaskarskou krabičku s pomocníkem ležící v lékárničce… a vyvrtat do ní několik děr. Zde přednáška končí. UDĚLEJME…
Krok 1: Vytvořte základnu
Můžete improvizovat svou základnu z jakéhokoli harampádí, které máte ve svém vlastním suterénu, nebo dokonce použít dřevěnou krabici nebo cokoli, co skryje vaši elektroniku.
Nejprve jsme vyvrtali tři otvory, rovnoměrně rozmístěné na dřevěné desce, dostatečně velké, aby do nich mohly zapadnout prsteny Neopixel. Na obrázku jsou otvory vrtané vrtákem s rýčem. Nakonec jsme kvůli větší velikosti 12-LED prstenců museli vyvrtat otvory vrtákem. To znamenalo projít celou deskou a místo toho, abych prsteny pěkně přitiskl do jejich jemně vytvořených malých 2 mm hlubokých jamek se středovým otvorem pro úhledný běh drátu, skončil jsem tím, že jsem zajistil prsteny… ehm… lepicí páskou přes dno talíře. Nesuď. V mém návrhu stejně nemůžete vidět dno talíře. A když je zapnuto, je tma. A kromě toho - co je špatného na lepicí pásce?
Potřeboval jsem vůli mezi deskou a držákem pro prkénko na dně desky a jednu součást - kondenzátor, a pro vedení drátu, které by musely jít z prkénka do Arduina, které jsem plánoval dát do držáku. Takže jsem na hřídele šroubů nasadil sadu provizorních rozpěr, aby byla zajištěna dostatečná vůle - asi 3 cm, výška prkénka a trochu, abyste nerozdrtili kabeláž. Použil jsem dva dřevěné kotevní šrouby na roh, protože měly správnou výšku a ležely v zásuvce pro muže … ta krabice uvolněných šroubů, šroubů, hřebíků, rezavých řetězových článků, hadicových spojek, starých mincí, nečekaně ostrých předmětů a všeho možného bitů a bobů, které vám mohou magicky ušetřit výlet do železářství tím, že nabídnou, ne -li přesně to, co potřebujete, něco, co bude fungovat dobře.
Šťastná nehoda ohledně příspěvku na hřiště, který jsem našel ve sklepě, už měl díry protékající deskou. Není třeba vrtat železo! Základna měla čtyři otvory pro šrouby a do dřevěné desky jsme vyvrtali čtyři protipotopené otvory, aby odpovídaly.
Celou věc jsme pak nastříkali na Gothic Black.
Krok 2: Příprava prstenů Neopixelu
Na své neopixelové prstence budete muset připájet vodiče: pro všechny datový vstup, pro dva datový výstupní a pro každý napájení a uzemnění. Ať už si myslíte, že potřebujete jakoukoli délku, přidejte ji. Přebytečný drát můžete vždy odříznout, příliš krátký natáhnout nemůžete. A uvědomte si varování od Adafruit:
Při pájení vodičů k těmto kroužkům musíte být velmi ostražití ohledně pájecích kuliček a zkratů. Rozteč mezi součástmi je velmi těsná! Často je nejjednodušší vložit drát zepředu a pájet na zadní stranu.
Přál bych si, abych si to přečetl, než jsem připájel dopředu. Podařilo se mi nespálit žádnou ze svých LED, ale okraj jedné jsem spálil tak, že jsem se potil, dokud jsem nezapnul. Také, kdybych si přečetl jemný manuál, přečetl bych si také varování, aby se na LED diodu nedal aligátorový klip. Nechte mé blízké vraky být vaším majákem.
Neopixel kroužky daisy-chain, což znamená, že můžete ovládat všechny jejich LED současně z Arduina připojením vodiče z OUT jednoho prstence do IN druhého. Každý prsten také potřebuje napájecí a zemnící vodiče.
Krok 3: Zapojení
Zapojte jej, jak je popsáno výše-Fritzing výše-pin 6 Arduina přenese data do prvního kruhu, výstup dat z tohoto kruhu přejde do vstupu dat dalšího, výstup dat z tohoto kruhu do Data z posledního zvonění. Nepotřebujete datový výstupní kabel posledního prstenu.
Kapacita 1 000 µf přechází mezi kladnými a zápornými kolejnicemi prkénka. Tato čepice chrání prsteny před napětím a je doporučena v sekci osvědčených postupů Adafruit NeoPixel Uberguide. Odpor na Data v prvním neopixelu doporučuje také Adafruit-je to 1K ve Fritzing, ale doporučený odpor je 300-500 ohmů.
V mé stavbě jsem vedl dráty z Neopixelů přes zadní část desky na prkénko upevněné uprostřed. Tímto způsobem stačí k základní jednotce vést tři dlouhé vodiče: napájení, uzemnění a data. Udělal jsem tyto dráty superdlouhé-v základně je spousta úložného prostoru a je pohodlné mít možnost vytáhnout desku ven pro přeprogramování.
Krok 4: Kód
"loading =" líný "zmínil, že můj syn chtěl jeho verzi reagující na hudbu. Trvalo to do jeho 18. narozenin, než se k tomu dostal, ale je to tady!
Další vybavení:
1 jednopólový přepínač s dvojitým hodem
Aby správně fungoval, musí mít mikrofon automatické řízení zisku. AGC bude neustále vzorkovat okolní hluk a zvyšovat a snižovat prahovou hodnotu, kterou považuje za pozadí, takže vaše světlo bude reagovat na špičky na tomto pozadí. Mikrofon AdaFruit je brilantní: můžete přejít z tiché místnosti, ve které zvuk jediného hlasu spustí režim plné párty s místností plnou teenagerů a hukotem hudby, a zachytí rytmus hudby. pokuta. Alternativa, nastavitelný zisk mikrofonu, má na desce malý potenciometr, který je neuvěřitelně jemný a chabý. Nepotřebuje mnoho změn v okolním zvuku, aby byla jednotka zbytečná: světla neustále svítí nebo trvale ztmavují. AGC funguje jako kouzlo.
Chtěl jsem možnost použít vířivý testovací vzor nebo hudbu, proto jsem zapojil středový vodič přepínače na VIN a jeden vodič na pin 4 druhý na pin 8 Leonarda. Testováním těchto pinů na HIGH nebo LOW můžeme vědět, ve kterém stavu se přepínač nachází, a podle toho kód pobočky.
Krok 7: Zapojení mikrofonu
Zaveďte mikrofonní vstup přes kondenzátor 1-100 µF do analogového pinu 0. Pokud je váš kondenzátor polarizovaný, výstupní kolík jde na kladnou stranu (zelený vodič).
Díky CodeGirlJP za její rutinu Trinket-Color-by-Sound, kterou jsem upravil níže:
// Zvukově aktivované LED diody s Arduino a NeoPixels
#zahrnout
#define MIC_PIN A0 // Mikrofon je připojen ke kolíku a0 na Leonardu
#define LED_PIN 6 // NeoPixel LED vlákno připojené ke kolíku 6 na Leonardo #define N_PIXELS 36 // počet pixelů v LED vlákně !!!!!! Upravte počet pixelů v nastavení. To je správné pro 3 prsteny Neopixel !!!!!! #define N 100 // Počet vzorků, které je třeba odebrat při každém čteníSamples se nazývá #define fadeDelay 5 // doba zpoždění pro každé množství fade #define noiseLevel 30 // úroveň sklonu průměrného mikrofonního šumu bez zvuku
// Inicializujte proužek NeoPixel s definovanými hodnotami výše:
Proužek Adafruit_NeoPixel = Adafruit_NeoPixel (N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
int vzorky [N]; // úložiště pro sadu kolekce vzorků
int periodFactor = 0; // sledovat počet ms pro výpočet období int t1 = -1; // zjištěny časy sklonu> 100. int T; // perioda mezi časy škálovanými na milisekundy int sklon; // sklon dvou shromážděných datových vzorků bodů byte periodChanged = 0; const int SwitchPinMusic = 4; // Pin pro polohu přepínače citlivost na hudbu const int SwitchPinSwirl = 8; // Pin pro polohu přepínače Testovací vzorek (víření) int MusicbuttonState = 0; // Logická proměnná vypnuto pro citlivost hudby
// Způsob nastavení Arduina
neplatné nastavení () {
strip.begin ();
ledsOff (); zpoždění (500); displayColor (kolo (100)); strip.show (); zpoždění (500); oddWheel (Wheel (100)); strip.show (); zpoždění (500); pinMode (SwitchPinMusic, INPUT); pinMode (SwitchPinSwirl, INPUT); // attachInterrupt (4, Switched, FALLING);
}
// Metoda smyčky Arduino
void loop () {SwirlbuttonState = digitalRead (SwitchPinSwirl); // VYSOKÉ, pokud je přepínač nastaven na Citlivost hudby MusicbuttonState = digitalRead (SwitchPinMusic); // VYSOKÝ, pokud je přepínač nastaven na Testovací vzorek while (SwirlbuttonState == LOW) {readSamples (); // Spusťte rutinu vzorkování hudby SwirlbuttonState = digitalRead (SwitchPinSwirl); // Zkontrolujte, zda byl přepínač změněn} SwirlbuttonState = digitalRead (SwitchPinSwirl); MusicbuttonState = digitalRead (SwitchPinMusic); while (SwirlbuttonState == HIGH) {Dance (); // Spusťte rutinní testovací vzor SwirlbuttonState = digitalRead (SwitchPinSwirl); // Zkontrolujte, zda byl přepínač změněn
}
}
prázdný tanec () {
while (SwirlbuttonState == HIGH) {colorWipe (strip. Color (255, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (proužek. Barva (0, 255, 0), 50); // Zelená SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (proužek. Barva (0, 0, 255), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); //colorWipe(strip. Color(0, 0, 0, 255), 50); // Bílá RGBW // Pošlete divadelní pixelovou honičku v … SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (strip. Color (127, 127, 127), 50); // White SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (strip. Color (127, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (strip. Color (0, 0, 127), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); duha (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); rainbowCycle (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); divadloChaseRainbow (50); SwirlbuttonState = digitalRead (SwitchPinSwirl); }} // Čtení a zpracování vzorových dat z Mic void readSamples () {for (int i = 0; i0) {sklon = vzorky - vzorky [i -1]; } else {sklon = vzorky - vzorky [N -1]; } // Zkontrolovat, zda je sklon větší než noiseLevel - zvuk, který není na úrovni hluku, detekován if (abs (sklon)> noiseLevel) {if (sklon <0) {vypočítatPeriod (i); if (periodChanged == 1) {displayColor (getColor (T)); }}} else {ledsOff (); // TheaterChaseRainbow (50); } periodFactor += 1; zpoždění (1); }}
neplatné vypočítat období (int i)
{if (t1 == -1) {// t1 nebylo nastaveno t1 = i; } else {// t1 bylo nastaveno, takže vypočítat období int period = periodFactor*(i - t1); periodChanged = T == období? 0: 1; T = tečka; //Serial.println(T); // reset t1 na novou hodnotu i t1 = i; periodFactor = 0; }}
uint32_t getColor (int období)
{if (period == -1) return Wheel (0); else if (period> 400) return Wheel (5); else return Wheel (mapa (-1*perioda, -400, -1, 50, 255)); }
void fadeOut ()
{for (int i = 0; i <5; i ++) {strip.setBrightness (110 - i*20); strip.show (); // Aktualizace zpoždění pásu (fadeDelay); periodFactor += fadeDelay; }}
void fadeIn ()
{strip.setBrightness (100); strip.show (); // Aktualizujte proužek // vyblednutí barvy pro (int i = 0; i <5; i ++) {//strip.setBrightness(20*i+30); //strip.show (); // Aktualizace zpoždění pásu (fadeDelay); periodFactor+= fadeDelay; }}
prázdné LED diody Vypnuto ()
{ odeznít(); pro (int i = 0; i
zrušit displayColor (barva uint32_t)
{for (int i = 0; i
void oddWheel (barva uint32_t)
{for (int j = 0; j <256; j ++) {// cyklus všech 256 barev v kolečku pro (int q = 0; q <3; q ++) {for (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, Wheel ((i+j) % 255)); // zapnutí každého třetího pixelu} strip.show ();
zpoždění (1);
pro (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, 0); // vypnout každý třetí pixel}}} fadeIn (); }
// Vyplňte tečky jednu za druhou barvou
void colorWipe (uint32_t c, uint8_t čekat) {for (uint16_t i = 0; i
prázdná duha (uint8_t čekat) {
uint16_t i, j;
pro (j = 0; j <256; j ++) {pro (i = 0; i
// Mírně odlišná, díky čemuž je duha rovnoměrně rozložena po celém těle
void rainbowCycle (uint8_t čekat) {uint16_t i, j;
for (j = 0; j <256*5; j ++) {// 5 cyklů všech barev na kolečku pro (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); zpoždění (čekání); }}
// Plazivá světla v divadelním stylu.
void TheaterChase (uint32_t c, uint8_t wait) {for (int j = 0; j <10; j ++) {// do 10 cyklů honění za (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // zapnutí každého třetího pixelu} strip.show ();
zpoždění (čekání);
pro (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // vypněte každý třetí pixel}}}}
// Plazivá světla v divadelním stylu s duhovým efektem
void TheaterChaseRainbow (uint8_t wait) {for (int j = 0; j <256; j ++) {// cyklus všech 256 barev v kolečku pro (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, Wheel ((i+j) % 255)); // zapnutí každého třetího pixelu} strip.show ();
zpoždění (čekání);
pro (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // vypněte každý třetí pixel}}}}
// Zadáním hodnoty 0 až 255 získáte hodnotu barvy.
// Barvy jsou přechodem r - g - b - zpět na r. uint32_t Wheel (byte WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; zpětný proužek. Barva (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; zpětný proužek. Barva (WheelPos * 3, 255 - WheelPos * 3, 0); }
void Přepnuto () {
strip.show (); readSamples (); }
Než se nechám porazit v komentářích (pamatujte na zásady Be Nice !!) Po nahrání jsem si uvědomil, jak je můj kód nedbalý. Není třeba neustále testovat, jak pin 4, tak pin 8 na HIGH. Protože přepínač je jednopólový dvojitý hod, hodnotu jednoho lze odvodit z druhého: stačí vyzkoušet jeden. Takže byste mohli projít a odstranit všechny odkazy na čtení a psaní MusicButtonState a jednoduše spustit celou věc efektivněji testováním SwirlButtonState, pokud máte málo paměti nebo rozšiřujete o další rutiny. Ale výše uvedený kód funguje.
A pokud někdo chce vyladit tyto zvukové rutiny tak, aby snímaly nejen úroveň hluku, ale také frekvenci, a napsat nějaký hladký kód, který bude klouzat po světelném spektru nahoru a dolů v reakci na pohyby podél zvukového spektra, napište do komentářů odkaz na jak jsi to udělal
Užívat si!
Doporučuje:
Přepnout-přizpůsobit hračky: Luditek LED Party Light: 7 kroků
Switch-Adapt Toys: Luditek LED Party Light: Adaptace hraček otevírá nové cesty a přizpůsobená řešení, která umožňují dětem s omezenými pohybovými schopnostmi nebo vývojovými vadami samostatně komunikovat s hračkami. V mnoha případech děti, které vyžadují přizpůsobené hračky, nejsou schopny
Aktivní hudební párty LED lampa a Bluetooth reproduktor se záře ve tmě PLA: 7 kroků (s obrázky)
Aktivní hudební párty LED lampa a Bluetooth reproduktor s Glow in the Dark PLA: Dobrý den, a děkuji za naladění mého Instructable! Každý rok dělám zajímavý projekt se svým synem, kterému je nyní 14. Postavili jsme Quadcopter, Swimming Pace Clock (což je také instruktabilní), lavice CNC skříně a Fidget Spinners.Wi
Soda Bottle Arduino Lampa - citlivá na zvuk: 3 kroky (s obrázky)
Soda Bottle Arduino Lamp - Sound Sensitive: Z jiného projektu mi zbyly některé individuálně adresovatelné LED diody a chtěl jsem vytvořit další celkem snadnou, ale zábavnou výzvu pro své třídy produktového designu na úrovni Year 10 (věk 13-15). Tento projekt používá prázdnou láhev sody (nebo šumivý nápoj, pokud
Pull the Light - Light Module using Neopixel & Pull Up Switch: 6 Steps (with Pictures)
Pull the Light - Light Module using Neopixel & Pull Up Switch: Features of the light module Arduino Uno Hardware & skříň zakoupená u internetu Neopixel & Napájení zapůjčené ze školy informatiky & Design produktu Světelný modul ovládaný napájecím zdrojem Všechny funkce ovládané pomocí
Felt & Neopixel Rainbow Crown: 8 kroků (s obrázky)
Felt & Neopixel Rainbow Crown: Tento víkend jsem pro svého 3letého bratrance vytvořil rozsvícenou korunku s podporou neopixelů. Vždycky se zdála být docela zaujatá mými rozsvícenými výmysly, takže jsem usoudil, že je načase, aby měla jeden svůj vlastní. Vypadá to docela dobře a rád bych to indoktrinoval