Мазмуну:

Кенеп басуудагы була-оптикалык жарыктар: 5 кадам
Кенеп басуудагы була-оптикалык жарыктар: 5 кадам

Video: Кенеп басуудагы була-оптикалык жарыктар: 5 кадам

Video: Кенеп басуудагы була-оптикалык жарыктар: 5 кадам
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Июль
Anonim
Image
Image
Кенеп басууда була-оптикалык жарыктар
Кенеп басууда була-оптикалык жарыктар

Бул долбоор стандарттуу полотного уникалдуу айланууну кошот. Мен 4 түрдүү жарык режимдеринде программаладым, бирок сиз дагы оңой кошо аласыз. Режим кадрды бузууну азайтуу үчүн өзүнчө баскычтын ордуна аны өчүрүп -күйгүзгөн сайын алмаштырылат. Батареялар 50+ саатка чейин иштеши керек - мен так билбейм, бирок мен досума окшош проект жасадым жана ал 5x көп жарык колдонуп, бир батареяда 20+ саатка созулду.

Материалдар

  • Иштетилүүчү мейкиндик менен кенеп басып чыгаруу - Мен https://www.easycanvasprints.com сайтынан заказ кылдым, анткени алар жакшы бааларга жана арткы жагына ачык болчу. Калыңыраак 1,5 дюйм кемчиликсиз болчу жана мага була -оптикалык жиптерди бүгүү үчүн көп орун берди. Андан тышкары, сизге батарейка жана микроконтроллер жана LED тилкелери үчүн 3 "8" дык мейкиндикти берген сүрөт керек.
  • LED тасма жарыктары - Мен даректүү WS2812 LED тилкелерин колдондум. Коркпоңуз, аларды FastLED же Neopixel китепканалары менен колдонуу оңой! Сиз ошондой эле кандайдыр бир стандарттык LED тилкесин колдонсоңуз болот, ар бир жарык бөлүгүн бир дагы зым өткөрбөстөн башкара албайсыз.
  • Микроконтроллер - Мен Arduino Uno колдондум, бирок сиз бул долбоор үчүн дээрлик бардыгын колдоно аласыз.
  • Батарея пакети - Мен муну eBayден (Кытайдан) заказ кылдым жана ал "6 x 1.5V AA 2A CELL Батарея Батарейкаларынын кармагычы" деп аталды
  • Була -оптикалык жиптер - дагы бир жолу Кытайдан eBay аркылуу заказ кылынган - "PMMA Пластикалык була -оптикалык кабель LED DIY декорунун өсүшү" же "PMMA End Glow Fiber Optic Cable for Star Ceiling Light Kit". Мен 1мм жана 1,5мм өлчөмдөрүн колдондум, чындыгында андан кичирээкти колдонууну сунуштайм.
  • Күйгүзүү/Өчүрүү - "SPDT On/On 2 Position Miniature Toggle Switch"
  • Зым уюштуруу клиптери - Булалар оптикалык жиптердин жакшы жана тыкан болушуна жардам берет.
  • Көбүк тактайы, катуу өзөктүү туташтыргыч зым, жылуулукту кыскартуучу түтүк

Куралдар

  • Dremel - сүрөт алкагына күйгүзүү/өчүрүү которгучун салуу үчүн колдонулат. Бул, балким, машыгуу жана чындап эле чоң нерсе менен аткарылышы мүмкүн, бирок мен муну сунуш кылбайм.
  • Лампочка - зымдарды LED тилкесине бекитүү
  • Hot желим тапанча - бул долбоордун ар бир кадамы
  • Чоң тигүү ийнеси - кенеп аркылуу тешиктерди тешүү үчүн жана жарык үчүн көбүк такта

1 -кадам: Foam Board, Battery Pack жана On/Off Switch

Көбүк тактасы, Батарея пакети жана Күйгүзүү/Өчүрүү
Көбүк тактасы, Батарея пакети жана Күйгүзүү/Өчүрүү
Көбүк тактасы, Батарея пакети жана Күйгүзүү/Өчүрүү
Көбүк тактасы, Батарея пакети жана Күйгүзүү/Өчүрүү

Башка нерсеге чейин полотнонун артына көбүк тактайынын бир бөлүгүн тиркөө керек. Бул бизге калган нерсенин бардыгын бекитип берчү жакшы жерди берет жана була -оптикалык жиптерди кармап турууга жардам берет. Так бычакты же куту кескичти колдонуп, көбүктөнгөн тактайдын бир бөлүгүн керектүү өлчөмдө кесип, көптөгөн жерлерге ысык желим менен чаптаңыз. Мен жарыктын көп өтүшүнө жол бербеши үчүн кара көбүктөнгөн тактайды колдонууну сунуштайм.

