Мазмұны:
- 1 -қадам: схемалар мен аппараттық құралдар
- 2 -қадам: ДК -ді жарық диодты орналастыру
- 3 -қадам: қорапты жасау
- 4 -қадам: галстук дайындау
- 5 -қадам: Fiberoptics желімін жабыстыру
- 6 -қадам: Fiberoptics -ті байланыстыру
- 7 -қадам: фибероптиканы байланыстыру
- 8 -қадам: Кодекс
- 9 -қадам: соңғы өнім
Бейне: Жұлдызды аспан жетекшісі: 9 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Біраз бұрын мен доллар дүкенінен фиброптикасы бар балалар ойыншығын таптым және онымен не істеуге болатынын ойластыра бастадым.
Мен ойлаған ақылсыз идеялардың бірі - жұлдызды аспан әсерімен галстук салу.
Менде әлі де осы жобаға сәйкес келетін бірнеше arduino pro mini, adafruit тақталары мен батареялары болды.
Сондықтан мен өз қаламдағы ломбардтан жақсы кең галстук тауып, жабдыққа сәйкес келетін қорапты тапқан соң, мен оған баруға тырыстым және оны құруға бел будым.
Бұл нұсқаулық менің қалай жасағанымды көрсетеді.
Ол arduino pro mini, adafruit powerboost 500 зарядтағышымен, emmerich icr 18650nh-sp және 5 ақ жарықдиодты шамда жұмыс істейді. Код жарық диодты жарықтылықтың өзгеруін кездейсоқ етеді. (Бейненің алғашқы 40 секундында 3 есе жылдамдық бар)
1 -қадам: схемалар мен аппараттық құралдар
Мен келесі жабдықты қолданамын:
- Мұзды ақ жарық диодтары мен 220 Ом резисторы бар ПХД.
-Arduino pro mini (мен нокаут қолдандым)
-Adafruit Powerboost 500 зарядтағыш
-Эммерих Li-ion accu ICR-18650NH-SP
- оптикалық талшықтар (әр түрлі мөлшерде)
2 -қадам: ДК -ді жарық диодты орналастыру
Мен светодиоды ұстау үшін ПХД жолағын кесіп алдым және оны негізгі ПХД -ге дәнекерлеу үшін жарықдиодты түйреуіштерді қолдандым.
Барлық катодтарды (-) GND-ге қосты және түйреуіштердің жартысын негізгі ПХД-ға жабыстыру үшін қолданды.
Барлық анодтарды (+) резисторларға, ал кабельдермен ардуиноға жалғады.
Светодиодтардың әрқайсысы келесі PWM порттарының біріне қосылуы керек: 3, 5, 6, 9, 10, 11
Мен бұл жобада көптеген қателіктер жібердім және дұрыс PWM портын тексеруді ұмытып кеттім, сондықтан бірнеше кейінірек қайта сатуға тура келді. Жоғары/Төмен сыналған, сондықтан мен мұны кейін ғана байқадым.
Мен 7 светодиодтан бастадым, бірақ тек 6 PWM порты болды, мен қайта сатылған светодиодтардың бірі қайтыс болды. Мен тек 5 жұмыс істейтін светодиодты сақтадым, ал 6 -ын пайдаланбаймын.
3 -қадам: қорапты жасау
Мен Bosch GRO (Dremel сияқты) мен дрельді аккумулятордың пішінін, түймені, микро-USB портын, Arduino мен оптикалық талшықтардың тақырыптарын кесу үшін қолдандым. (шаң маскасын қолданыңыз!)
Батареяны корпусқа 2 жолақпен жабыстырды.
Adafruit тақтасы мен ПХД орнату үшін бұрандалар қолданылды.
Ашылу мен жабылу кезіндегі үйкеліс кейбір сымдарды зақымдады. Мен оларды қайтадан сатуға және оның қайталануын болдырмау үшін желімді қолдануға тура келді.
4 -қадам: галстук дайындау
Резеңке параққа сай болу үшін галстуктің төменгі бөлігінен тігіс алынып тасталды.
Жабдықты жасыру және қажет болған жағдайда оған қол жеткізе алу үшін мен найзағай қолдануды шештім.
Мен тігін машинасын жақсы білмеймін, сондықтан менің тәтті анам галстуктің артына найзағай салды.
Осыдан кейін мен галстукке резеңке парақты жапсырдым. Мен матаны қанықтыратын және алдыңғы жағынан көрінетін желімді тым көп қолданудан қорқатынмын, сондықтан мен оны тегістеуге тырыстым және тым көп пайдаланбадым. Тұтастай алғанда, бұл жақсы көрінеді, бірақ мен бірнеше жерде желімнің тым көп немесе аз екенін байқадым, себебі ол матадан өткен немесе матаны жақсы жабыстырмаған. Бақытымызға орай, бұл жарқын жарықта алыстан ғана көрінеді.
Қорап пен галстук енді дайын. Фибропластиканы желімдейтін уақыт келді!
5 -қадам: Fiberoptics желімін жабыстыру
Ойыншықта бір үлкен талшықты -оптикалық сымдар болды, олар оңай бөлініп кетті. Мен оларды бірте -бірте жапсыруға тырыстым, бірақ көп ұзамай кішкене байламдар жасап, оларды бірден жарық диодқа жабыстырған дұрыс екенін байқадым. Бұл желім құрғағанша оны тұрақты ұстауды жеңілдетеді. Мұны анықтайтын бірінші жарық диодты өшірді.
Мөлдір желімді қолдануды ұмытпаңыз! Мен қолданған өте баяу кептірілді, мен бірінші жарықдиодты қолданған тез кептіретін желім ақ түске боялды, бұл бірінші жарық диодының кейбір талшықтарын жарқыратпады.
Жоғарыдан жарық ағып кетпес үшін және жарықдиодты шамдарды ажырату үшін мен қара түсті резеңке парақтарды жапсырдым.
Парақтардың бірі корпустың жабылуына кедергі келтірді, сондықтан мен қақпақты жабу үшін резеңке таспаны қостым.
6 -қадам: Fiberoptics -ті байланыстыру
Төменнен бастап мен тесіктерді инемен қысып, талшықтарды бірінен соң бірін өткіздім. Жарық диодының әр талшығы галстук бойынша кездейсоқ таралады.
Мен қораптың салмағын ұстап тұру үшін галстуктің кішкене бөлігіне дейін жүру керек болатын артқы жағына қара жолақты жапсырдым, бірақ мен барлық сымдарды өткізіп, сымдардың керілуін сезгеннен кейін мен желімдеуді шештім. галстукке дейін бәрі жақсы идея болды және жолақты кесіп тастады.
Ойыншықтың талшықты -оптикалық сымдары өте қысқа болғандықтан, оларды галстукке бекіту қиын болды. Мен қорапты орналастыруда шектеулі болдым және бәрін қалағандай тегіс етіп жасауға қиналдым.
7 -қадам: фибероптиканы байланыстыру
Резеңке парақтан сымдарды шығарып алмау үшін және галстукті тегіс етіп жасау үшін мен барлық талшықты -оптикалық сымдарды резеңке параққа жапсырдым.
Қысқыш кезінде қысқыштың галстукке жабыспағаныма сенімді болу үшін мен арасына қағазды салып қойдым. Бұл керемет көрінбейді, бірақ жақсы жұмыс істейді. Ал сіз оны жабық кезде көрмейсіз.
Желімді кептіргеннен кейін мен алдыңғы сымдарды кесіп тастадым және ең жоғары сымның үстіндегі резеңке парақты сәл қиып алдым, себебі галстук тым ұзын болды.
Ақ жейдесі бар фотосуреттер резеңкенің соңғы бөлігін кесіп алмас бұрын жасалады.
8 -қадам: Кодекс
Мен галстук үшін жазған кодтың астында.
Барлық светодиодтарда «орташа» бар (шын мәнінде орташа емес, орташа жарықтық).
Бұл орташа мәнге жеткенде, ол 3/4 мүмкіндігімен төмен жарықтылыққа өтуді шешеді. Ол сонымен қатар кездейсоқ түрде жаңа минималды жарықтықты, максималды жарықтықты, минималды және максималды жарықтықты күту уақытын және әр алдын ала орнатылған 5 мәннен әр раундта (1-255) жоғарылататын немесе азайтатын жылдамдықты орнатады. Содан кейін ол қайтадан орташа деңгейге жеткенше цикл жасайды. Бір уақытта тек 2 жарық диоды жоғары циклде болуы мүмкін.
Әр күй бүтін санмен (1-7) ұсынылады, ол орташа төмен, орташа төмен, төмен күту, жаңарту және т.б.
Arduino -ға кодты жүктеу туралы ақпарат алу үшін www.arduino.cc сайтына кіріңіз
/ * Жұлдызды аспан байлауы * * Бұл 5 жарықдиодты кездейсоқ сөндіруге арналған сценарий, ол флипоптикамен қолданылғанда жұлдызды аспанға ұқсайтын кездейсоқ төменгі, жоғары және уақыт параметрлері бар * немесе одан да жоғары жарықтылыққа дейін *. * Бұл жағдайда олар тең есеппен орындалады. * * Жоғары/төмен мүмкіндік = 1/4 жоғары, 3/4 төмен, максимум 2 * максимумға бір мезгілде көтеріледі. * * Орташа көрсеткіш өзгеріссіз қалады. * Минималды, максималды және уақыт опциялары кездейсоқ түрде өзгереді * жарық диоды орташа мәнге қайта жеткен сайын 5 опциядан. * * Билли Джасперс жасаған, мамыр 2019 ж. *
/ Түйреуіштерді жариялау
int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;
// Уақыт айнымалылары
қол қойылмаған ұзақ ағымдағы уақыт; қол қойылмаған ұзақ күту уақыты [5]; қол қойылмаған ұзақ lastRound;
// Жарық диодты айнымалылар
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}; // Күту уақыты int increment [5] = {2, 5, 4, 5, 2}; // Жарықтықты ұлғайту int currentBright [5] = {200, 230, 210, 210, 235}; // Ағымдағы жарықтық
// Жарықдиодты айнымалылардың мүмкіндіктері
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 күйіLED [5] = {0, 0, 0, 0, 0}; int amountHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {жалған, жалған, жалған, жалған, жалған}; // Лед күтіп тұр ма?
// Кездейсоқ шамалар
ұзақ кездейсоқ сан; // Ұзын кездейсоқ санды сақтау үшін long randomNumberTwo; // Екінші кездейсоқ санды сақтау ұзақ
// есептегіштер
int i = 0; // Негізгі цикл үшін есептегіш
жарамсыз орнату () {
Serial.begin (115200); // Сериялық randomSeed (analogRead (A0)) бастау; // Кездейсоқ тұқымдарды орнатыңыз
// Шығарылымдарды жариялау
pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, OUTPUT); }
// Светодиодтарға деректерді жазу
жарамсыз writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, currentBright [1]); analogWrite (LED03, currentBright [2]); analogWrite (LED04, currentBright [3]); analogWrite (LED05, currentBright [4]); }
// Негізгі цикл
void loop () {if (іске қосу) {// Іске қосу параметрлері lastRound = millis (); // lastRound жүктеу writeToLED () үшін орнатыңыз; // LED стартқа бастапқы деректерді жазу = жалған; // Іске қосуды өшіру} currentTime = millis (); // Ағымдағы уақытты орнатыңыз
if (currentTime - lastRound> = refreshRate) {
for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Led randomNumber жаңарту = кездейсоқ (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); increment = incrementPos [randomNumber]; // randomNumber = random (2) өсу мәні үшін кездейсоқ мәнді орнатыңыз; // randomNumberTwo = random (2) бағыты үшін кездейсоқ мәнді орнатыңыз; // Бағыт үшін кездейсоқ мәнді орнатыңыз, егер (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Егер ең төменгі нүктеде: Күтетін орташа} өтіңіз} else {currentBright = currentBright +қадам ; // Басқасы: Жоғары жарықтық}} else if (statusLED == 2) {// -2- Егер күту төмен болса (! StatusWaiting ) {// Күтпеген болсаңыз: waitTime = millis (); // Күту уақытының күйін орнатыңызWaiting = true; // Күтуді бастаңыз} else if if (statusWaiting && currentTime-waitTime > = timeWaitLow ) {// Егер күту мен timeWaitAvg өткен болса: statusWaiting = жалған; // Күтуді тоқтатуLELE = 3; // StatLed күйін Жаңартуды күту}} жағдайына қойыңыз, егер басқа болса (statusLED == 1) {// -1- Егер (currentBright <= brightMin ) {statusLED = 2; // Егер ең төменгі нүктеде: Күту деңгейіне өтіңіз} else {currentBright = currentBright -increment ; // Басқасы: Төменгі жарықтылық}} else if (statusLED == 6) {// -6- Егер Максимумға орташа мәнге ауысса, егер (currentBright = timeWaitMax ) {// Егер күту мен уақытты күту кезінде Awg өткен болса: statusWaiting = жалған; // Күту күйін тоқтатуLED = 6; // StatLed күйін Жаңартуды күту}} жағдайына орнатыңыз, егер басқа болса (statusLED == 4) {// -4- Егер (currentBright > = brightMax ) {statusLED = 5; // Егер ең төменгі нүктеде: Күту режиміне өтіңіз} else {currentBright = currentBright +increment ; // Басқасы: Жоғары жарықтық}} else if (statusLED == 0) {// -0- Орташада күту, егер (! StatusWaiting ) {// Күтпесе: waitTime = миллис (); // Күту уақытының күйін орнатыңызWaiting = true; // Күтуді бастаңыз} else if if (statusWaiting && currentTime-waitTime > = timeWaitAvg ) {// Егер күту мен уақыт күткен болса: statusWaiting = жалған; // Күтуді тоқтатуLELE = 7; // StatLed күйін Жаңартуды күту күйіне қою}}} i = 0; lastRound = millis (); // Соңғы раунд аяқталған кезде орнатыңыз. writeToLED (); // Барлық деректерді светодиодқа жазыңыз}}
9 -қадам: соңғы өнім
Менің ойымша, бұл жақсы нәтиже берді. Галстук тым қалың емес, қатты, ұзын немесе ауыр емес және жұлдызды әсер керемет көрінеді.
Ұсынылған:
Музыкалық реактивті талшықты -оптикалық жұлдызды төбені орнату: 11 қадам (суреттермен)
Музыкалық реактивті талшықты -оптикалық жұлдызды төбеге қондыру: сіздің үйіңізде галактиканың бір бөлігін алғыңыз келе ме? Төменде қалай жасалынғанын біліңіз! Бірнеше жылдар бойы бұл менің арманымдағы жоба болды және ақыры аяқталды. Аяқтауға біраз уақыт кетті, бірақ нәтиже соншалықты қанағаттанарлық болды, мен оған тұрарлық екеніне сенімдімін
Интерактивті акрил түнгі аспан: 6 қадам
Интерактивті акрил түнгі аспаны: түнгі көріністің керемет суреті сіздің бөлмеңізге немесе қонақ бөлмеңізге қарамастан интерьер дизайнын жақсарта алады. Бұл жоба сіздің бөлмеңізді өз қолыңызбен таңдауды ұсынады. Өнерлік талантыңызды жинаңыз және аяқтау үшін менің қадамдарымды орындаңыз
Аспан камерасы үшін Raspberry Pi шық жылытқышы: 7 қадам
Аспандағы камераға арналған Raspberry Pi шық жылытқышы: [Қолданылатын реленің өзгеруін 7-қадамға қараңыз] Бұл Томас Жакиннің тамаша нұсқаулығынан (аспанның сымсыз байланыс камерасынан) кейін мен жасаған аспан камерасының жаңартылуы. аспан камераларында пайда болады (және телескоптарда да) шық шық болады
TESS-W түнгі аспан жарықтығының фотометрі: 8 қадам (суреттермен)
TESS-W түнгі жарықтың фотометрі: TESS-W-жарықтың ластануын зерттеу үшін түнгі аспан жарықтығын өлшеуге және үздіксіз бақылауға арналған фотометр. Ол STARS4ALL H2020 Еуропалық жобасы кезінде ашық дизайнмен (аппараттық және бағдарламалық қамтамасыз ету) жасалған. TESS-W фотометрі
Светодиодтар мен AT Tiny көмегімен жыпылықтайтын жұлдызды құру үшін «Жылтылдау, жарқырау, кішкентай жұлдыз» ойнау арқылы жыпылықтайтын жұлдызды жасау: 6 қадам
«Жарқырау, жарқырау, кішкентай жұлдыз» ойнауымен жыпылықтайтын жұлдызды жасау үшін светодиодтар мен AT Tiny -ді қолдану: Бұл схема жыпылықтайтын жұлдызды және & ampquotЖарқылдаған, жарқыраған " Келесі қадамды схемаға және шолуға қараңыз