Obsah:
- Krok 1: Potrebné diely
- Krok 2: Upravte klobúk
- Krok 3: Pripojte ho
- Krok 4: Programovanie
- Krok 5: Rozšírené a voliteľné: Vnútri kódu
Video: Efektný klobúk LED: 5 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
Vždy som chcel urobiť projekt Arduino, ale nikdy som na to nemal žiadne skvelé nápady, pokiaľ moju rodinu nepozvali na efektnú klobúkovú párty. S dvojtýždňovým predstihom som bol zvedavý, či dokážem naplánovať a zrealizovať pohybovo citlivý LED animovaný klobúk. Ukázalo sa, že môžem! Pravdepodobne som to trochu prehnal, ale celkový projekt stál okolo 80 dolárov. S experimentovaním a nejakým kódovaním to zvládnete za menej peňazí.
Cieľ s klobúkom bol nasledujúci:
- Nechajte sadu svetiel prejsť od stredovej prednej časti klobúka dozadu, po jednom svetle na každej strane
- Zmeňte rýchlosť pohybu svetla diktovanú sklonom klobúka spredu dozadu
- Nechajte svetlá cúvnuť, keď bol klobúčik naklonený nadol (t. J. Napodobňuje gravitačný účinok na svetlá)
- Zmeňte farbu podľa sklonu klobúka zľava doprava
- Vnímajte otrasy a zobrazte špeciálny efekt
- Cítite, ako sa používateľ točí, a ukážte špeciálny efekt
- Nech je to úplne obsiahnuté v klobúku
Krok 1: Potrebné diely
Použil som nasledujúce hlavné súčasti (vrátane nepripojených odkazov na Amazon):
- Mikrokontrolér Teensy LC - vybral som si to oproti bežnému Arduinu kvôli jeho malým rozmerom a so špeciálnym pripojením na ovládanie mojich LED diód, ako aj vďaka silnej knižničnej a komunitnej podpore.
- Polohový snímač Bosch BNO055 - úprimne jeden z prvých, o ktorom som našiel dokumentáciu. Existuje oveľa menej nákladných možností, ale akonáhle prídete na to, čo robí Bosch, urobí to pre vás veľa, čo by ste inak museli urobiť v kóde
- Adresovateľný LED pás WS2812 - vybral som si dĺžku 1 meter so 144 LED diódami na meter. Vďaka tejto hustote svetlo vyzerá skôr, ako by sa pohybovalo, a nie aby sa jednotlivé prvky postupne rozsvietili.
A nasledujúce menšie súčasti:
- Klobúk - postačí akýkoľvek klobúk s klobúkom. Toto je klobúk za 6 dolárov z miestneho obchodu. Ak má šev vzadu, bude jednoduchšie previesť vedenie. Dávajte pozor, či je klobúčik nalepený, pretože to tiež spôsobí ďalšie ťažkosti. Táto je prišitá pozdĺž vrchu, ale spodná časť je ľahko vytiahnuteľná.
- Rezistory 4,7K ohm
- Puzdro na batérie 3x AAA - pomocou 3 batérií AAA je na výstupe napätie presne v rozsahu, aký chce elektronika, čo veci zjednodušuje. AAA sa zmestí do klobúka jednoduchšie ako AA a stále má vynikajúcu výdrž.
- Malý rozchod - použil som pevný drôt, ktorý som položil z predchádzajúceho projektu LED.
- Spájkovačka a spájkovačka
- Nejaký spandex, ktorý zodpovedá vnútornej farbe klobúka a nite
Navrhované, ale voliteľné:
- Rýchle konektory pre vodiče batérie
- Tieto nástroje, ktoré sú pomocnými rukami, sú veľmi malé a ťažko spájkovateľné
Krok 2: Upravte klobúk
Na montáž elektroniky budete potrebovať miesto v klobúku a miesto na batériu. Moja žena pracuje s odevom profesionálne, preto som ju požiadal o radu a pomoc. Nakoniec sme vytvorili dve vrecká so spandexom. Prvé menšie vrecko vpredu je špicaté ako samotný klobúk, takže keď je nainštalovaná elektronika, snímač polohy drží na svojom mieste pomerne dobre, ale v prípade potreby sa dá ľahko odstrániť. Druhé vrecko vzadu drží batériu na mieste.
Vrecká boli posiate niťou, ktorá zodpovedala farbe klobúka, a to všetko pozdĺž korunnej čiary. V závislosti od štýlu klobúka a materiálov je vyrobený touto technikou z YMMV.
Tiež sme zistili, že klobúkový pás je na jednej strane zasunutý do seba a bol v tomto mieste úplne prišitý k klobúku. Museli sme odstrániť pôvodný šev, aby sme mohli spustiť LED diódy pod pásmom. Počas stavby bol držaný na mieste pomocou čapov a po dokončení bol zošitý zodpovedajúcou niťou.
Nakoniec sme otvorili šev na zadnej strane klobúka, ak je zakrytý pásom. Cez tento šev sme zastrčili drôtený zväzok, ktorý bol dodaný s LED diódami, a lemovali sme prvú LED diódu v páse, aby bola priamo na šve. Potom sme omotali LED diódy okolo klobúka a prerezali pásik tak, aby posledná LED bola hneď vedľa prvej. LED pásik je možné držať na mieste iba pomocou klobúkového remienka, v závislosti od vášho pásma a materiálu však možno budete musieť LED diódy zaistiť šitím alebo lepením.
Krok 3: Pripojte ho
Doska Teensy a LED diódy budú pracovať kdekoľvek od 3,3 V do 5 V. Preto som sa rozhodol použiť 3 batérie AAA, výstupné napätie 4,5 V je pekne v tomto rozsahu a majú dostatok času na to, ako som naprogramoval fungovanie LED diód. Mali by ste byť schopní vydržať viac ako 8 hodín behu.
Zapojenie napájania
Kladné a záporné vodiče zo skrinky na batérie a diódy LED som zapojil dohromady a potom spájkoval na vhodnom mieste na Teensy. Pozitíva z batérie je potrebné pripojiť k pravému hornému kolíku Teensy v diagrame (na doske označené Vin) a záporný pól je možné pripojiť k ľubovoľnému kolíku označenému GND. Pohodlne je jeden priamo na opačnej strane dosky alebo hneď vedľa kolíka Vin. Kompletný diagram vývodov pre dosku nájdete v spodnej časti tejto stránky. A v niektorých prípadoch je pri objednávke dosky zahrnutá aj papierová kópia.
Ak plánujete spustiť kód, ktorý má zapnutých iba niekoľko diód LED naraz, môžete LED diódy napájať zo samotného systému Teensy pomocou výstupu 3,3 V a GND, ak sa však pokúsite vytiahnuť príliš veľa energie, môžete poškodiť dosku. Aby ste si poskytli čo najviac možností, je najlepšie zapojiť diódy LED priamo do zdroja batérie.
Zapojenie LED diód
Pre tento projekt som si vybral Teensy LC, pretože má kolík, ktorý výrazne uľahčuje zapojenie adresovateľných diód LED. Na spodnej strane dosky je kolík, ktorý je druhý z ľavého zrkadla, kolík č. 17, ale tiež je na ňom 3,3 V. Toto sa označuje ako príťah a na iných doskách by ste na zaistenie tohto napätia museli zapojiť odpor. V prípade Teensy LC môžete z tohto kolíka jednoducho zapojiť priamo na dátový vodič vašich LED diód.
Zapojenie snímača polohy
Niektoré z dostupných dosiek BNO055 sú na napätie oveľa prísnejšie a chcú iba 3,3 V. Z tohto dôvodu som Vin zapojil na dosku BNO055 z vyhradeného výstupu 3,3 V na Teensy, čo je tretí kolík vpravo. Potom môžete GND na BNO055 pripojiť k akémukoľvek GND na Teensy.
Polohový snímač BNO055 používa na rozhovor s Teensy I2c. I2c vyžaduje prípojky, takže som zapojil dva rezistory 4,7 K ohmu z výstupu 3,3 V na Teensy na piny 18 a 19. Potom som zapojil pin 19 na pin SCL na doske BNO055 a 18 na pin SDA.
Tipy/triky zapojenia
Na tento projekt som použil skôr lanko ako pletené. Jednou výhodou pevných drôtov je spájkovanie s prototypovými doskami, ako sú tieto. Môžete odizolovať drôt, ohnúť ho o 90 stupňov a zasunúť do spodnej časti jedného z terminálov tak, aby prestrihnutý koniec drôtu trčal nad doskou. Potom už potrebujete iba malé množstvo spájky, aby ste ho držali na svorke, a prebytok môžete ľahko odrezať.
S pevným drôtom môže byť ťažšie pracovať, pretože väčšinou chce zostať taký, ako je ohnutý. Pre tento projekt to však bola výhoda. Rezal som a tvaroval svoje drôty tak, aby orientácia polohového senzora bola konzistentná, pretože som do neho vkladal a vyberal elektroniku na vyladenie a programovanie.
Krok 4: Programovanie
Teraz, keď je všetko zostavené, budete potrebovať programovací nástroj kompatibilný s Arduino. Použil som skutočné IDE Arduino (funguje s Linuxom, Mac a PC). Na prepojenie s doskou Teensy budete potrebovať aj softvér Teensyduino. Tento projekt vo veľkej miere využíva knižnicu FastLED na programovanie farieb a polôh LED diód.
Kalibrácia
Prvá vec, ktorú budete chcieť urobiť, je navštíviť vynikajúce úložisko GitHub Kris Winera pre BNO055 a stiahnuť si jeho skicu BNO_055_Nano_Basic_AHRS_t3.ino. Nainštalujte tento kód so spusteným sériovým monitorom a on vám povie, či sa doska BNO055 správne uvedie do režimu online a prejde vlastnými testami. Tiež vás prevedie kalibráciou BNO055, ktorá vám neskôr poskytne konzistentnejšie výsledky.
Začíname s efektnou LED skicou
Kód pre klobúk Fancy LED je konkrétne pripojený a tiež k môjmu úložisku GitHub. Mám v pláne vykonať ďalšie vylepšenia kódu a tie budú zverejnené v repo GitHub. Tu uvedený súbor odzrkadľuje kód v čase zverejnenia tohto pokynu. Po stiahnutí a otvorení náčrtu je niekoľko vecí, ktoré budete musieť zmeniť. Väčšina dôležitých hodnôt, ktoré je potrebné zmeniť, je na samom začiatku ako príkazy #define:
Riadok 24: #define NUM_LEDS 89 - zmeňte na skutočný počet LED diód na vašom páse LED
Riadok 28: #define SERIAL_DEBUG false - pravdepodobne to budete chcieť nastaviť tak, aby ste videli výstup na sériovom monitore
Kód detekcie polohy
Detekcia polohy a väčšina vašich vyladení začína na riadku 742 a prechádza číslom 802. Zo snímača polohy získavame údaje o rozstupe, otáčaní a vybočení a používame ich na nastavovanie hodnôt. V závislosti od spôsobu montáže elektroniky ich možno budete musieť zmeniť. Ak namontujete snímač polohy čipom smerom k hornej časti klobúka a šípka vedľa písmena X vytlačená na doske smeruje k prednej časti klobúka, mali by ste vidieť nasledujúce:
- Smola kýva hlavou
- Roll nakláňa hlavu, napr. dotknite sa ucha ramenom
- Zatáčanie je ktorým smerom. stojíte tvárou v tvár (sever, západ atď.).
Ak je vaša doska namontovaná v inej orientácii, budete musieť vymeniť rozstup/zvitok/zatáčanie, aby sa správali tak, ako by ste chceli.
Ak chcete upraviť nastavenia rolky, môžete zmeniť nasledujúce hodnoty #define:
- ROLLOFFSET: ak je váš klobúk stabilný a vycentrovaný, ak nie je rolka 0, zmeňte to rozdielom. Tj. ak vidíte hod na -20, keď je váš klobúk v strede, urobte týchto 20.
- ROLLMAX: maximálna hodnota, ktorá sa má použiť na meranie role. Najľahšie ho nájdete nasadením klobúka a posunutím pravého ucha k pravému ramenu. Na to budete potrebovať dlhý kábel USB pri použití sériového monitora.
- ROLLMIN: najnižšia hodnota, ktorá sa má použiť na meranie nakláňania, keď nakláňate hlavu doľava
Podobne pre Pitch:
- MAXPITCH - maximálna hodnota, keď pozeráte hore
- MINPITCH - minimálna hodnota, keď sa pozeráte nadol
- PITCHCENTER - hodnota tónu, keď sa pozeráte priamo dopredu
Ak nastavíte SERIALDEBUG na true v hornej časti súboru, mali by ste vidieť aktuálne hodnoty pre výstup Roll/Pitch/Yaw na sériový monitor, aby ste pomohli tieto hodnoty vyladiť.
Ďalšie parametre, ktoré by ste mohli chcieť zmeniť
- MAX_LED_DELAY 35 - najpomalší, akým sa častica LED môže pohybovať. To je v milisekundách. Je to oneskorenie pri prechode z jednej LED na druhú v reťazci.
- MIN_LED_DELAY 10 - pôst, ktorým sa častica LED môže pohybovať. Ako je uvedené vyššie, je to v milisekundách.
Záver
Ak ste zašli tak ďaleko, mali by ste mať plne funkčný a zábavný klobúk LED! Ak s tým chcete urobiť viac, nasledujúca stránka obsahuje pokročilé informácie o zmene nastavení a práci s vlastnými vecami. ako aj nejaké vysvetlenie toho, čo robí zvyšok môjho kódu.
Krok 5: Rozšírené a voliteľné: Vnútri kódu
Detekcia nárazu a rotácie
Detekcia nárazov/otáčok sa vykonáva pomocou funkcií snímača high-G BNO055. Jeho citlivosť môžete vyladiť pomocou nasledujúcich riadkov v initBNO055 ():
- Riadok č. 316: BNO055_ACC_HG_DURATION - ako dlho musí udalosť trvať
- Riadok č. 317: BNO055_ACC_HG_THRESH - aký tvrdý musí byť vplyv
- Riadok č. 319: BNO055_GYR_HR_Z_SET - prahová rýchlosť otáčania
- Riadok č. 320: BNO055_GYR_DUR_Z - ako dlho musí rotácia dokonca trvať
Obe hodnoty sú 8 -bitové binárne, v súčasnosti je vplyv nastavený na B11000000, čo je 192 z 255.
Keď je detekovaný náraz alebo rotácia, BNO055 nastaví hodnotu, ktorú kód hľadá hneď na začiatku slučky:
// Zistí všetky prerušenia, ktoré sú spustené, t. J. Z dôvodu vysokého bajtu intStatus = readByte (BNO055_ADDRESS, BNO055_INT_STATUS); if (intStatus> 8) {impact (); } else if (intStatus> 0) {spin (); }
Ak chcete zmeniť správanie pri náraze, vyhľadajte v kóde riadok neplatný dopad ().
Pomocníci
Vytvoril som jednoduchú pomocnú funkciu (void setAllLeds ()) na rýchle nastavenie všetkých LED diód na jednu farbu. Jeden to použije na ich vypnutie:
setAllLeds (CRGB:: Black);
Alebo si môžete vybrať akúkoľvek farbu rozpoznanú knižnicou FastLED:
setAllLeds (CRGB:: Red);
K dispozícii je tiež funkcia fadeAllLeds (), ktorá všetky LED diódy stlmí o 25%.
Trieda častíc
Aby sa výrazne zjednodušilo zapojenie, chcel som použiť jeden reťazec diód LED, ale nechať ich, aby sa správali ako viacero reťazcov. Pretože to bol môj prvý pokus, chcel som, aby to bolo čo najjednoduchšie, takže s jedným reťazcom budem zaobchádzať ako s dvoma, pričom tam budú stredné LED diódy. Pretože môžeme mať buď párne číslo alebo nepárne číslo, musíme s tým počítať. Začnem niekoľkými globálnymi premennými:
/ * * Premenná a kontajnery pre LED */ LED diódy CRGB [NUM_LEDS]; static unsigned int curLedDelay = MAX_LED_DELAY; static int centerLed = NUM_LEDS / 2; static int maxLedPos = NUM_LEDS / 2; static bool oddLeds = 0; častica statického booluDir = 1; static bool speedDir = 1; dlhé znamienko bez znamienka; nepodpísaný dlhý hueCount;
A nejaký kód v setup ():
ak (NUM_LEDS % 2 == 1) {oddLeds = 1; maxLedPos = NUM_LEDS/2; } else {oddLeds = 0; maxLedPos = NUM_LEDS/2 - 1; }
Ak máme nepárne čísla, chceme použiť 1/2 bod ako stred, v opačnom prípade chceme 1/2 bod - 1. Toto je ľahké vidieť na 10 alebo 11 diódach LED:
- 11 LED diód: 11/2 s celými číslami by sa malo vyhodnotiť do 5. a počítače počítať od 0. Takže 0 - 4 je jedna polovica, 6 - 10 je druhá polovica a 5 je medzi nimi. V tomto prípade zaobchádzame s č. 5 tak, ako keby bola súčasťou oboch, to znamená, že je #1 pre oba virtuálne reťazce diód LED
- 10 LED: 10/2 je 5. Pretože počítače počítajú od 0, musíme jednu odstrániť. Potom máme 0 - 4 pre jednu polovicu a 5 - 9 pre druhú. #1 pre prvý virtuálny reťazec bude 4 a #1 pre druhý virtuálny reťazec bude #5.
Potom v našom časticovom kóde musíme urobiť nejaké počítanie od našej celkovej polohy po skutočné polohy na reťazci LED:
if (oddLeds) {Pos1 = centerLed + proudPos; Pos2 = centerLed - proudPos; } else {Pos1 = centerLed + proudPos; Poz2 = (stredová LED -1) - aktuálnePos; }
Kód má tiež podmienky, kedy častica môže meniť smer, takže to musíme vziať do úvahy aj:
if (particleDir) {if ((prúdPos == NUM_LEDS/2) && oddLeds) {prúdPos = 0; } else if ((prúdPos == NUM_LEDS/2 - 1) && (! oddLeds)) {prúdPos = 0; } else {aktuálnePos ++; }} else {if ((prúdPos == 0) && oddLeds) {prúdPos = centerLed; } else if ((prúdPos == 0) && (! oddLeds)) {prúdPos = centerLed - 1; } else {aktuálnePos--; }}
Na výpočet, ktorá dióda LED by sa mala rozsvietiť ďalej, použijeme zamýšľaný smer (particleDir), ale musíme tiež zvážiť, či sme dosiahli buď skutočný koniec reťazca LED alebo náš stredový bod, ktorý tiež slúži ako koniec pre každý z virtuálnych reťazcov.
Keď sme to všetko zistili, podľa potreby rozsvietime ďalšie svetlo:
if (particleDir) {if (oddLeds) {Pos1 = centerLed + proudPos; Pos2 = centerLed - proudPos; } else {Pos1 = centerLed + proudPos; Poz2 = (stredová LED -1) - aktuálnePos; }} else {if (oddLeds) {Pos1 = centerLed - proudPos; Poz2 = stredová LED + prúdPos; } else {Pos1 = centerLed - proudPos; Poz2 = (stredová -1) + aktuálnePos; }} LED [Poz1] = CHSV (prúdHue, 255, 255); LED [Pos2] = CHSV (prúdHue, 255, 255); FastLED.show ();}
Prečo z toho vôbec robiť triedu? Ako to je, je to veľmi jednoduché a v skutočnosti nemusí byť v triede. Mám však plány do budúcnosti aktualizovať kód tak, aby umožňoval výskyt viac ako jednej častice súčasne, a niektoré pracovať opačne, zatiaľ čo iné idú dopredu. Myslím, že existuje skutočne veľa možností na detekciu rotácie pomocou viacerých častíc.
Odporúča:
Tetrahedrálny LED klobúk (štýl Deichkind) V1: 7 krokov (s obrázkami)
Tetrahedral LED Hat (Deichkind Style) V1: Poznáte nemeckú hudobnú skupinu Deichkind? Som ich veľkým fanúšikom a bol som na niekoľkých koncertoch. Ako súčasť svojich pódiových predstavení tento pás nosí tetrahedrálne klobúky plné LED diód. Už na prvom koncerte pred viac ako 10 rokmi som vedel, že
Klobúk nie klobúk - klobúk pre ľudí, ktorí klobúky naozaj nenosia, ale chceli by ste klobúk: 8 krokov
Klobúk nie klobúk - klobúk pre ľudí, ktorí klobúky naozaj nenosia, ale chceli by mať klobúk: Vždy som si prial, aby som mohol byť klobúkom, ale nikdy som nenašiel klobúk, ktorý by mi vyhovoval. Tento " klobúk nie klobúk " alebo fascinátor, ako sa tomu hovorí, je vrcholné riešenie môjho problému s klobúkom, v ktorom by som sa mohol zúčastniť Kentucky Derby, vákuum
Domáci klobúk RPI: 5 krokov (s obrázkami)
Domáci klobúk RPI: Ahoj, volám sa Boris a toto je môj úplne prvý návod. Mám Raspberry Pi 3B+ a používam ho na jednoduchú domácu automatizáciu, ako je ovládanie televízora, klimatizácie a niektorých svetiel. Nedávno som si kúpil lacný čínsky CNC router a začal vyrábať jednoduché dosky plošných spojov (
Santov triediaci klobúk: 10 krokov (s obrázkami)
Santov triediaci klobúk: Úzko spolupracujeme so Santovou dielňou, aby sme vám priniesli túto inováciu v nezbednej alebo príjemnej komunikácii so zoznamom. Teraz môžete v reálnom čase skontrolovať, či vaše dobré a zlé skutky ovplyvnili vaše postavenie na Santovom nezbednom alebo Nice zozname! Zábavný projekt
Semi-efektný stojan G1: 6 krokov
Semi-Fancy G1 Stand: Stojan pre váš t-mobile G1, ak ho máte, pravdepodobne to funguje aj pre telefóny iPhone, ale urobil som to pre G1, takže … neviem. Funguje to dobre na sledovanie a počúvanie youtube k hudbe, stredový pás, ktorý vidíte, odráža hluk zozadu