Съдържание:
- Стъпка 1: Схеми и хардуер
- Стъпка 2: Направете печатната платка да хоства светодиодите
- Стъпка 3: Изработка на кутията
- Стъпка 4: Подготовка на вратовръзката
- Стъпка 5: Лепене на влакната
- Стъпка 6: Прокарване на влакна чрез вратовръзката
- Стъпка 7: Лепене на влакна за вратовръзката
- Стъпка 8: Кодът
- Стъпка 9: Краен продукт
Видео: Звездно небе Led Tie: 9 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Преди малко намерих детска играчка с фиброептици в доларов магазин и започнах да мисля какво мога да направя с нея.
Една от лудите идеи, които имах, беше да направя вратовръзка с ефекта на звездно небе.
Все още имах няколко arduino pro mini, adafruit дъски и батерии, които вероятно биха отговаряли на този проект.
Така че веднага щом намерих хубава широка вратовръзка в заложна къща в моя град и намерих кутия, която може да отговаря на хардуера, реших да отида за нея и да се опитам да я изградя.
Тази инструкция ви показва как го направих.
Той работи на arduino pro mini, adafruit powerboost 500 зарядно устройство, emmerich icr 18650nh-sp и 5 бели светодиода. Кодът прави промяната на яркостта на светодиода произволна. (Първите 40 секунди от видеоклипа са с 3x скорост)
Стъпка 1: Схеми и хардуер
Използвам следния хардуер:
- печатна платка с ледено бели светодиоди и 220 ома резистори.
-Arduino pro mini (използвах нокаут)
-Зарядно устройство Adafruit Powerboost 500
-Emmerich Li-ion accu ICR-18650NH-SP
- Оптични влакна (в различни размери)
Стъпка 2: Направете печатната платка да хоства светодиодите
Отрязах лента от печатна платка, за да държа светодиодите и използвах LED щифтовете, за да я запоя към основната платка.
Свърза всички катоди (-) към GND и използва половината от щифтовете за запояване, залепен към основната печатна платка.
Свържете всички аноди (+) към резистори и с кабели към arduino.
Всеки от светодиодите трябва да бъде свързан към един от следните ШИМ портове: 3, 5, 6, 9, 10, 11
Глупакът ми направи много грешки с този проект и забравих да проверя правилните PWM портове, така че трябваше да препаявам няколко по -късно. Тествано с High/Low, така че забелязах това по -късно.
Започнах със 7 светодиода, но имаше само 6 PWM порта и един от светодиодите, които препаявах, умря. Току -що запазих 5 -те работещи светодиода и не използвам 6 -ия.
Стъпка 3: Изработка на кутията
Използвах Bosch GRO (като Dremel) и бормашина, за да изрежа формата на батерията, бутона, micro-usb порта, заглавките от Arduino и оптичните влакна. (използвайте маска за прах!)
Залепи батерията към кутията с 2 ленти.
Използвани винтове за монтиране на дъската Adafruit и печатната платка.
Триенето при отваряне и затваряне повреди някои проводници. Трябваше да ги препая и да използвам лепило, за да предотвратя това да се случи отново.
Стъпка 4: Подготовка на вратовръзката
Премахнахте шева от долната част на вратовръзката, за да пасне на гумения лист.
За да скрия хардуера и да имам достъп до него, ако е необходимо, реших да използвам цип.
Не се справям с шевна машина, така че милата ми майка сложи цип на гърба на вратовръзката.
След като това беше направено, залепих гумения лист в вратовръзката. Страхувах се да не използвам твърде много лепило, което да насити тъканта и да се вижда отпред, затова се опитах да го изравня и да не използвам прекалено много. Като цяло изглежда добре, но на няколко места забелязах прекалено много или твърде малко лепило, защото то проникна през тъканта или не залепи тъканта много добре. За щастие това е едва видимо от близко разстояние при ярка светлина.
Кутията и вратовръзката вече са готови. Време е да залепите влакната!
Стъпка 5: Лепене на влакната
Играчката имаше един голям сноп оптични проводници, които лесно се разпаднаха. Опитах първо да ги залепя един по един, но скоро забелязах, че е по -добре да направя малки снопове и да ги залепя към светодиода наведнъж. Това би улеснило поддържането му стабилно, докато лепилото изсъхне. Побърка първия светодиод, който разбра това.
Не забравяйте да използвате прозрачно лепило! Този, който използвах, изсъхна много бавно и бързосъхнещото лепило, което опитах на първия светодиод, стана бяло, което направи някои влакна от първия светодиод по -малко ярки.
Залепих малки черни гумени листове, за да предотвратя изтичане на светлина отгоре и да отделя светодиодите.
Един от чаршафите попречи на калъфа да се затвори, затова добавих гумена лента, за да държа капака затворен.
Стъпка 6: Прокарване на влакна чрез вратовръзката
Започвайки от дъното, прищипвах дупки с игла и прокарвах влакната едно по едно. Влакната на всеки светодиод се разпределят произволно по вратовръзката.
Залепих черна лента на гърба, която трябваше да стигне чак до по -малката част на вратовръзката, за да запази теглото на кутията, но след като сложих всички проводници и усетих напрежението на проводниците, реших да залепя всичко с вратовръзката беше по -добра идея и отряза лентата.
Тъй като оптичните проводници от играчката бяха толкова къси, беше трудно да ги поставите по цялата вратовръзка. Бях ограничен в позиционирането на кутията и ми беше трудно да направя всичко толкова плоско, колкото исках.
Стъпка 7: Лепене на влакна за вратовръзката
Залепих всички оптични проводници към гумения лист, за да предотвратя изваждането на проводниците от гумения лист и да направя вратовръзката плоска.
За да съм сигурен, че не съм залепил скобата към вратовръзката при натиск върху нея, сложих малко хартия между тях. Не изглежда толкова добре, но работи добре. И не го виждате, когато е затворен.
След като лепилото изсъхна, отрязах проводниците отпред и отрязах малко гумената ламарина точно над най -високата жица, тъй като вратовръзката беше твърде дълга.
Снимки с бялата риза се правят преди да отрежа последния къс каучук.
Стъпка 8: Кодът
Под кода, който написах за вратовръзката.
Всички светодиоди имат зададена "средна стойност" (всъщност не средна, а средна яркост).
Веднага щом достигне тази средна стойност, тя ще реши с шанс 3/4 да премине към по -ниска яркост. Той също така на случаен принцип задава нова минимална яркост, максимална яркост, време за изчакване за минимална и максимална яркост и скоростта, която увеличава или намалява на всеки кръг (1-255) от 5 предварително зададени стойности. След това ще направи цикъл, докато отново достигне средната стойност. Само 2 светодиода могат да бъдат във висок цикъл едновременно.
Всяко състояние е представено с целочислена стойност (1-7), определяща дали ще бъде средно-ниско, ниско-средно, чакащо ниско, актуализиране и т.н.
За информация относно качването на код в arduino, моля, разгледайте www.arduino.cc
/ * Starry Sky Tie * * Това е скрипт за случайно избледняване на 5 светодиода от средна до по -ниска * или по -висока яркост с произволни по -ниски, по -високи и времеви настройки *, за да изглежда като звездно небе, когато се използва с оптични влакна. * В този случай те ще бъдат изпълнени в равен резултат. * * Възможност за нагоре/надолу = 1/4 нагоре, 3/4 надолу, с максимум 2 * нагоре до максимум едновременно. * * Средната стойност остава същата. * Минималните, максималните и времевите опции се променят на случаен принцип * от 5 опции всеки път, когато светодиод отново достигне средната стойност. * * Създадено от Billy Jaspers, май 2019 г. *
/ Деклариране на щифтове
int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;
// Променливи на времето
unsigned long currentTime; без подпис дълго чакане [5]; unsigned long lastRound;
// LED променливи
int brightMin [5] = {10, 10, 10, 10, 10}; // Минимална яркост int brightAvg [5] = {200, 200, 200, 200, 200}; // Средна яркост int brightMax [5] = {240, 240, 240, 240, 240}; // Максимална яркост int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Време на изчакване int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Време на изчакване int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Време на изчакване intrement [5] = {2, 5, 4, 5, 2}; // Увеличаване на яркостта int currentBright [5] = {200, 230, 210, 210, 235}; // Текуща яркост
// Възможности за LED променливи
int brightMinPos [5] = {5, 20, 40, 5, 20}; // Минимални възможности за яркост int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Максимални възможности за яркост int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Време на изчакване при възможности за ниска яркост int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Време на изчакване при високи възможности за яркост int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Време на изчакване при средни възможности за яркост int incrementPos [5] = {2, 4, 5, 3, 1}; // увеличаване на възможностите за яркост
// Променливи
bool стартиране = вярно; // Трябва ли да се стартират стартовите настройки?
// Насочени променливи
/* 0 = Изчакване при средно 1 = отиване на средно до ниско 2 = изчакване ниско 3 = отиване ниско до средно 4 = преминаване към средно до макс 5 = изчакване при макс 6 = преминаване към високо до средно 7 = актуализиране на променливи*/ int statusLED [5] = {0, 0, 0, 0, 0}; int сумиHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {false, false, false, false, false}; // Led чака ли?
// Случайни променливи
long randomNumber; // Дълъг за съхраняване на произволен номер дълъг randomNumberTwo; // Дълъг за съхраняване на второто произволно число
// броячи
int i = 0; // Брояч за основния цикъл
void setup () {
Serial.begin (115200); // Стартиране на сериен randomSeed (analogRead (A0)); // Задайте произволно семе
// Деклариране на изходи
pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, OUTPUT); }
// Записване на данни в светодиоди
void writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, currentBright [1]); analogWrite (LED03, currentBright [2]); analogWrite (LED04, currentBright [3]); analogWrite (LED05, currentBright [4]); }
// Основен цикъл
void loop () {if (startup) {// Настройки за стартиране lastRound = millis (); // Задайте lastRound за зареждане writeToLED (); // Записване на начални данни в LED стартиране = false; // Изключване на стартиране} currentTime = millis (); // Задаване на текущ час
if (currentTime - lastRound> = refreshRate) {
for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Актуализиране на Led randomNumber = random (5); brightMin = brightMinPos [randomNumber]; // Задайте произволна стойност за минимална яркост randomNumber = random (5); brightMax = brightMaxPos [randomNumber]; // Задайте произволна стойност за максимална яркост randomNumber = random (5); timeWaitLow = timeLowPos [randomNumber]; // Задайте произволна стойност за ниско време на изчакване randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Задайте произволна стойност за голямо време на изчакване randomNumber = random (5); timeWaitAvg = timeAvgPos [randomNumber]; // Задайте произволна стойност за средно време на изчакване randomNumber = random (5); инкремент = прирастванеPos [случаен номер]; // Задайте произволна стойност за нарастваща стойност randomNumber = random (2); // Задайте произволна стойност за посока randomNumberTwo = random (2); // Задайте произволна стойност за посоката, ако (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Ако в най -ниската точка: Отидете на Waiting Avg} else {currentBright = currentBright +увеличение ; // Друго: По -висока яркост}} else if (statusLED == 2) {// -2- Waiting Low if (! StatusWaiting ) {// Ако не се чака: waitTime = millis (); // Задаване на време за изчакване statusWaiting = true; // Започнете чакане} else if (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// Ако чакането AND timeWaitAvg е преминало: statusWaiting = false; // Спрете изчакването statusLED = 3; // Задайте statusLed на Изчакване на актуализация}} else if (statusLED == 1) {// -1- Going Avg to Low if (currentBright <= brightMin ) {statusLED = 2; // Ако в най-ниската точка: Отидете на Waiting Low} else {currentBright = currentBright -инкремент ; // Друго: По -ниска яркост}} else if (statusLED == 6) {// -6- Преминаване на Max към Avg if (currentBright = timeWaitMax ) {// Ако чакането AND timeWaitAvg е преминало: statusWaiting = невярно; // Спрете изчакването statusLED = 6; // Задайте statusLed на Изчакване за актуализация}} else if (statusLED == 4) {// -4- Going Avg to Max if (currentBright > = brightMax ) {statusLED = 5; // Ако в най -ниската точка: Отидете на Waiting High} else {currentBright = currentBright +увеличение ; // В противен случай: По -висока яркост}} else if (statusLED == 0) {// -0- Изчакване при средно if (! StatusWaiting ) {// Ако не се чака: waitTime = millis (); // Задаване на време за изчакване statusWaiting = true; // Започнете чакане} else if (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// Ако чакането AND timeWaitAvg е преминало: statusWaiting = false; // Спрете изчакването statusLED = 7; // Задайте statusLed на Изчакване на актуализация}}} i = 0; lastRound = millis (); // Задайте, когато последният кръг приключи. writeToLED (); // Запишете всички данни на светодиодите}}
Стъпка 9: Краен продукт
Мисля, че се получи добре. Вратовръзката не е твърде дебела, твърда, дълга или тежка и ефектът на звездата изглежда невероятно.
Препоръчано:
Интерактивно акрилно нощно небе: 6 стъпки
Интерактивно акрилно нощно небе: Великолепната нощна сцена може да подобри вашия интериорен дизайн, независимо дали става въпрос за вашата стая или хол. Този проект ви предлага избор за проектиране на вашата стая със собствените си ръце. Съберете своя талант в изкуството и следвайте стъпките ми, за да завършите
Нагревател за роса Raspberry Pi за камера за цялото небе: 7 стъпки
Нагревател за роса Raspberry Pi за All-sky камера: [Вижте стъпка 7 за промяна на използваното реле] Това е надстройка до камера за all-sky, която създадох след отличното ръководство на Thomas Jaquin (Wireless All Sky Camera) Често срещан проблем, който на небесните камери (и телескопите също) се случва, че росата ще
Преносима метеорологична станция за наблюдатели на нощното небе: 7 стъпки (със снимки)
Преносима метеорологична станция за наблюдатели на нощното небе: Светлинното замърсяване е един от многото проблеми в света. За да разрешим този проблем, трябва да знаем колко е замърсено нощното небе с изкуствена светлина. Много студенти с учители по света се опитват да измерват светлинното замърсяване със скъпи сензори. Реших да
Фотометър за яркост на нощното небе TESS-W: 8 стъпки (със снимки)
TESS-W Фотометър за яркост на нощното небе: TESS-W е фотометър, предназначен за измерване и непрекъснато наблюдение на яркостта на нощното небе за изследвания на замърсяването на светлината. Той е създаден по време на европейския проект STARS4ALL H2020 с отворен дизайн (хардуер и софтуер). Фотометърът TESS-W
Звездно палто: 6 стъпки (със снимки)
Star Coat: Исках да играя с носими технологии от известно време и това е първият ми опит. Той съчетава интереса ми към електрониката за хоби с любовта ми към космоса и лъскавите неща и бих препоръчал да изпробвам този проект на всеки, който иска констелати