Orodha ya maudhui:

Kitanda kilichowekwa na Starry Sky: Hatua 9 (na Picha)
Kitanda kilichowekwa na Starry Sky: Hatua 9 (na Picha)

Video: Kitanda kilichowekwa na Starry Sky: Hatua 9 (na Picha)

Video: Kitanda kilichowekwa na Starry Sky: Hatua 9 (na Picha)
Video: 28 панфиловцев. Самая полная версия. Panfilov's 28 Men (English subtitles) 2024, Novemba
Anonim
Image
Image
Starry Anga Iliyofungiwa
Starry Anga Iliyofungiwa
Starry Anga Iliyofungiwa
Starry Anga Iliyofungiwa

Muda mfupi uliopita nilipata toy ya watoto na fiberoptics kwenye duka la dola, na nikaanza kufikiria ni nini ningeweza kufanya nayo.

Moja ya maoni ya wazimu niliyokuwa nayo, ilikuwa kutengeneza tie na athari ya anga yenye nyota.

Bado nilikuwa na arduino pro mini's, bodi za adafruit na betri zilizowekwa karibu ambazo zingefaa mradi huu.

Kwa hivyo mara tu nilipopata tai nzuri pana kwenye duka la kuuza katika mji wangu na kupata sanduku ambalo linaweza kutoshea vifaa, niliamua kwenda kwa hiyo na kujaribu kuijenga.

Hii inaweza kufundisha jinsi nilivyoifanya.

Inaendesha mini arduino pro, adafruit powerboost 500 sinia, emmerich icr 18650nh-sp na 5 nyeupe za LED. Nambari hufanya mabadiliko ya mwangaza wa LED kuwa ya nasibu. (Sekunde 40 za kwanza za video ni kasi ya 3x)

Hatua ya 1: Skematiki na vifaa

Skimu na vifaa
Skimu na vifaa
Skimu na vifaa
Skimu na vifaa

Ninatumia vifaa vifuatavyo:

- PCB yenye LED nyeupe za barafu na vipingao vya 220 Ohm.

- Arduino pro mini (nilitumia knockoff)

- Chaja ya Adafruit Powerboost 500

- Emmerich Li-ion accu ICR-18650NH-SP

- nyuzi za macho (kwa ukubwa tofauti)

Hatua ya 2: Kufanya PCB Inakaribisha LED

Kufanya PCB kuwa mwenyeji wa LED
Kufanya PCB kuwa mwenyeji wa LED
Kufanya PCB kuwa mwenyeji wa LED
Kufanya PCB kuwa mwenyeji wa LED
Kufanya PCB kuwa mwenyeji wa LED
Kufanya PCB kuwa mwenyeji wa LED

Nilikata ukanda kutoka kwa PCB kushikilia taa za LED na nikatumia pini za LED kuziunganisha kwa PCB kuu.

Iliunganisha cathode zote (-) kwa GND, na ikatumia nusu ya pini kuziunganisha kwa PCB kuu.

Imeunganisha anode zote (+) kwa vipinga, na na nyaya kwa arduino.

LED kila moja inapaswa kushikamana na moja ya bandari zifuatazo za PWM: 3, 5, 6, 9, 10, 11

Silly nilifanya makosa mengi na mradi huu na kusahau kuangalia bandari sahihi za PWM, kwa hivyo ilibidi nizibadilishe tena baadaye. Ilijaribiwa na Juu / Chini kwa hivyo niliona hii baadaye tu.

Nilianza na 7 ya LED, lakini kulikuwa na bandari 6 tu za PWM na moja ya taa za LED nilizouza tena zilikufa. Nimeweka tu LED 5 zinazofanya kazi na situmii 6.

Hatua ya 3: Kutengeneza Sanduku

Kutengeneza Sanduku
Kutengeneza Sanduku
Kutengeneza Sanduku
Kutengeneza Sanduku
Kutengeneza Sanduku
Kutengeneza Sanduku
Kutengeneza Sanduku
Kutengeneza Sanduku

Nilitumia Bosch GRO (kama Dremel) na kuchimba visima kukata umbo la betri, kitufe, bandari ndogo ya usb, vichwa vya kichwa kutoka Arduino na nyuzi za macho. (tumia kinyago cha vumbi!)

Glued betri kwa kesi na bendi 2.

Vipuli vilivyotumiwa kupandisha bodi ya Adafruit na PCB.

Msuguano kutoka kufungua na kufunga uliharibu waya kadhaa. Ilinibidi kuziuza tena na kutumia gundi kuizuia isitokee tena.

Hatua ya 4: Kuandaa Tie

Kuandaa Tie
Kuandaa Tie
Kuandaa Tie
Kuandaa Tie
Kuandaa Tie
Kuandaa Tie

Imeondoa kushona kutoka sehemu ya chini ya tai ili kutoshea karatasi ya mpira.

Ili kuficha vifaa na bado kuweza kuipata ikiwa inahitajika niliamua kutumia zipu.

Sina uzuri na mashine ya kushona, kwa hivyo mama yangu mtamu aliweka zipu nyuma ya tai.

Baada ya hayo kufanywa, niliunganisha karatasi ya mpira kwenye tai. Niliogopa kutumia gundi nyingi ambayo ingejaa kitambaa na kuonekana kutoka mbele, kwa hivyo nilijaribu kuitoa na sio kutumia sana. Kwa ujumla inaonekana nzuri, lakini katika maeneo machache niligundua gundi nyingi au kidogo sana, kwa sababu ilikuja kupitia kitambaa au haikung'ata kitambaa vizuri sana. Kwa bahati nzuri hii haionekani kabisa kutoka umbali wa karibu kwa mwangaza mkali.

Sanduku na tai sasa imefanywa. Wakati wa gundi fiberoptics!

Hatua ya 5: Gundi ya Nyuzi za Nyuzi

Gundi ya nyuzi za nyuzi
Gundi ya nyuzi za nyuzi
Gundi ya Nyuzi za Nyuzi
Gundi ya Nyuzi za Nyuzi
Gundi ya Nyuzi za Nyuzi
Gundi ya Nyuzi za Nyuzi
Gundi ya Nyuzi za Nyuzi
Gundi ya Nyuzi za Nyuzi

Toy ilikuwa na waya moja kubwa ya nyuzi za nyuzi ambazo zilivunjika kwa urahisi. Nilijaribu kuziweka gundi moja baada ya nyingine, lakini hivi karibuni niligundua itakuwa bora kutengeneza vifungu vidogo na kushikamana na hizo kwa LED mara moja. Hiyo ingefanya iwe rahisi kuiweka thabiti hadi gundi ikauke. Iliwasilisha LED ya kwanza ikigundua hii.

Hakikisha kutumia gundi ya uwazi! Niliyotumia kavu polepole sana na gundi ya kukausha haraka nilijaribu kwenye LED ya kwanza ikawa nyeupe, ikitengeneza nyuzi kutoka kwa mwangaza wa kwanza wa LED.

Niliunganisha shuka ndogo nyeusi za mpira ili kuzuia kuvuja kwa nuru juu na kutenganisha LED.

Shuka moja lilizuia kesi hiyo kufungwa kwa hivyo nikaongeza bendi ya mpira ili kufunika kifuniko.

Hatua ya 6: Kuweka Fiberoptiki Kupitia Tie

Kuweka Fiberoptiki Kupitia Tie
Kuweka Fiberoptiki Kupitia Tie
Kuweka Fiberoptiki Kupitia Tie
Kuweka Fiberoptiki Kupitia Tie
Kuweka Fiberoptiki Kupitia Tie
Kuweka Fiberoptiki Kupitia Tie

Kuanzia chini, nilibana mashimo na sindano na kuweka nyuzi kupitia moja kwa moja. Nyuzi za kila LED zinaenea bila mpangilio kwenye tai.

Niliunganisha mkanda mweusi mgongoni ambao ulitakiwa kwenda hadi sehemu ndogo ya tai ili kuweka uzito wa sanduku, lakini baada ya kupitisha waya zote na kuhisi mvutano wa waya niliamua kuunganishwa kila kitu kwa tie ilikuwa wazo bora na kukata ukanda.

Kwa kuwa waya za nyuzi kutoka kwa toy zilikuwa fupi sana, ilikuwa ngumu kuzifunga kote kwenye tai. Nilikuwa mdogo katika kuweka sanduku na nilikuwa na wakati mgumu kutengeneza kila kitu kama gorofa kama nilivyotaka.

Hatua ya 7: Gundi ya nyuzi za nyuzi kwa Tie

Gundi ya nyuzi za nyuzi kwa Tie
Gundi ya nyuzi za nyuzi kwa Tie
Gundi ya nyuzi za nyuzi kwa Tie
Gundi ya nyuzi za nyuzi kwa Tie
Gundi ya nyuzi za nyuzi kwa Tie
Gundi ya nyuzi za nyuzi kwa Tie
Gundi ya nyuzi za nyuzi kwa Tie
Gundi ya nyuzi za nyuzi kwa Tie

Niliunganisha waya zote za nyuzi za nyuzi kwenye karatasi ya mpira ili kuzuia waya kutoka kwenye karatasi ya mpira na kuifanya tie iwe gorofa.

Ili kuhakikisha kuwa sikung'ata kamba kwenye tai wakati wa kuweka shinikizo juu yake naweka karatasi katikati. Haionekani kuwa nzuri lakini inafanya kazi vizuri. Na hauioni wakati imefungwa.

Baada ya gundi kukauka nilikata waya mbele na kukata kidogo karatasi ya mpira juu tu ya waya wa juu, kwa sababu tai ilikuwa ndefu sana.

Picha na shati nyeupe hufanywa kabla ya kukata mpira huo wa mwisho.

Hatua ya 8: Kanuni

Chini ya nambari niliandika kwa tie.

LED zote zina "wastani" uliowekwa (sio wastani wa wastani lakini mwangaza wa kati).

Mara tu itakapofikia wastani huo, itaamua na nafasi 3/4 kwenda mwangaza wa chini. Pia kwa nasibu huweka mwangaza mpya wa kiwango cha chini, mwangaza wa juu, wakati wa kusubiri mwangaza wa chini na kiwango cha juu na kasi inayoongeza au hupungua kila raundi (1-255) kutoka kwa maadili 5 yaliyowekwa tayari. Halafu itafanya mzunguko mpaka kufikia wastani tena. LED 2 tu zinaweza kuwa katika mzunguko wa juu kwa wakati mmoja.

Kila jimbo linawakilishwa na nambari kamili (1-7) ikiamua ikiwa ina wastani wa chini, wastani wa wastani, inasubiri chini, inasasisha, n.k.

Kwa habari juu ya kupakia nambari kwenye arduino, tafadhali angalia www.arduino.cc

/ * Starry Sky Tie * * Huu ni hati ya kufifia taa za LED kwa wastani kutoka wastani hadi chini * au mwangaza wa juu na mipangilio ya chini, ya juu na ya muda * ili kuonekana kama anga yenye nyota wakati inatumiwa na fiberoptics. * Katika kesi hii hizi zitatekelezwa kwa tie. * * Nafasi ya juu / chini = 1/4 juu, 3/4 chini, na kiwango cha juu cha 2 * kwenda juu kwa wakati mmoja. * * Wastani anakaa sawa. * Chaguzi za chini, kiwango cha juu na muda hubadilika bila mpangilio * kutoka chaguzi 5 kila wakati LED inafikia wastani tena. * * Iliundwa na Billy Jaspers, Mei 2019. *

/ Tangaza pini

int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;

// Viwango vya wakati

muda mrefu wa sasa wa muda; Muda wa kusubiri ambao haujasainiwa [5]; isiyosajiliwa mwisho mrefu;

// Viwango vya LED

Int brightMin [5] = {10, 10, 10, 10, 10}; // Mwangaza mdogo chini mkaliAvg [5] = {200, 200, 200, 200, 200}; // Wastani wa mwangaza int brightMax [5] = {240, 240, 240, 240, 240}; // Mwangaza upeo ndani ya wakatiWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Wakati wa kusubiri int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Wakati wa kusubiri int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Wakati wa kusubiri int increment [5] = {2, 5, 4, 5, 2}; // Kuongezeka kwa mwangaza int currentBright [5] = {200, 230, 210, 210, 235}; // Mwangaza wa sasa

// Viwango vya LED Uwezekano

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Uwezekano mdogo wa mwangaza ndani ya brightMaxPos [5] = {240, 245, 230, 225, 245}; // Uwezo mkubwa wa mwangaza ndani ya wakatiLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Wakati wa kusubiri juu ya uwezekano mdogo wa mwangaza ndani ya wakatiHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Wakati wa kusubiri juu ya uwezekano mkubwa wa mwangaza ndani ya wakatiAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Wakati wa kusubiri juu ya uwezekano wa wastani wa mwangaza int incrementPos [5] = {2, 4, 5, 3, 1}; // nyongeza katika uwezekano wa mwangaza

// Vigezo

kuanza bool = kweli; // Je! Mipangilio ya kuanza inahitaji kuanza?

// Vigeuzi vya mwelekeo

/ * 0 = Kusubiri kwa Wastani 1 = kwenda Wastani hadi Chini 2 = kusubiri Chini 3 = kwenda Chini kwa Wastani 4 = kwenda Wastani kwa Max 5 = kusubiri kwa Max 6 = kwenda Juu hadi Wastani 7 = Kusasisha vigeugeu * / hali ya mwangazaLED [5] = {0, 0, 0, 0, 0}; kiwango cha juuHighLED = 0; Kiwango cha upya = 50; hali ya bool Kusubiri [5] = {uwongo, uwongo, uwongo, uwongo, uwongo}; // Je! Led inasubiri?

// Vigeugeu visivyo na mpangilio

Nambari ndefu ya nasibu; // Muda mrefu kuhifadhi nambari bila mpangilio kwa muda mrefuNambaTwo; // Muda mrefu kuhifadhi nambari ya pili ya nasibu

// kaunta

int i = 0; // Counter kwa kitanzi kuu

usanidi batili () {

Serial. Kuanza (115200); // Anza serial randomSeed (AnalogRead (A0)); // Weka bila mpangilio

// Tangaza matokeo

pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, OUTPUT); }

// Andika data kwa LED

kuandika utupu () {analogWrite (LED01, sasaBright [0]); AnalogWrite (LED02, sasaBright [1]); AnalogWrite (LED03, sasaBright [2]); AnalogWrite (LED04, sasaBright [3]); AnalogWrite (LED05, sasaBright [4]); }

// Kitanzi kuu

kitanzi batili () {if (startup) {// Mipangilio ya kuanza StartRound = millis (); // Weka mwishoRound kwa boot writeToLED (); // Andika data ya kuanza kwa kuanza kwa LED = uwongo; // Zima kuanza} currentTime = millis (); // Weka wakati wa sasa

ikiwa (currentTime - lastRound> = refreshRate) {

kwa (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Inasasisha Led randomNumber = random (5); brightMin = brightMinPos [randomNumber]; // Weka thamani ya nasibu kwa mwangaza mdogo randomNumber = random (5); brightMax = brightMaxPos [Nambari isiyo ya kawaida]; // Weka thamani ya nasibu kwa mwangaza wa juu randomNumber = random (5); timeWaitLow = timeLowPos [Nambari ya nasibu]; // Weka thamani ya nasibu kwa wakati wa kusubiri chini randomNumber = random (5); timeWaitMax = timeHighPos [Nambari ya nasibu]; // Weka thamani ya nasibu kwa muda wa juu wa kusubiri randomNumber = random (5); timeWaitAvg = timeAvgPos [Nambari ya nasibu]; // Weka thamani ya nasibu kwa wastani wa muda wa kusubiri randomNumber = random (5); nyongeza = incrementPos [Nambari ya nasibu]; // Weka thamani ya nasibu ya ongezeko la thamani bila mpangilioNamba = nasibu (2); // Weka thamani ya nasibu kwa mwelekeo randomNumberTwo = nasibu (2); // Weka thamani isiyo ya kawaida kwa mwelekeo ikiwa (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Ikiwa iko chini kabisa: Nenda Kusubiri Wastani mwingine {sasaBright = sasaBright + nyongeza ; // Mwingine: Mwangaza wa juu}} mwingine ikiwa (statusLED == 2) {// -2- Kusubiri Chini ikiwa (! StatusWitingiting ) {// Ikiwa haisubiri: muda wa kusubiri = millis (); // Weka hali ya wakati wa kusubiriKungoja = kweli; // Anza kusubiri} mwingine ikiwa (statusWiting &&TimeTime -Time -TimeTime > = timeWaitLow ) {// Ikiwa kungojea NA wakatiWaitAvg imepita: statusWiting = uongo; // Acha hali ya kungojeaLED = 3; // Weka hali Imesubiri Kusubiri sasisho}} mwingine ikiwa (statusLED == 1) {// -1- Inapita Wingi chini ikiwa (currentBright <= brightMin ) {statusLED = 2; // Ikiwa iko chini kabisa: Nenda Kusubiri Chini} mwingine {currentBright = sasaBright -kuongeza ; // Nyingine: Mwangaza wa chini}} mwingine ikiwa (hadhi IMEWASHWA == 6) {// -6- Kwenda Max kwa Wast ikiwa: statusWiting (i] = uongo; // Acha hali ya kungojeaLED = 6; // Weka hali Imesubiri Kusubiri sasisho}} mwingine ikiwa (statusLED == 4) {// -4- Kwenda na Wastani wa Max ikiwa (currentBright > = brightMax ) {statusLED = 5; // Ikiwa iko chini kabisa: Nenda Kusubiri Juu} kingine {currentBright = currentBright + increment ; // Mwingine: Mwangaza wa juu}} mwingine ikiwa (statusLED == 0) {// -0- Kusubiri kwa Wastani ikiwa (! StatusWiting ) {// Ikiwa haisubiri: muda wa kusubiri = millis (); // Weka hali ya wakati wa kusubiriKungoja = kweli; // Anza kusubiri} kingine ikiwa (statusWiting (i] &&TimeTime -Time -TimeTime > = timeWaitAvg ) {// Ikiwa kungojea NA wakatiWaitAvg imepita: statusWiting = uongo; // Acha hali ya kungojeaLED = 7; // Weka hali Imesubiri Kusubiri sasisho}}} i = 0; mwishoRound = millis (); // Weka wakati raundi ya mwisho imekamilika. kuandikaToLED (); // Andika data yote kwa LED's}}

Hatua ya 9: Bidhaa ya Mwisho

Image
Image
Bidhaa ya Mwisho
Bidhaa ya Mwisho
Bidhaa ya Mwisho
Bidhaa ya Mwisho

Nadhani ilifanya kazi vizuri. Tie sio nene sana, ngumu, ndefu au nzito na athari ya nyota inaonekana ya kushangaza.

Ilipendekeza: