Tartalomjegyzék:
- Lépés: Készítse el az alapot
- 2. lépés: A neopixel gyűrűk előkészítése
- 3. lépés: A huzalozás
- 4. lépés: A kód
- 7. lépés: A mikrofon bekötése
Videó: Arduino & Neopixel kokszüveg Rainbow Party Light: 7 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Doon fiam tehát egy nagyon jó partifényt lát, amely régi kokszpalackokból és a Glow Sticks gubancos belsejéből készül, és megkérdezi, hogy készíthetünk -e egyet a közelgő iskolai vizsgákra, amelyek túlfúlnak PartAYYY !!! Biztos vagyok benne, de nem szeretné, ha megkapná azokat a csípős Adafruit Neopixel gyűrűket, amelyekről már olvastunk… Ő üres tekintettel néz rám. Mert valójában nem tudja, miről beszélek, de apa látott egy lehetőséget, hogy játsszon azokkal a Neopixel -gyűrűkkel, amelyekről ő olvasott, és mindannyian tudjuk, hogy az első 10 ok, amiért a geek apák szaporodnak, kifogás, hogy olyan klassz kütyükkel játszanak, amelyekről azt mondják, hogy mindenki a gyerekeinek szól.
Ez egy szuper-egyszerű projekt, ami igazán jól néz ki. Felépítettük a miénk 3 régi kokszosüvegből, egy fából készült tányérból és egy játszótéri oszloptartóból - az alagsorban heverő cuccokból - egy Arduino -val (esetünkben Leonardo, de minden Genuino -tábla megteszi!) És három Neopixel -gyűrűvel kombinálva. Rendeltem egy 9 LED-es gyűrűt, de végül 12 LED-es gyűrűt kaptam ugyanazon az áron. Ami édes volt, de átmenetet jelentett a kútlyukakon-a 12 LED-es gyűrűk 35 mm szélesek, szemben a 23 mm-rel. Amire szüksége lesz:
- Genuino/Arduino tábla (Leonardo -t használtunk, de szinte minden tábla megteszi)
- 3 Neopixel gyűrű (egyenként 12 LED): szerezze be őket az Adafruitból, és támogassa azokat a finom embereket
- 1000 µf 6.3v vagy jobb kondenzátor
- 300-500 ohmos ellenállás
- Egy fából készült tányér, vagy egy négyzetnyi rongyfa, vagy bármi, amibe belehelyezheti a neopixeleket, és ráhelyezheti a kokszpalackokat
- A lemez bizonyos rögzítési formái - egy játszótéri oszlopkonzol remekül működött számunkra
- 9v fali szemölcs
- 40 mm-es lyukfúró
- Csavarok, anyák, alátétek, távtartók
- Szilárd magos huzal
- Forrasztópáka és forrasztópáka
- Kenyeretábla
- Műanyag tok az Arduino számára. Kimehetsz, és vásárolhatsz egy igazán szép, tökéletesen illeszkedő műanyag tokot, amely millió éves kőolajból készült, amelyet a talajból fúrtak ki valamilyen törékeny környezetben, és amelyet a bolygó túloldalán gyártottak, és konténerben szállítottak egy közeli raktárba az összes A portok tökéletesen illeszkednek, és széndioxidot kibocsátó furgonnal szállítják az ajtóhoz. Vagy megteheti, amit én tettem, és használhat egy régi eldobott műanyag dobozt. Ebben az esetben egy madagaszkári pólyássegítő dobozt, amely a gyógyszeres szekrényben hever… és fúrjon néhány lyukat. Itt ér véget az előadás. Csináljuk…
Lépés: Készítse el az alapot
Ön improvizálhatja bázisát a szemétből, amit a saját pincéjében talál, vagy akár csak egy fadobozt vagy bármit, ami elrejti az elektronikáját.
Először három lyukat fúrtunk, egyenletesen elosztva a falemezen, elég nagyokat ahhoz, hogy a Neopixel gyűrűk beférjenek. A képen a lyukak ásófúróval fúrt kutak. Végül a 12 LED-es gyűrűk nagyobb mérete miatt furattal kellett fúrni egy furatot. Ez azt jelentette, hogy végig kell menni a lemezen, és ahelyett, hogy a gyűrűket szépen beillesztenék a finoman kidolgozott kis, 2 mm mély lyukaikba, középen lévő lyukkal a tiszta huzalmenethez, végül a gyűrűket… ahm… ragasztószalaggal rögzítettem a lemezről. Ne ítélkezz. Amúgy nem látja a lemez alját a tervezésemben. És sötét van, amikor be van kapcsolva. És emellett - mi a baj a ragasztószalaggal?
Szükségem volt a lemez és a konzol közötti távolságra a lemez alján lévő kenyérlaphoz és az egyik komponenshez - a kondenzátorhoz, valamint a huzalfutásokhoz, amelyeknek a kenyértábláról az Arduino -ra kell menniük, és amelyet a konzolba terveztem. Ezért egy sor rögtönzött távtartót tettem fel a csavar tengelyekre, hogy elegendő szabadságot biztosítsanak - kb. 3 cm, a kenyérlap magassága és egy kicsit, hogy ne törje össze a vezetékeket. Két fa horgonycsavart használtam sarkonként, mert azok megfelelő magasságban voltak, és a férfi fiókban hevertek … az a doboz laza csavarok, csavarok, szögek, rozsdás láncszemek, tömlőcsatlakozók, régi érmék, váratlanul éles tárgyak és mindenféle módon bitekből és bobokból, amelyek varázslatosan megmenthetik a hardverboltba való utazást, ha felkínálják, ha nem pontosan azt, amire szüksége van, valamit, ami remekül sikerül.
Boldog baleset volt az alagsorban talált játszótéri bejegyzés kapcsán, mert már lyukak futottak át a lemezen. Nem kell vasat fúrni! Az alap négy csavarlyukkal rendelkezett, és négy fúrólyukat fúrtunk a falemezen.
Ezután gótikus feketére festettük az egészet.
2. lépés: A neopixel gyűrűk előkészítése
A vezetékeket forrasztania kell a neopixelgyűrűkhöz: egy adatbeviteli vezetéket mindegyikhez, egy adatkimeneti vezetéket kettőhöz, valamint áramot és földelést mindegyikhez. Bármilyen hosszúságra gondol, szüksége van, adjon hozzá néhányat. A felesleges drótot mindig levághatja, túl rövidet nem nyújthat. És vegye figyelembe az Adafruit figyelmeztetését:
Amikor huzalokat forraszt ezekhez a gyűrűkhöz, fokozottan ügyelnie kell a forrasztási foltokra és a rövidzárlatokra. Az alkatrészek közötti távolság nagyon szűk! Gyakran a legegyszerűbb a vezetéket elölről behelyezni, a hátoldalon pedig forrasztani.
Szeretném, ha ezt elolvasnám, mielőtt a frontra forrasztottam volna. Sikerült nem égnem egyik LED -del sem, de az egyik szélét úgy perzseltem meg, hogy izzadni kezdtem, amíg be nem kapcsoltam. Továbbá, ha elolvastam volna a finom kézikönyvet, elolvastam volna a figyelmeztetést is, hogy ne tegyen alligátorcsipeszt a LED -re. Hadd legyenek hajótöréseim a világítótornyotok.
A Neopixel margaréta-láncot tartalmaz, ami azt jelenti, hogy az összes LED-jüket egyidejűleg vezérelheti egy Arduino-ból, ha egy vezetéket csatlakoztat az egyik gyűrű OUT-jából a másik IN-be. Minden gyűrűnek szüksége van táp- és földvezetékekre is.
3. lépés: A huzalozás
Csatlakoztassa, mint a fenti Fritzingben-az Arduino 6. csapja az adatokat az első csengetéshez viszi, a gyűrűből származó adatok a következő adatbeviteléhez, a másik adatai pedig a Az utolsó csengetés adatbevitele. Nincs szüksége az utolsó gyűrű adatkimeneti vezetékére.
Az 1000 µf kapacitás a kenyérlap pozitív és negatív sínei között mozog. Ez a sapka megvédi a gyűrűket az áramütéstől, és ezt ajánlja az Adafruit NeoPixel Uberguide legjobb gyakorlatok című része. Az első neopixel adataiban szereplő ellenállást az Adafruit is ajánlja-a Fritzingben 1K, de az ajánlott ellenállás 300-500 ohm.
Építésem során a Neopixels vezetékeit a lemez hátulján keresztül a középen rögzített kenyérsütő lapra futtattam. Így csak három hosszú vezetéket kell levezetnie az alapegységbe: tápellátás, földelés és adat. Ezeket a vezetékeket szuperhosszúvá tettem-rengeteg tárhely van az alapban, és kényelmesen ki tudja húzni a táblát az újraprogramozáshoz.
4. lépés: A kód
A "loading =" lusta "megemlítette, hogy a fiam ennek a zenére reagáló változatát akarta. A 18. születésnapjáig tartott, hogy megkerülje, de itt van!
További felszerelések:
1 egypólusú, dupla dobáskapcsoló 1 automatikus erősítésvezérlő mikrofon (az AdaFruit MAX9184-et használtam)
A mikrofonnak valóban rendelkeznie kell automatikus erősítés -szabályozással, hogy ez megfelelően működjön. Az AGC folyamatosan mintát vesz a környezeti zajoktól, és megemeli és lecsökkenti a háttérnek tekintett küszöböt, így a fény reagál a tüskékre a háttérben. Az AdaFruit mikrofonja ragyogó: egy csendes helyiségből, amelyben egyetlen hang hangja váltja ki, teljes buli módba léphet, ahol egy tinédzserekkel és zenével teli szoba van, és felveszi a zene ütemét bírság. Az alternatíva, az állítható erősítésű mikrofon egy apró potenciométert tartalmaz a táblán, amely lehetetlenül finom és izgalmas. Nem kell sok változás a környezeti hangon ahhoz, hogy használhatatlanná tegye az egységet: folyamatosan világít vagy folyamatosan sötétedik. Az AGC varázslatosan működik.
Szerettem volna az örvényvizsgálati minta vagy a zene használatának lehetőségét, ezért a kapcsoló középső vezetékét VIN -re, az egyik vezetéket a 4 -es, a másikat a Leonardo 8 -as tűjére kötöttem. Ha ezeket a csapokat HIGH vagy LOW értékre teszteli, akkor megtudhatjuk, hogy a kapcsoló melyik állapotban van, és ennek megfelelően az elágazási kódot.
7. lépés: A mikrofon bekötése
Vezesse a mikrofon bemenetét ezen az 1-100µF kondenzátoron keresztül a 0. analóg érintkezőbe. Ha a kondenzátor polarizált, a kimeneti csap a pozitív oldalra kerül (zöld vezeték).
Köszönöm CodeGirlJP-nek a Trinket-Color-by-Sound rutinját, amelyet az alábbiakban módosítottam:
// Hanggal aktivált LED -ek az Arduino és a NeoPixels segítségével
#befoglalni
#define MIC_PIN A0 // A mikrofon a Leonardo a0 tűjéhez van csatlakoztatva
#define LED_PIN 6 // NeoPixel LED szál a Leonardo 6. tűjéhez erősítve #define N_PIXELS 36 // a LED szálban lévő pixelek száma !!!!!! Állítsa be a beállítási képpontok számát. Ez 3 Neopixel gyűrűre igaz !!!!!! #define N 100 // Minden egyes leolvasáskor vett minták száma
// Inicializálja a NeoPixel szalagot a fenti értékekkel:
Adafruit_NeoPixel szalag = Adafruit_NeoPixel (N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
int minták [N]; // mintagyűjtemény -készlet tárolása
int periodFactor = 0; // nyomon követni az ms számot a periódus kiszámításához int t1 = -1; //> 100 meredekség ideje észlelve. int T; // időtartam közötti időtartam ezredmásodpercre skálázva int lejtőn; // két összegyűjtött adatminta pont meredeksége byte periodChanged = 0; const int SwitchPinMusic = 4; // Tű a kapcsolópozícióhoz zeneérzékenység const int SwitchPinSwirl = 8; // Tű a kapcsoló helyzetéhez Teszt minta (örvény) int MusicbuttonState = 0; // On off logikai változó a zene érzékenységéhez
// Arduino beállítási módszer
void setup () {
strip.begin ();
ledsOff (); késleltetés (500); displayColor (Kerék (100)); strip.show (); késleltetés (500); páratlan kerék (kerék (100)); strip.show (); késleltetés (500); pinMode (SwitchPinMusic, INPUT); pinMode (SwitchPinSwirl, INPUT); // attachInterrupt (4, Switched, FALLING);
}
// Arduino hurok módszer
void loop () {SwirlbuttonState = digitalRead (SwitchPinSwirl); // HIGH, ha a kapcsoló zenei érzékenységre van állítva MusicbuttonState = digitalRead (SwitchPinMusic); // HIGH, ha a kapcsoló tesztmintára van állítva, miközben (SwirlbuttonState == LOW) {readSamples (); // Zene mintavételi rutin futtatása SwirlbuttonState = digitalRead (SwitchPinSwirl); // Ellenőrizze, hogy a kapcsoló megváltozott -e} SwirlbuttonState = digitalRead (SwitchPinSwirl); MusicbuttonState = digitalRead (SwitchPinMusic); while (SwirlbuttonState == HIGH) {Dance (); // Futtassa a kavargó tesztminta rutinját SwirlbuttonState = digitalRead (SwitchPinSwirl); // Ellenőrizze, hogy a kapcsoló nem változott -e
}
}
void Dance () {
while (SwirlbuttonState == HIGH) {colorWipe (strip. Color (255, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (csík. Szín (0, 255, 0), 50); // Green SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (csík. Szín (0, 0, 255), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); //colorWipe(strip. Color(0, 0, 0, 255), 50); // Fehér RGBW // Színházi pixel üldözés küldése… SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (szalag. Szín (127, 127, 127), 50); // White SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (szalag. Szín (127, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (szalag. Szín (0, 0, 127), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); szivárvány (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); szivárványCiklus (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); színházChaseRainbow (50); SwirlbuttonState = digitalRead (SwitchPinSwirl); }} // Mintaadatok olvasása és feldolgozása a Mic void readSamples () {for (int i = 0; i0) {slope =minták - minták [i -1]; } else {lejtés = minták - minták [N -1]; } // Ellenőrizze, hogy a lejtés nagyobb -e a zajszintnél - a zaj szintjén nem lévő hang észlelve, ha (abs (lejtés)> noiseLevel) {if (lejtés <0) {calcPeriod (i); if (periodChanged == 1) {displayColor (getColor (T)); }}} else {ledsOff (); // színházChaseRainbow (50); } periodFactor += 1; késleltetés (1); }}
void calcPeriod (int i)
{if (t1 == -1) {// t1 nincs beállítva t1 = i; } else {// t1 úgy lett beállítva, hogy periódus számítása int period = periodFactor*(i - t1); periodChanged = T == időszak? 0: 1; T = pont; // Sorozat.println (T); // t1 visszaállítása új i értékre t1 = i; periodFactor = 0; }}
uint32_t getColor (int periódus)
{if (időszak == -1) visszatérő kerék (0); különben ha (időszak> 400) visszatérő kerék (5); else return Wheel (térkép (-1*időszak, -400, -1, 50, 255)); }
void fadeOut ()
{for (int i = 0; i <5; i ++) {strip.setBrightness (110 - i*20); strip.show (); // Frissítési késleltetés (fadeDelay); periodFactor += fadeDelay; }}
void fadeIn ()
{strip.setBrightness (100); strip.show (); // Csík frissítése // szín elhalványítása a (int i = 0; i <5; i ++) {//strip.setBrightness(20*i+30); //strip.show (); // Frissítési késleltetés (fadeDelay); periodFactor+= fadeDelay; }}
void ledsOff ()
{ fokozatosan halkít(); mert (int i = 0; i
void displayColor (uint32_t color)
{for (int i = 0; i
void oddWheel (uint32_t szín)
{for (int j = 0; j <256; j ++) {// a kerék összes 256 színének ciklusa (int q = 0; q <3; q ++) {esetén (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, Kerék ((i+j) % 255)); // minden harmadik pixel bekapcsolása} strip.show ();
késleltetés (1);
for (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, 0); // minden harmadik pixel kikapcsolása}}} fadeIn (); }
// Töltse fel a pontokat egymás után egy színnel
void colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i
void rainbow (uint8_t wait) {
uint16_t i, j;
(j = 0; j <256; j ++) {esetén (i = 0; i
// Kicsit más, ezért a szivárvány egyenletesen oszlik el az egészben
void rainbowCycle (uint8_t várjon) {uint16_t i, j;
for (j = 0; j <256*5; j ++) {// 5 ciklus minden színben a keréken (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); késleltetés (várakozás); }}
// Színházi stílusú mászó fények.
void TheaterChase (uint32_t c, uint8_t wait) {for (int j = 0; j <10; j ++) {// végezzen 10 üldözési ciklust (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // minden harmadik pixel bekapcsolása} strip.show ();
késleltetés (várakozás);
for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // minden harmadik képpont kikapcsolása}}}}
// Színházi stílusú kúszófények szivárványos hatással
void theatreChaseRainbow (uint8_t wait) {for (int j = 0; j <256; j ++) {// a kerék összes 256 színének ciklusa (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, Kerék ((i+j) % 255)); // minden harmadik pixel bekapcsolása} strip.show ();
késleltetés (várakozás);
for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // minden harmadik képpont kikapcsolása}}}}
// Adjon meg egy 0 és 255 közötti értéket, hogy színértéket kapjon.
// A színek átmenet r - g - b - vissza r. uint32_t Kerék (byte WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; visszatérő csík. Szín (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; visszatérő csík. Szín (WheelPos * 3, 255 - WheelPos * 3, 0); }
void Switched () {
strip.show (); readSamples (); }
Mielőtt lemészárolnak a megjegyzésekben (ne feledje a Be Nice irányelvet !!), a feltöltés után rájöttem, hogy a kódom milyen hanyag. Nem kell folyamatosan tesztelni mind a 4 -es, mind a 8 -as tűt a MAGAS -ért. Mivel a kapcsoló egypólusú dupla dobás, az egyik értéke a másikból következtethető: csak az egyiket kell tesztelnie. Tehát átnézheti és eltávolíthatja a MusicButtonState olvasására és írására vonatkozó összes hivatkozást, és egyszerűen futtathatja az egészet hatékonyabban a SwirlButtonState tesztelésével, ha kevés a memória, vagy más rutinokkal bővíti. De a fenti kód működik.
És ha valaki szeretné módosítani ezeket az audio rutinokat, hogy ne csak a zajszintet, hanem a frekvenciát is érzékelje, és írjon valami sima kódot a fényspektrum felfelé és lefelé csúsztatására az audiospektrum mentén történő mozgások hatására, dobjon egy linket a megjegyzésekben hogy csináltad.
Élvezd!
Ajánlott:
FuseLight: Kapcsolja be a régi/olvasztott csőfényt stúdió/party fénybe: 3 lépés (képekkel)
FuseLight: Kapcsolja be a régi/olvasztott csőfényt stúdióba/partyfénybe: Itt egy olvasztott csőfényt stúdió/részvilágítássá alakítottam néhány alapvető eszköz, rgb fény és 3D nyomtatás segítségével. Az RGB led szalagoknak köszönhetően több szín és árnyalat is rendelkezésre áll
Switch-Adapt játékok: Luditek LED Party Light: 7 lépés
Kapcsolható játékok: Luditek LED partyfény: A játékhoz való adaptáció új utakat és személyre szabott megoldásokat nyit meg annak érdekében, hogy a mozgáskorlátozott vagy fejlődési fogyatékos gyermekek önállóan léphessenek kapcsolatba a játékokkal. Sok esetben azok a gyerekek, akik igénylik az adaptált játékokat, nem tudnak
Neopixel Ws2812 Rainbow LED izzás M5stick-C - Szivárvány futtatása a Neopixel Ws2812 készüléken az M5stack M5stick C használatával Arduino IDE használatával: 5 lépés
Neopixel Ws2812 Rainbow LED izzás M5stick-C | Szivárvány futása a Neopixel Ws2812-en az M5stack M5stick C használatával Arduino IDE használatával: Sziasztok, srácok, ebben az oktatási útmutatóban megtanuljuk, hogyan kell használni a neopixel ws2812 LED-eket, vagy led szalagot vagy led mátrixot vagy led gyűrűt m5stack m5stick-C fejlesztőtáblával Arduino IDE-vel, és elkészítjük szivárványos mintát vele
Felt & Neopixel Rainbow Crown: 8 lépés (képekkel)
Felt & Neopixel Rainbow Crown: Ezen a hétvégén egy világító, neopixel kompatibilis koronát készítettem 3 éves unokatestvéremnek. Mindig úgy néz ki, mint aki teljesen el van ragadtatva a világító berendezéseimtől, ezért úgy gondoltam, itt az ideje, hogy legyen neki sajátja. Nagyon jól néz ki, és szeretném beavatni, hogy
Kokszüveg dekoratív fény: 4 lépés
Kokszüveg dekoratív fény: Mivel ez volt az első Instructable, valami egyszerűt, de mégis érdekeset akartam létrehozni. Belebukkantam ezekbe a "Holiday 2008" kokszüvegekbe, és megszületett a projektem. Ez a projekt újrahasznosított alkatrészeket is használ. Ez egy jó projekt lenne megosztani