Tartalomjegyzék:
- 1. lépés: Vázlatok és hardver
- 2. lépés: A NYÁK -ok tárolása a NYÁK -ban
- 3. lépés: A doboz elkészítése
- 4. lépés: A nyakkendő előkészítése
- 5. lépés: A száloptikák ragasztása
- 6. lépés: A száloptikák átvezetése a nyakkendőn
- 7. lépés: Száloptikák ragasztása a nyakkendőhöz
- 8. lépés: A kód
- 9. lépés: Végtermék
Videó: Starry Sky Led Tie: 9 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Nem sokkal ezelőtt egy dollárboltban találtam egy száloptikás gyerekjátékot, és azon kezdtem gondolkodni, hogy mit tehetnék vele.
Az egyik őrült ötletem az volt, hogy nyakkendőt csináltam a csillagos ég hatására.
Még mindig volt néhány arduino pro mini, adafruit táblák és elemek, amelyek valószínűleg illeszkednek ehhez a projekthez.
Tehát amint találtam egy szép széles nyakkendőt a városom zálogházában, és találtam egy dobozt, amely illeszkedhet a hardverhez, úgy döntöttem, hogy megkeresem és megpróbálom megépíteni.
Ez az oktatóanyag megmutatja, hogyan készítettem.
Működik arduino pro mini, adafruit powerboost 500 töltőn, emmerich icr 18650nh-sp és 5 fehér LED-en. A kód véletlenszerűvé teszi a LED fényerejének változását. (A videó első 40 másodperce háromszoros sebességű)
1. lépés: Vázlatok és hardver
A következő hardvert használom:
- NYÁK jégfehér LED -ekkel és 220 Ohm ellenállással.
-Arduino pro mini (kopogtatót használtam)
-Adafruit Powerboost 500 töltő
-Emmerich Li-ion accu ICR-18650NH-SP
- Optikai szálak (különböző méretekben)
2. lépés: A NYÁK -ok tárolása a NYÁK -ban
Levágtam egy csíkot egy NYÁK -ról, hogy tartsák a LED -eket, és a LED -es csapok segítségével forrasztottam a fő NYÁK -hoz.
Az összes katódot (-) a GND-hez csatlakoztatta, és a csapok felét forrasztásra használta, és a fő NYÁK-ra ragadt.
Az összes anódot (+) ellenállásokhoz csatlakoztatta, és kábelekkel az arduino -hoz.
A LED -eket az alábbi PWM portok egyikéhez kell csatlakoztatni: 3, 5, 6, 9, 10, 11
Hülye én sok hibát követtem el ezzel a projekttel, és elfelejtettem ellenőrizni a megfelelő PWM portokat, ezért később újra kellett határoznom. Magas/Alacsony teszteléssel, így csak később vettem észre.
7 LED -del kezdtem, de csak 6 PWM -port volt, és az egyik újraladott LED meghalt. Megtartottam az 5 működő LED -et, és nem használom a 6 -ot.
3. lépés: A doboz elkészítése
Az akkumulátor, a gomb, a mikro-usb port, az Arduino fejlécei és az optikai szálak kivágásához Bosch GRO-t (például Dremel-t) és fúrót használtam. (használjon porvédő maszkot!)
2 szalaggal ragasztotta az akkumulátort a tokhoz.
Csavarokat használt az Adafruit tábla és a NYÁK rögzítéséhez.
A nyitás és zárás súrlódása károsított néhány vezetéket. Újra kellett forrasztanom őket, és ragasztót kellett használnom, hogy ne forduljon elő újra.
4. lépés: A nyakkendő előkészítése
Eltávolította a varrást a nyakkendő alsó részéről, hogy illeszkedjen a gumilaphoz.
Hogy elrejtsem a hardvert és továbbra is hozzáférhessek hozzá, ha szükséges, úgy döntöttem, hogy cipzárat használok.
Nem vagyok jó varrógéppel, ezért édes anyám cipzárt tett a nyakkendő hátára.
Miután ez megtörtént, ragasztottam a nyakkendőbe a gumilapot. Féltem, hogy túl sok ragasztót használok, ami telíti az anyagot és látható lesz elölről, ezért megpróbáltam kiegyenlíteni és nem túl sokat használni. Összességében jól néz ki, de néhány helyen túl sok vagy túl kevés ragasztót vettem észre, mert átjutott az anyagon, vagy nem nagyon ragadt rá. Szerencsére ez csak alig látható távolról erős fényben.
A doboz és a nyakkendő most kész. Ideje ragasztani a száloptikákat!
5. lépés: A száloptikák ragasztása
A játékban egy nagy köteg száloptikai vezeték volt, amely könnyen szétesett. Először megpróbáltam egyenként ragasztani őket, de hamar észrevettem, hogy jobb lenne kis kötegeket készíteni, és egyszerre ragasztani a LED -hez. Ez megkönnyítené a stabilitást, amíg a ragasztó megszárad. Elrontotta az első LED -et, amely ezt kitalálta.
Feltétlenül használjon átlátszó ragasztót! Az általam használt nagyon lassan száradt, és az első LED -en kipróbált gyorsan száradó ragasztó fehérre vált, így az első LED egyes szálai kevésbé fényesek.
Kis fekete gumilapokat ragasztottam, hogy megakadályozzam a fény szivárgását a tetején, és elválasszam a LED -eket.
Az egyik lap megakadályozta a tok lezárását, ezért hozzáadtam egy gumiszalagot a fedél zárásához.
6. lépés: A száloptikák átvezetése a nyakkendőn
Az aljától kezdve tűvel lyukakat csíptem, és egyenként átvittem a szálakat. Az egyes LED -ek szálai véletlenszerűen terjednek a nyakkendőben.
A hátlapra ragasztottam egy fekete csíkot, amelynek fel kellett mennie a nyakkendő kisebb részére, hogy megtartsa a doboz súlyát, de miután minden vezetéket átengedtem és éreztem a vezetékek feszességét, úgy döntöttem, hogy ragasztom a nyakkendőhöz minden jobb ötlet volt, és levágta a csíkot.
Mivel a játék száloptikai huzaljai olyan rövidek voltak, nehéz volt őket a nyakkendőre felszerelni. Korlátozottan tudtam elhelyezni a dobozt, és nehezen tudtam mindent olyan laposra hozni, ahogy akartam.
7. lépés: Száloptikák ragasztása a nyakkendőhöz
Az összes száloptikai vezetéket ragasztottam a gumilaphoz, hogy megakadályozzam a vezetékek kihúzását a gumilapból, és hogy a nyakkendő lapos legyen.
Annak érdekében, hogy ne ragasszam a bilincset a nyakkendőre, amikor nyomást gyakorolok rá, néhány papírt tettem közé. Nem tűnik nagyszerűnek, de jól működik. És nem látja, ha zárva van.
Miután a ragasztó megszáradt, levágtam az elülső vezetékeket, és egy kicsit levágtam a gumilapot a legmagasabb huzal felett, mert a kötés egy kicsit túl hosszú volt.
A fényképek a fehér inggel készülnek, mielőtt levágom az utolsó gumit.
8. lépés: A kód
A nyakkendőhöz írt kód alatt.
Minden LED -nek van egy "átlaga" (valójában nem átlagos, hanem közepes fényerő).
Amint eléri ezt az átlagot, 3/4 eséllyel úgy dönt, hogy alacsonyabb fényerőre megy. Ezenkívül véletlenszerűen beállít egy új minimális fényerőt, maximális fényerőt, várakozási időt a minimális és maximális fényerősséghez, valamint a sebességet, amelyet minden körben növel (vagy csökkent) (1-255) 5 előre beállított értékről. Ezután egy ciklust fog csinálni, amíg újra el nem éri az átlagot. Egyidejűleg csak 2 LED lehet nagy ciklusban.
Minden állapotot egy egész szám (1-7) képvisel, amely meghatározza, hogy átlag-alacsony, alacsony-átlag, alacsony várakozás, frissítés stb.
A kód arduino -ba történő feltöltésével kapcsolatos információkért nézze meg a www.arduino.cc oldalt
/ * Csillagos égbolt nyakkendő * * Ez egy olyan szkript, amely véletlenszerűen elhalványítja az 5 LED -et az átlagról alacsonyabb * vagy magasabb fényerőre, véletlenszerű alacsonyabb, magasabb és időzítési beállításokkal *, hogy száloptikával együtt csillagos égboltnak tűnjön. * Ebben az esetben ezeket döntetlenben hajtják végre. * * Fel/le esély = 1/4 felfelé, 3/4 lefelé, maximum 2 * felfelé haladva egyszerre. * * Az átlag változatlan marad. * A minimális, maximális és időzítési lehetőségek véletlenszerűen változnak * 5 lehetőségből minden alkalommal, amikor egy LED ismét eléri az átlagot. * * Készítette: Billy Jaspers, 2019. május. *
/ Csapok deklarálása
int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;
// Időváltozók
előjel nélküli long currentTime; előjel nélküli hosszú várakozási idő [5]; unsigned long lastRound;
// LED -es változók
int brightMin [5] = {10, 10, 10, 10, 10}; // Minimális fényerő int brightAvg [5] = {200, 200, 200, 200, 200}; // Átlagos fényerő int brightMax [5] = {240, 240, 240, 240, 240}; // Maximális fényerő int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Várakozási idő int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Várakozási idő int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Várakozási idő növekményben [5] = {2, 5, 4, 5, 2}; // Fényerő -növekedés int currentBright [5] = {200, 230, 210, 210, 235}; // Jelenlegi fényerő
// LED -es változók lehetőségei
int brightMinPos [5] = {5, 20, 40, 5, 20}; // Minimális fényerő lehetőségek int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Maximális fényerő lehetőségek int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Várakozási idő alacsony fényerő mellett int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Várakozási idő nagy fényerejű lehetőségeknél int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Várakozási idő átlagos fényerő -lehetőségeken belül növekménybenPos [5] = {2, 4, 5, 3, 1}; // a fényerő növelése
// Változók
bool indítás = igaz; // El kell indítani az indítási beállításokat?
// Irányváltozók
/* 0 = Várakozás átlagosan 1 = átlag alacsony szintre 2 = várakozás alacsony 3 = alacsony átlag 4 -re = átlag max 5 -re = várakozás max 6 -ra = magas átlag 7 -re = változók frissítése*/ int állapotLED [5] = {0, 0, 0, 0, 0}; int mennyiségHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {hamis, hamis, hamis, hamis, hamis}; // Vár a Led?
// Véletlen változók
hosszú randomNumber; // Hosszú a véletlenszám tárolásához long randomNumberTwo; // Hosszú a második véletlen szám tárolása
// számlálók
int i = 0; // Fő hurok számlálója
void setup () {
Sorozat.kezdet (115200); // Soros randomSeed indítása (analogRead (A0)); // A randomseed beállítása
// Kimenetek deklarálása
pinMode (LED01, KIMENET); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, KIMENET); }
// Adatok írása LED -ekre
void writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, currentBright [1]); analogWrite (LED03, currentBright [2]); analogWrite (LED04, currentBright [3]); analogWrite (LED05, currentBright [4]); }
// Főhurok
void loop () {if (indítás) {// Indítási beállítások lastRound = millis (); // LastRound beállítása a boot writeToLED (); // Indítási adatok írása a LED indításhoz = false; // Indítás kikapcsolása} currentTime = millis (); // Állítsa be a pontos időt
if (currentTime - lastRound> = refreshRate) {
for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Led randomNumber = random (5) frissítése; brightMin = brightMinPos [randomNumber]; // Véletlen érték beállítása a minimális fényerőhöz randomNumber = random (5); brightMax = brightMaxPos [randomNumber]; // Véletlen érték beállítása a maximális fényerőhöz randomNumber = random (5); timeWaitLow = timeLowPos [randomNumber]; // Véletlen érték beállítása az alacsony várakozási időhöz randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Véletlen érték beállítása a magas várakozási időhöz randomNumber = random (5); timeWaitAvg = timeAvgPos [randomNumber]; // Véletlen érték beállítása az átlagos várakozási időhöz randomNumber = random (5); növekmény = növekményPos [véletlenszám]; // Véletlen érték beállítása a növekményhez randomNumber = random (2); // Véletlen érték beállítása randomNumberTwo = random (2); // Véletlen érték beállítása az irányhoz, ha (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Ha a legalacsonyabb ponton: Menjen a Várakozás átlaga oldalra} else {currentBright = currentBright +növekmény ; // Egyéb: Nagyobb fényerő}} else if (statusLED == 2) {// -2- Várakozás alacsony, ha (! StatusWaiting ) {// Ha nem vár, vár: timeTime = millis (); // Várakozási idő állapotának beállításaWaiting = true; // Várakozás megkezdése} else if (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// Ha várakozás ÉS timeWaitAvg letelt: statusWaiting = false; // A várakozás leállítása állapotLED = 3; // A statusLed beállítása frissítésre vár}}} else if (statusLED == 1) {// -1- Átlag alacsonyra állítása, ha (currentBright <= brightMin ) {statusLED = 2; // Ha a legalacsonyabb ponton: Menjen a Várakozás alacsonyba} else {currentBright = currentBright -növekedés ; // Egyéb: Csökkentse a fényerőt}} else if (állapotLED == 6) {// -6- Maximális átlag elérése, ha (currentBright = timeWaitMax ) {// Ha várakozás ÉS timeWaitAvg elmúlt: statusWaiting = hamis; // A várakozás leállítása állapotLED = 6; // A statusLed beállítása frissítésre vár}}} else if (statusLED == 4) {// -4- Átl. Max. Értékre áll, ha (currentBright > = brightMax ) {statusLED = 5; // Ha a legalacsonyabb ponton: Ugrás a Várakozás magasra} else {currentBright = currentBright +növekmény ; // Egyéb: Nagyobb fényerő}} else if (statusLED == 0) {// -0- Várakozás átlagosan, ha (! StatusWaiting ) {// Ha nem vár: waitTime = millis (); // Várakozási idő állapotának beállításaWaiting = true; // Várakozás megkezdése} else if (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// Ha várakozás ÉS timeWaitAvg letelt: statusWaiting = false; // A várakozás leállítása állapotLED = 7; // A statusLed beállítása Frissítésre vár}}} i = 0; lastRound = millis (); // Az utolsó kör befejezésének beállítása. writeToLED (); // Írja be az összes adatot a LED -ekre}}
9. lépés: Végtermék
Szerintem jól sikerült. A nyakkendő nem túl vastag, merev, hosszú vagy nehéz, és a csillaghatás elképesztően jól néz ki.
Ajánlott:
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: 7 lépés (képekkel)
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: Ezt a Rapsberry PI-t tervezem használni egy csomó szórakoztató projektben a blogomban. Nyugodtan nézd meg. Vissza akartam kezdeni a Raspberry PI használatát, de nem volt billentyűzetem vagy egér az új helyen. Rég volt, hogy beállítottam egy málnát
Építsen időjárási irányítópultot a Dark Sky API használatával: 5 lépés (képekkel)
Építsen időjárás -irányítópultot a Dark Sky API használatával: A Dark Sky az időjárás -előrejelzésre és a vizualizációra specializálódott. A Dark Sky legmenőbb aspektusa az időjárási API, amellyel szinte mindenhol a világon lekérhetjük az időjárási adatokat. Nem csak esős vagy napos idő van, hanem hőmérséklet is
Dark Sky API PyPortal & Weather Dashboard: 6 lépés
Dark Sky API PyPortal & Weather Dashboard: Ez a projekt egy olyan, amit korábban csináltunk, a Dark Sky API Weather Dashboard. Ezúttal a Raspberry Pi helyett az Adafruit PyPortal segítségével jelenítjük meg az időjárási adatokat, és küldjük el az adatokat a kezdeti állapotba. Két műszerfal az egyik munkájához
A Holi-Tie: 8 lépés (képekkel)
A Holi-Tie: Ez a Holi-Tie, egy ünnepi nyakkendő, amelyet az ünnepek alatt kell viselni. A Becky Stern Ampli-Tie-jén alapuló Flora táblát használó Holi-Tie Circuit Python Express (CPX) mikrokontrollert használ a NeoPixel animációk és
SKY CAM és légi kamera megoldás: 10 lépés (képekkel)
SKY CAM - Légi kamera Megoldás: Ez az oktatható útmutató bemutatja, hogyan készítettem egy távvezérlő (félautomata) kábelkábel -rendszert a GCSE Electronic Products Project projektemhez az iskolában, és remélhetőleg lehetővé teszi, hogy saját rendszert hozzon létre! Ezt durva útmutatónak szánják