Sisukord:
- Samm: valmistage alus
- 2. samm: Neopikselrõngaste ettevalmistamine
- Samm: juhtmestik
- 4. samm: kood
- Samm 7: Mikrofoni ühendamine
Video: Arduino ja Neopixeli koksipudelite vikerkaarepeotuli: 7 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Nii näeb mu poeg Doon väga lahedat peovalgust, mis on valmistatud vanadest koksipudelitest ja säravatest Glow Sticksi sisekülgedest, ning küsib, kas saame teha ühe tema eelseisvate koolieksamite jaoks, mis on PartAYYY !!! Ma ütlen kindlalt, aga kas sa ei tahaks pigem neid ägedaid Adafruit Neopixeli sõrmuseid, millest oleme lugenud … Ta vaatab mulle tühja pilku. Sest tegelikult ta ei tea, millest ma räägin, aga isa on märganud võimalust mängida nende Neopixeli rõngastega, millest ta on lugenud, ja me kõik teame ühte kümnest peamisest põhjusest, miks geek -isad sünnitavad. ettekääne mängida lahedate vidinatega, mille kohta nad ütlevad, et kõik on mõeldud oma lastele.
See on ülilihtne projekt, mis näeb tõesti suurepärane välja. Ehitasime oma 3 vanast koksipudelist, puidust plaadist ja mänguväljaku postiklambrist - keldris lebavast kraamist - koos Arduinoga (meie puhul Leonardo, aga sobib iga Genuino plaat!) Ja kolmest Neopixeli rõngast. Tellisin 9-LED-rõnga, kuid lõpuks sain sama hinnaga 12-LED-rõnga. See oli magus, kuid tähendas kaevude aukude ülevõtmist-12-LED-rõngad on 35 mm laiad, erinevalt 23 mm-st. Mida vajate:
- Genuino/Arduino plaat (kasutasime Leonardot, kuid peaaegu iga plaat sobib)
- 3 Neopixeli rõngast (igaüks 12 LED -i): hankige need Adafruitist ja toetage neid häid inimesi
- 1000 µf 6.3v või parem kondensaator
- Takisti 300-500 oomi
- Puidust plaat või vanaraua ruut või midagi muud, kuhu neopikslid sisse panna ja koksipudelid peale panna
- Plaadi teatud tüüpi kinnitus - mänguväljaku postiklamber töötas meie jaoks suurepäraselt
- 9v seina tüügas
- 40 mm auk
- Poldid, mutrid, seibid, vahetükid
- Tahke südamikuga traat
- Jootekolb ja jootekolb
- Leivalaud
- Plastikust ümbris Arduino jaoks. Võite välja minna ja osta tõeliselt kena ideaalselt sobiva plastkorpuse, mis on valmistatud miljonite aastate vanusest naftapuurist, mis on puuritud maapinnast mingis hapras keskkonnas ja toodetud teisel pool planeeti ning saadetud konteineris teie lähedalasuvasse lattu. sadamad on täiuslikult joondatud ja laske see teie ukseni toimetada kaubikuga, mis paiskab atmosfääri süsinikdioksiidi. Või võite teha seda, mida mina tegin, ja kasutada vana ära visatud plastkarbi.. antud juhul Madagaskari bändi abikarpi, mis lebab ravimikapis … ja puurige sinna mõned augud. Siin lõpeb loeng. TEEME…
Samm: valmistage alus
Saate oma baasi improviseerida mis tahes rämpsust, mis teil keldris on, või isegi lihtsalt kasutada puidust kasti või kõike, mis teie elektroonikat varjab.
Kõigepealt puurisime puitplaadile ühtlase vahega kolm auku, mis olid piisavalt suured, et Neopixeli rõngad sisse istuda. Pildil on augud labida puuriga puuritud. Lõpuks pidime 12-LED-rõngaste suurema suuruse tõttu puurima auke puuriga. See tähendas kogu plaadi läbimist ja selle asemel, et rõngad kenasti oma peeneks tehtud 2 mm sügavustesse süvenditesse, mille keskne auk oleks korralikuks traadiks, kinnitaksin lõpuks rõngad… ahm… kleeplint üle põhja plaadist. Ära mõista kohut. Plaadi põhja ei näe mu kujunduses niikuinii. Ja kui see on sisse lülitatud, on pime. Ja pealegi - mis on kleeplindil viga?
Vajasin plaadi ja kronsteini vahelist ruumi plaadi põhjas asuva leivaplaadi ja ühe komponendi - kondensaatori jaoks - ning traatjooksude jaoks, mis pidid minema leivaplaadilt Arduinole, mille plaanisin kronsteini sisse panna. Niisiis panin poldivõllidele hulga ajutisi vaheseinu, et oleks piisavalt ruumi - umbes 3 cm, leivaplaadi kõrgus ja natuke, et mitte juhtmeid purustada. Kasutasin iga nurga kohta kahte puidust ankrupolti, kuna need olid õige kõrgusega ja lebasid mehe sahtlis … see lahtiste kruvide, poltide, naelte, roostes ketilinkide, voolikuühenduste, vanade müntide, ootamatult teravate esemete karp ja kõik bittidest ja bobidest, mis võivad võluväel säästa teie reisi ehituspoodi, pakkudes välja, kui mitte täpselt vajalikku, midagi, mis sobib hästi.
Õnnelik õnnetus mänguväljaku postituse osas, mille ma keldrist leidsin, oli see, et taldrikust jooksid juba augud läbi. Pole vaja rauda puurida! Alusel oli neli poldiava ja puurisime puitplaati neli vastassuunalist auku.
Seejärel värvisime pihustiga kogu gooti musta värvi.
2. samm: Neopikselrõngaste ettevalmistamine
Peate jootma juhtmed oma neopikselrõngastele: kõigi jaoks Data-In juhe, kahele Data-Out traat ja kummagi toide ja maandus. Olenemata pikkusest, mida vajate, lisage mõni. Liigse traadi saate alati ära lõigata, liiga lühikest ei saa venitada. Ja olge teadlik Adafruit'i hoiatusest:
Nendele rõngastele juhtmete jootmisel peate olema eriti valvas jootmispottide ja lühiste suhtes. Komponentide vahe on väga tihe! Sageli on kõige lihtsam sisestada traat eest ja jootma tagant.
Soovin, et loeksin seda enne rindele jootmist. Mul õnnestus mitte ühtegi LED -i ära põletada, kuid kõrvetasin ühe serva nii, et higistasin, kuni selle sisse lülitasin. Samuti, kui oleksin lugenud peent kasutusjuhendit, oleksin lugenud ka hoiatust mitte panna LED -ile alligaatoriklambrit. Las mu laevavrakid on teie tuletorn.
Neopixel helistab daisy-kett, mis tähendab, et saate juhtida kõiki nende LED-e samaaegselt Arduino'st, ühendades juhtme ühe rõnga OUT-st teise sisendisse. Iga rõngas vajab ka toite- ja maandusjuhtmeid.
Samm: juhtmestik
Ühendage see nii, nagu ülaltoodud Fritzingis-Arduino tihvt 6 viib andmed esimesse rõngasse, selle rõnga andmed väljuvad järgmise andmete sisendisse, selle andmete andmed väljuvad Viimase helina andmed. Teil pole vaja lõpprõnga andmeväljundtraati.
Maht 1000 µf jääb leivaplaadi positiivse ja negatiivse rööpa vahele. See kork kaitseb rõngaid voolukatkestuste eest ja seda soovitab Adafruit NeoPixel Uberguide'i parimate tavade jaotis. Adafruit soovitab ka esimese neopikseli andmetes olevat takisti-Fritzingis on see 1K, kuid soovitatav takistus on 300–500 oomi.
Ehituse ajal juhtisin neopikselite juhtmed üle plaadi tagakülje keskele kinnitatud leivaplaadile. Nii peate põhiseadmesse laskma ainult kolm pikka juhet: toide, maandus ja andmed. Tegin need juhtmed ülipikkadeks-aluses on palju salvestusruumi ja see muudab mugavaks plaadi ümberprogrammeerimiseks väljatõmbamise.
4. samm: kood
"loading =" laisk "mainis, et mu poeg soovis sellest muusikale reageerivat versiooni. Sellega tegelemiseks kulus 18. sünnipäeva, kuid siin see on!
Lisavarustus:
1 ühepooluseline, topeltviskelüliti 1 automaatse võimenduskontrolli mikrofon (kasutasin AdaFruit'i MAX9184) 1 1uF-100uF kondensaator (mis tahes väärtus)
Mikrofonil peab tõesti olema automaatne võimenduskontroll, et see korralikult töötaks. AGC proovib pidevalt ümbritsevat müra ning tõstab ja alandab läve, mida ta taustaks peab, nii et teie valgus reageerib selle taustal esinevatele naastudele. AdaFruit'i mikrofon on geniaalne: saate minna vaiksest ruumist, kus üksainus hääl vallandab selle, täielikult peorežiimi, kus tuba on täis teismelisi ja heliseb muusika, ning see võtab vastu muusika rütmi. hästi. Alternatiivina, reguleeritava võimendusega mikrofonil, on tahvlil väike potentsiomeeter, mis on võimatult õrn ja vaevaline. Seadme kasutuks muutmiseks ei pea ümbritseva heli muutmine palju muutuma: tuled põlevad pidevalt või pidevalt. AGC töötab nagu maagia.
Soovisin võimalust kasutada keeristesti mustrit või muusikat, nii et ühendasin lüliti keskjuhtme VIN -i külge ja ühe juhtme 4 -nda külge, teise Leonardo 8 -nda kontakti külge. Testides neid kontakte HIGH või LOW jaoks, saame teada, millises olekus lüliti on, ja vastavalt harukoodi.
Samm 7: Mikrofoni ühendamine
Viige Mic-sisend selle 1-100µF kondensaatori kaudu analoogpistikusse 0. Kui teie kondensaator on polariseeritud, läheb väljundnõel positiivsele küljele (roheline juhe).
Tänu CodeGirlJP-le tema Trinket-Color-by-Sound rutiini eest, mida ma kohandasin allpool:
// Heli aktiveeritud LED -id koos Arduino ja NeoPixelitega
#kaasake
#define MIC_PIN A0 // Mikrofon on Leonardo poldi a0 külge kinnitatud
#define LED_PIN 6 // NeoPixel LED -kiud, mis on kinnitatud Leonardo tihvti 6 külge #define N_PIXELS 36 // pikslite arv LED -ahelas !!!!!! Kohandage oma seadistuses pikslite arvu. See on õige 3 Neopixeli rõnga puhul !!!!!! #define N 100 // Proovide arv, mida tuleb iga kord lugeda
// Initsialiseeri NeoPixeli riba ülaltoodud väärtustega:
Adafruit_NeoPixel riba = Adafruit_NeoPixel (N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
int proovid [N]; // näidiskogumiskomplekti salvestusruum
int periodFactor = 0; // jälgida ms arvu arvu perioodi arvutamiseks int t1 = -1; // tuvastatud kallaku ajad> 100 int T; // ajavahemik ajavahemiku vahel skaleeritud millisekunditeni int kalde all; // kahe kogutud andmevalimipunkti kalle baitide perioodChanged = 0; const int SwitchPinMusic = 4; // Lüliti asendi tihvt muusika tundlikkus const int SwitchPinSwirl = 8; // Lüliti asendi tihvt Testimuster (keeris) int MusicbuttonState = 0; // Muusikatundlikkuse väljalülitatud loogikamuutuja
// Arduino seadistusmeetod
tühine seadistus () {
riba.algus ();
ledsOff (); viivitus (500); displayColor (Ratas (100)); strip.show (); viivitus (500); oddWheel (Ratas (100)); strip.show (); viivitus (500); pinMode (SwitchPinMusic, INPUT); pinMode (SwitchPinSwirl, INPUT); // attachInterrupt (4, Lülitatud, FALLING);
}
// Arduino silmuse meetod
void loop () {SwirlbuttonState = digitalRead (SwitchPinSwirl); // HIGH, kui lüliti on seatud muusika tundlikkusele MusicbuttonState = digitalRead (SwitchPinMusic); // HIGH, kui lüliti on seatud testimustrile, kui (SwirlbuttonState == LOW) {readSamples (); // Käivita muusika proovivõtmise rutiin SwirlbuttonState = digitalRead (SwitchPinSwirl); // Kontrollige, kas lülitit on muudetud} SwirlbuttonState = digitalRead (SwitchPinSwirl); MusicbuttonState = digitalRead (SwitchPinMusic); while (SwirlbuttonState == HIGH) {Tants (); // Käivita pöörleva testimustri rutiin SwirlbuttonState = digitalRead (SwitchPinSwirl); // Kontrollige, kas lüliti on vahetatud
}
}
tühine tants () {
while (SwirlbuttonState == HIGH) {colorWipe (riba. Värv (255, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (riba. Värv (0, 255, 0), 50); // Green SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (riba. Värv (0, 0, 255), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); //colorWipe(strip. Color(0, 0, 0, 255), 50); // Valge RGBW // Saada teatripikslite tagaajamine… SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (riba. Värv (127, 127, 127), 50); // White SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (riba. Värv (127, 0, 0), 50); // Red SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (riba. Värv (0, 0, 127), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); vikerkaar (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); vikerkaaretsükkel (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); teaterChaseVikerkaar (50); SwirlbuttonState = digitalRead (SwitchPinSwirl); }} // Loe ja töötle proovi andmeid Mic void readSamples () {for (int i = 0; i0) {slope = sample - sample [i -1]; } else {kalle = proovid - proovid [N -1]; } // Kontrollige, kas kalle on suurem kui noiseLevel - heli, mis ei ole müratasemel, tuvastatakse, kui (abs (kalle)> noiseLevel) {if (kalle <0) {calcPeriod (i); if (periodChanged == 1) {displayColor (getColor (T)); }}} muu {ledsOff (); // teaterChaseRainbow (50); } perioodFaktor += 1; viivitus (1); }}
tühine arvutusperiood (int i)
{kui (t1 == -1) {// t1 pole määratud t1 = i; } muu {// t1 oli seatud nii, et perioodi int periood = periodFactor*(i - t1); periodChanged = T == periood? 0: 1; T = periood; //Seriaalne.println (T); // lähtesta t1 uueks i väärtuseks t1 = i; perioodFaktor = 0; }}
uint32_t getColor (int periood)
{if (periood == -1) tagastusratas (0); muidu kui (periood> 400) tagastusratas (5); else return ratas (kaart (-1*periood, -400, -1, 50, 255)); }
void fadeOut ()
{jaoks (int i = 0; i <5; i ++) {strip.setBrightness (110 - i*20); strip.show (); // riba uuendamise viivitus (fadeDelay); periodFactor += fadeDelay; }}
void fadeIn ()
{strip.setBrightness (100); strip.show (); // Värskenda riba // tuhmuta värvi (int i = 0; i <5; i ++) {//strip.setBrightness(20*i+30); //strip.show (); // riba uuendamise viivitus (fadeDelay); periodFactor+= fadeDelay; }}
void ledsOff ()
{ hääbuma(); jaoks (int i = 0; i
tühi kuva Värv (uint32_t värv)
{jaoks (int i = 0; i
void oddWheel (uint32_t värv)
{for (int j = 0; j <256; j ++) {// tsükli kõik 256 värvi ratta jaoks (int q = 0; q <3; q ++) {jaoks (uint16_t i = 24; i <36; i = i+3) {rib.setPixelColor (i+q, ratas ((i+j) % 255)); // lülita sisse iga kolmas piksel} riba.show ();
viivitus (1);
jaoks (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, 0); // lülita välja iga kolmas piksel}}} fadeIn (); }
// Täida punktid üksteise järel värviga
void colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i
tühi vikerkaar (uint8_t oota) {
uint16_t i, j;
jaoks (j = 0; j <256; j ++) {jaoks (i = 0; i
// Veidi erinev, see muudab vikerkaare kogu ulatuses võrdselt jaotatuks
void rainbowCycle (uint8_t oota) {uint16_t i, j;
(j = 0; j <256*5; j ++) {// 5 ratta kõigi värvide tsüklit (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, ratas (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); viivitus (oota); }}
// Teatri stiilis roomavad tuled.
void theatreChase (uint32_t c, uint8_t wait) {for (int j = 0; j <10; j ++) {// tee 10 jahtimistsüklit (int q = 0; q <3; q ++) {jaoks (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // lülita sisse iga kolmas piksel} riba.show ();
viivitus (oota);
for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // lülita iga kolmas piksel välja}}}}
// Teatri stiilis roomavad tuled vikerkaareefektiga
void theatreChaseRainbow (uint8_t wait) {for (int j = 0; j <256; j ++) {// tsükli kõik 256 värvi ratta jaoks (int q = 0; q <3; q ++) {jaoks (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, Ratas ((i+j) % 255)); // lülita sisse iga kolmas piksel} riba.show ();
viivitus (oota);
for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // lülita iga kolmas piksel välja}}}}
// Värviväärtuse saamiseks sisestage väärtus 0 kuni 255.
// Värvid on üleminek r - g - b - tagasi r. uint32_t Ratas (bait WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } kui (WheelPos <170) {WheelPos -= 85; tagastusriba. Värv (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; tagastusriba. Värv (WheelPos * 3, 255 - WheelPos * 3, 0); }
tühine Lülitatud () {
strip.show (); readSamples (); }
Enne kommentaarides tapmist (pidage meeles Be Nice'i poliitikat !!) mõistsin pärast selle üleslaadimist, kui lohakas on osa minu koodist. Pole vaja pidevalt testida nii tihvti 4 kui ka tihvti 8 KÕRGE. Kuna lüliti on ühepooluseline kahekordne viskamine, võib ühe väärtuse teisest järeldada: teil on vaja ainult ühte katsetada. Nii et võite läbi vaadata ja eemaldada kõik viited MusicButtonState'i lugemisele ja kirjutamisele ning lihtsalt käivitada kogu asi tõhusamalt, testides SwirlButtonState'i, kui teil on mälupuudus või muud rutiinid. Kuid ülaltoodud kood töötab.
Ja kui keegi soovib neid heliprotseduure kohandada, et tajuda mitte ainult mürataset, vaid ka sagedust, ja kirjutada sujuv kood valgusspektri üles- ja allapoole libistamiseks, vastuseks helispektri liigutustele, jätke kommentaarides link kuidas sa seda tegid.
Nautige!
Soovitan:
RGB LED -MATRIX NEOPIXELI KASUTAMISEL: 8 sammu (koos piltidega)
RGB LED -MATRIX NEOPIXELI KASUTAMISEL: Selles õpetuses näitan teile, kuidas ehitada 5*5 RGB LEDMATRIX, kasutades NEOPIXELI. Selle maatriksi abil saame hüpnotiseerivaid animatsioone, emotikone ja ülitähtsaid tähti väga atraktiivseks kuvada. alustame
EqualAir: õhusaasteanduri käivitatud kantav NeoPixeli ekraan: 7 sammu (piltidega)
EqualAir: kantav NeoPixeli ekraan, mille käivitab õhusaasteandur: Projekti eesmärk on teha kantav t-särk, mis kuvab meeldejääva graafika, kui õhusaaste on üle kehtestatud läve. Graafika on inspireeritud klassikalisest mängust "telliskivimurdjad", kuna auto on nagu mõla, millel on
Ükssarviku sarv NeoPixeli LED -ide ja Arduino Lilypadiga: 8 sammu (piltidega)
Ükssarviku sarv NeoPixeli LED -ide ja Arduino Lilypadiga: Tere kõigile, täna teen 3D -trükitud ükssarviku sarve. Ma nägin ja tegin projekti Adafruit'i veebisaidil umbes aasta tagasi, kuid ma ei leidnud võimalust seda jagada. See näeb hea välja peole minnes ja eriti õhtuti
Ühendage 4 mängu Arduino ja Neopixeli abil: 7 sammu (piltidega)
Ühendage 4 mäng Arduino ja Neopixeli abil: selle asemel, et kinkida lihtsalt riiulilt ostetud mänguasja, soovisin oma vennapoegadele anda ainulaadse kingituse, mille nad saaksid kokku panna ja (loodetavasti) nautida. Kuigi selle projekti Arduino kood võib olla neile liiga raske mõista, on põhimõisted
Arduino Lilypad juhitavad NeoPixeli kõrvarõngad: 7 sammu (piltidega)
Arduino Lilypad kontrollitavad NeoPixeli kõrvarõngad: Tere kõigile, kas te ei taha, et teil oleks nii kena ja lahe kõrvarõngas, kui lähete öösel või pidude ajal välja? Tahaksin seda saada, sellepärast tegin Arduino Lilypad kontrollitud neopikselkõrvarõngad. :) Need kõrvarõngad ei sütti lihtsalt. Neil on sev