Мен кадимки бургуга окшош, бирок материалды алып салуу үчүн эң сонун болгон дремелди колдондум. Бул кандайдыр бир дремел менен келиши керек болгон биттердин бири. Дремелден ар кандай жыгачтан арылуу үчүн бир куту кысылган абаны колдонуңуз.

Ысык клей баарын ордуна. Батарея топтому абдан жакшы тиркелгенин тактаңыз, анткени ал батарейканы салуу/чыгаруу үчүн жакшы күчтү талап кылат жана батарея кармагычтын эч жакка кетишин каалабайсыз.

2 -кадам: Микроконтроллер жана микросхема

Микроконтроллер жана микросхема
Микроконтроллер жана микросхема
Микроконтроллер жана микросхема
Микроконтроллер жана микросхема
Микроконтроллер жана микросхема
Микроконтроллер жана микросхема

Мен Arduino UNOго кубат которгучту койдум, ошондо сиз которгучту которгондо эч нерсе батареянын кубатын колдонбойт. Бул долбоор күйгүзүлбөгөндө батарейкалардын мүмкүн болушунча көбүрөөк иштешине жардам бериши керек. Arduino такталары электр энергиясын башкарууда абдан начар - алар эч нерсе кылбаса дагы күйгүзүлгөн болсо, алар көп токту колдонушат.

Батарея пакетинин оң жагын микроконтроллердин VIN'ине (чыңалуу киргизүү) киргизиңиз, ошондо ал чыңалууну керектүү 5Вга чейин түшүрүү үчүн контроллердин орнотулган чыңалуу жөндөгүчүн колдонот. Эгерде биз көбүрөөк жарыкты иштетип жаткан болсок, анда биз аларга өзүбүздүн чыңалуу жөнгө салуучубузду колдонушубуз керек болот, бирок БУУ 5 светодиод менен иштей алышы керек.

Мен сигналды текшилөө үчүн маалыматтын чыгышы менен LED тилкесинин ортосундагы резисторду колдондум - резисторсуз сиз туш келди пикселдердин жарк этип калышыңыз мүмкүн. Резистордун өлчөмү эч кандай мааниге ээ эмес, 50Ω менен 400Ω ортосунда эч нерсе иштебеши керек.

3-кадам: Була-оптикалык жарыктар

Image
Image
Була-оптикалык жарыктар
Була-оптикалык жарыктар
Була-оптикалык жарыктар
Була-оптикалык жарыктар

Бир аз сыноодон кийин мен акыры кенеп аркылуу оптикалык булаларды алуу үчүн жакшы жолду таптым.

  1. Эң чоң тигүүчү ийнени колдонуп, кенептин жана пенопласттын алдыңкы бөлүгүн тешип алыңыз. Мен эң башында каалаган тешикти тешүүнү сунуштайм, андыктан аны оодарып, кабелдик уюштуруу клиптериңизди кайда коё албооңузду көрө аласыз.
  2. Ийне тумшуктуу кычкачты алып, була-оптикалык жипти бир сантиметрге жетпеген жерден кармаңыз
  3. Була -оптикалык жипти ийне менен жасалган тешиктен өткөрүңүз
  4. Жипти ар кандай пластикалык клиптер аркылуу керектүү жерден бир аз узунураак жерге буруңуз - биз аны кийинчерээк кесебиз
  5. Төмөн температура режиминде ысык желим мылтыгыңыз менен (эгерде мындай мүмкүнчүлүк болсо) була -оптикалык жипке бир тамчы ысык желим салыңыз, ал көбүк тактасынан өтөт. Же болбосо, бул көк түстөгү нерселерди колдонсоңуз болот. Ысык желим жипти бир аз деформациялайт, бирок оптикалык сапаттарга анча аралашпайт окшойт
  6. Жипти кенептен бир аз алысыраак кесип, зым кескичтерди колдонуңуз.

Процессти тездетүү үчүн, ысык желимди жасоодон мурун, көптөгөн талдарды катары менен тизип койсоңуз болот. Алар жалпысынан өз ордунда калышы керек.

Столдун үстүндөгү була -оптикалык жиптерди сындыруудан же кысуудан сак болуңуз - алар үзүлүп кетет жана эгер бул тилкени өтө кыска кылса, анда кайгырып, кайра жасоого туура келет. Батарея топтомун каршы салмак катары колдонуңуз, ошондо столдо сүрөт алкагы жарымынан аз болушу мүмкүн.

Мен кара түстүн ордуна ак көбүктөнгөн такта колдонгонум үчүн, LEDлар күйүп турганда жарык көп тийип турган. Оңдоо катары мен жарыктар менен кенептердин ортосуна алюминий фольгага чаптадым.

Оптикалык оптикалык жиптердин ар бирин бириктирип туруу үчүн жылуулукту азайтуучу түтүктөрдү колдонуңуз.

  1. Пучоктун жиптерин болжол менен бирдей узундукта кесип алыңыз
  2. Бөлүктү жылуулукту кысуучу түтүктөр аркылуу коюңуз
  3. Аны кичирейтүү үчүн жылуулук пистолетин же ширеткичти колдонуңуз. Эгерде сиз ширетүүчү үтүктү колдонуп жатсаңыз, анда үтүктүн капталын түтүктөргө жеңил тийгизип коюңуз, ал кичирейет. Бул түтүктү эрип кетпеши керек, анткени ал бир аз жылуулук үчүн иштелип чыккан.

Акыр -аягы, мен пакеттин учун ар бир светодиоддук жарыкка жабыштыруу үчүн ысык клей колдондум. Мен көптөгөн ысык желимди колдондум, ошондо жипчелер жарыкта ар бир кызыл/жашыл/көк диоддон жарык алышы үчүн - жипчелер жарыкка чындап жакын болгондо "ак" түскө ээ болот (бул чындыгында кызыл, жашыл жана көк) анда кээ бир жипчелер жөн эле кызыл болуп, кээ бирлери жашыл болуп калат. Муну бир кагазды же аны таркатуу үчүн башка нерсени колдонуу менен жакшыртса болот, бирок ысык клей мен үчүн жакшы иштеди.

4 -кадам: Программалоо

Бул программалоодо мен үч китепкананы колдондум

FastLED - WS2812 LED тилкелерин (жана башка көптөгөн даректүү LED тилкелерин) көзөмөлдөө үчүн мыкты китепкана -

Arduino Low Power - Бул чынында канча энергияны үнөмдөйт, билбейм, бирок аны ишке ашыруу өтө оңой болгон жана жөн эле ак чырактар болгон функцияга кичине кубатты үнөмдөөгө жардам бериши керек, анан түбөлүккө кечиктирилет.

EEPROM - Долбоордун учурдагы режимин окуу/сактоо үчүн колдонулат. Бул долбоорго түстүү режимди ар бир өчүрүп -күйгүзгөндө көбөйтүүгө мүмкүндүк берет, бул режимди өзгөртүү үчүн өзүнчө баскычтын зарылчылыгын жок кылат. EEPROM китепканасы Arduino IDE орнотулган сайын орнотулат.

Мен дагы башка бирөө койгон чырактарды жаркыратуу үчүн эскизди колдондум. Ал туш келди пикселди негизги түстөн эң жогорку түскө чейин күйгүзүп, анан кайра түшөт. https://gist.github.com/kriegsman/88954aae22b03a66… (ал FastLED китепканасын да колдонот)

Мен Visual Studio үчүн vMicro плагинин да колдондум - бул Arduino IDEдин ампедирленген версиясы. Бул көптөгөн пайдалуу автотолтуруу функцияларына ээ жана кодуңуздагы көйгөйлөрдү аны түзүүнүн кереги жок. Бул 15 доллар турат, бирок эгер сиз бир нече Arduino долбоорун түзө турган болсоңуз, ал сизди супер күчтүү программа болгон Visual Studio жөнүндө билүүгө мажбур кылат.

(Мен ошондой эле.ino файлын тиркеп жатам, анткени Github Gistтин Instructable хостинги файлдагы бош жерлерди жок кылат)

Arduino коду 4 түстүү режимде иштеп, FastLED китепканасын колдонгон WS2812B LED чырактары үчүн Arduino UNO

#кошуу
#кошуу
#кошуу
// FastLED орнотуу
#defineNUM_LEDS4
#definePIN3 // LED тилкеси үчүн маалымат пини
CRGB ледтери [NUM_LEDS];
// Twinkle орнотуу
#defineBASE_COLORCRGB (2, 2, 2) // Негизги фон түсү
#definePEAK_COLORCRGB (255, 255, 255) // Пик түсү
// Жаркыраган сайын түстү ар бир циклге көбөйтүү үчүн:
#аныктооDELTA_COLOR_UPCRGB (4, 4, 4)
// Түстү алсырап калган сайын, ар бир цикл боюнча азайтуу үчүн:
#аныктооDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Ар бир пикселдин жарык боло баштоо мүмкүнчүлүгү.
// 1 же 2 = бир убакта бир нече жарыктандыруучу пикселдер.
// 10 = бир убакта бир нече пикселдин жарыктанышы.
#defineCHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
байт runMode;
байт globalBright = 150;
байт globalDelay = 20; // Жаркыроо үчүн кечигүү ылдамдыгы
байт дареги = 35; // Иштөө режимин сактоо үчүн дарек
voidsetup ()
{
FastLED.addLeds (leds, NUM_LEDS);
FastLED.setCorrection (TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Иштетүү режимин алыңыз
runMode = EEPROM.read (дарек);
// Иштөө режимин 1ге көбөйтүңүз
EEPROM.write (дарек, runMode + 1);
}
voidloop ()
{
которуу (runMode)
{
// Катуу ак
case1: fill_solid (leds, NUM_LEDS, CRGB:: White);
FastLED.show ();
DelayForever ();
тыныгуу;
// Акырындык менен жымыңдаңыз
case2: FastLED.setBrightness (255);
globalDelay = 10;
TwinkleMapPixels ();
тыныгуу;
// Тез жымыңдап
case3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
тыныгуу;
// Радуга
case4:
RunRainbow ();
тыныгуу;
// Индекс диапазондо эмес, аны 2ге баштапкы абалга келтирип, анан 1 режимин иштетиңиз.
// arduino кайра күйгүзүлгөндө ал 2 -режимде иштейт, бирок азырынча 1 -режимде иштейт
демейки:
EEPROM.write (дареги, 2);
runMode = 1;
тыныгуу;
}
}
voidRunRainbow ()
{
байт *в;
uint16_t i, j;
учурда (чын)
{
for (j = 0; j <256; j ++) {// дөңгөлөктөгү бардык түстөрдүн 1 цикли
үчүн (i = 0; i <NUM_LEDS; i ++) {
с = Дөңгөлөк (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
кечигүү (globalDelay);
}
}
}
байт * дөңгөлөк (байт WheelPos) {
статикалык байт c [3];
эгер (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - WheelPos * 3;
c [2] = 0;
}
elseif (WheelPos <170) {
WheelPos -= 85;
c [0] = 255 - WheelPos * 3;
c [1] = 0;
c [2] = WheelPos * 3;
}
башка {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
return c;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
учурда (чын)
{
үчүн (uint16_t i = 0; i <NUM_LEDS; i ++) {
эгер (PixelState == SteadyDim) {
// бул пикселдер учурда: SteadyDim
// Ошентип, биз туш келди аны жарык кыла баштоону ойлонобуз
эгер (random8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// бул пикселдер учурда: GettingBrighter
// Демек, эгер ал эң жогорку түстө болсо, аны кайрадан күңүрт болууга которуңуз
if (leds > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
башка {
// Болбосо, жөн гана жарыктандырып коюңуз:
leds += DELTA_COLOR_UP;
}
}
башка {// кайра күңүрт
// бул пикселдер учурда: GettingDimmerAgain
// эгерде ал негизги түскө кайтып келсе, аны туруктуу күңүрткө которуңуз
эгер (leds <= BASE_COLOR) {
leds = BASE_COLOR; // тактап койсоңуз, так түскө кайтарыңыз
PixelState = SteadyDim;
}
башка {
// Болбосо, жөн эле караңгылатып коюңуз:
leds -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, sizeof (PixelState), SteadyDim); // бардык пикселдерди SteadyDimге баптоо.
fill_solid (LED, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
учурда (чын)
{
кечиктирүү (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, байт кызыл, байт жашыл, көк байт) {
// FastLED
leds [Пиксел].r = кызыл;
leds [Pixel].g = жашыл;
leds [пиксел].b = көк;
}

rawFiberOptic_ClemsonPic.ino менен ❤ GitHub тарабынан хостингди көрүү

5 -кадам: Акыркы продукт

Акыркы продукт
Акыркы продукт
Акыркы продукт
Акыркы продукт
Акыркы продукт
Акыркы продукт

Та-да! Бул көрсөтмө башка бирөөнү өзүнүн окшош долбоорун түзүүгө шыктандырат деп үмүттөнөм. Бул чындыгында кыйын болгон жок жана мен эч ким муну жасай электигине таң калдым жана ал жөнүндө толук инструктивдүү жаздым.

Сунушталууда: