Мазмұны:

Қашықтан басқарылатын жарық диодты көздер мен костюм: 7 қадам (суреттермен)
Қашықтан басқарылатын жарық диодты көздер мен костюм: 7 қадам (суреттермен)

Бейне: Қашықтан басқарылатын жарық диодты көздер мен костюм: 7 қадам (суреттермен)

Бейне: Қашықтан басқарылатын жарық диодты көздер мен костюм: 7 қадам (суреттермен)
Бейне: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Шілде
Anonim

BekathwiaBecky SternFollow Автордың толығырақ:

Веб -камераның құпиялылық досы
Веб -камераның құпиялылық досы
Веб -камераның құпиялылық досы
Веб -камераның құпиялылық досы
Таспа өлшемі Yagi антеннасы 3D басып шығаратын қосқыштармен
Таспа өлшемі Yagi антеннасы 3D басып шығаратын қосқыштармен
Таспа өлшемі Yagi антеннасы 3D басып шығаратын қосқыштармен
Таспа өлшемі Yagi антеннасы 3D басып шығаратын қосқыштармен
Зодиак кестесі
Зодиак кестесі
Зодиак кестесі
Зодиак кестесі

Туралы: Жасау мен бөлісу - менің екі үлкен құмарлығым! Барлығы мен микроконтроллерден тоқыма дейін жүздеген оқулықтарды жарияладым. Мен Нью -Йорктегі мотоциклшімін және өкінбейтін иттің анасымын. Менің уайымым … Бекатвия туралы толығырақ »

Егіз Джавас! Қос Орко! Bubble-Bobble-ден екі елес сиқыршы! Бұл костюм сорғыш тек түстерді өзгерту арқылы таңдаған жарық диодты көзді кез келген тіршілік иесі бола алады. Мен бұл жобаны алғаш рет 2015 жылы өте қарапайым схемамен және кодпен жасадым, бірақ биыл мен екі костюмнің бір мезгілде анимациялық басқаруымен жаңартылған нұсқасын жасағым келді. Бұл схема бір жиіліктегі екі қабылдағышты басқару үшін бір қарапайым, жақын қашықтықтағы РЖ пультін қолданады және Билл Эрлдің оқу кодына негізделген жауап беретін анимациялық өзгерістерге жету үшін Arduino коды қолданылады.

Бұл жоба үшін сізге қажет:

  • Екі NeoPixel зергерлік бұйымдары
  • GEMMA M0 микроконтроллері
  • 315 МГц сымсыз қабылдағыш, бекітпе түрі
  • Төрт, екі немесе бір батырмалы конфигурацияда 315 МГц сымсыз RF қашықтан басқару құралы
  • Силиконмен қапталған бұрандалы сым (30awg ұсынылады)
  • Дәнекерлеуіш пен дәнекерлеуіш
  • Сымды тазартқыштар
  • Жуғыш кескіштер
  • Пинцет
  • Үшінші қол құралына көмектесу (міндетті емес)
  • Тігу түйреуіштері
  • Тігінші боры (міндетті емес)
  • 19вг мырышталған болат сым
  • Сорғышқа/шапанға арналған қалың мата (бұл нұсқа үшін мен екі қабатты ақ темекі матасын және бір қабатты ақ дәкені қолдандым, сосын сорғыштың ішкі жағын жарықты жабу үшін қатты қара түспен қаптадым)
  • Бетке арналған мөлдір қара мата
  • Тігін машинасы
  • Қайшы
  • Ине мен жіп
  • Иілгіш талшықты 3D принтер (міндетті емес)

Жұмыс үстінде болу үшін YouTube, Instagram, Twitter, Pinterest -те мені қадағалап, ақпараттық бюллетеньге жазылыңыз. Amazon Associate ретінде мен серіктестік сілтемелерімді қолдана отырып, сатып алуларыңыздан табыс табамын.

Жұмысқа кіріспес бұрын келесі алғышарттармен танысу қажет болуы мүмкін:

  • Gemma M0 таныстыру
  • NeoPixel Uberguide
  • Капот жобасының бірінші нұсқасы (2015 жылы Gemma классикалық және сымсыз басқарусыз салынған)
  • Arduino pt 3 көп тапсырмасы

1 -қадам: схема мен код

Схема мен код
Схема мен код

Схемалық қосылыстар келесідей:

  • Gemma D2 сымсыз D0 қабылдағышына
  • Gemma D0 сымсыз D1 қабылдағышына
  • Gemma 3V сымсыз қабылдағышқа +5В
  • Gemma GND сымсыз GND және NeoPixel зергерлік бұйымдарына GND
  • Gemma D1 - NeoPixel зергерлік деректері IN
  • Gemma Vout NeoPixel зергерлік бұйымдарына PWR
  • NeoPixel зергерлік деректері басқа NeoPixel Jewel деректеріне IN

Келесі қадамды құрастыру жазбаларын қараңыз.

Код Билл Эрлдің көп тапсырмалы Arduino эскизіне негізделген және екі сандық кірісі бар екі NeoPixel зергерлік бұйымдарын басқару үшін өзгертілген. Сондықтан сымсыз қабылдағышты пайдаланудың қажеті жоқ- оның орнына тізбектегі түймелерді қолдануға болады. Осы Arduino код файлын осы қадамның тіркемелерінен жүктеп алыңыз немесе осы жерден бос Arduino нобайына көшіріп қойыңыз:

#«Adafruit_NeoPixel.h» қосыңыз

// Қолданылатын үлгі түрлері: enum үлгісі {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Патерлік бағыттар қолдау көрсетеді: enum бағыты {FORWARD, REVERSE}; // NeoPattern класы - Adafruit_NeoPixel класының NeoPatterns класынан алынған: public Adafruit_NeoPixel {public: // Мүшенің айнымалылары: үлгі ActivePattern; // қай өрнек бағытта жұмыс істейді; // белгісіз ұзақ интервалды іске қосу үшін бағыт; // жаңартулар арасындағы миллисекундтар белгісіз long lastUpdate; // uint32_t Color1, Color2 позициясының соңғы жаңартылуы; // Қандай түстер қолданылады uint16_t TotalSteps; // uint16_t үлгісіндегі қадамдардың жалпы саны Индекс; // void үлгісіндегі ағымдағы қадам (*OnComplete) (); // Үлгіні аяқтағаннан кейін кері қоңырау шалу // Конструктор - NeoPatterns жолағын инициализациялау үшін базалық класты конструкторды шақырады (uint16_t пиксель, uint8_t түйреуіш, uint8_t түрі, void (*кері шақыру) ()): Adafruit_NeoPixel (пиксель, түйреуіш, тип) {OnComplete = қайта телефон соғу; } // void үлгісін жаңарту Update () {if ((millis () - lastUpdate)> Interval) // жаңарту уақыты {lastUpdate = millis (); switch (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate (); үзіліс; case THEATER_CHASE: TheaterChaseUpdate (); үзіліс; жағдай COLOR_WIPE: ColorWipeUpdate (); үзіліс; іс сканері: ScannerUpdate (); үзіліс; FADE жағдайы: FadeUpdate (); үзіліс; әдепкі: үзіліс; }}} // Индексті ұлғайту және соңында қалпына келтіру void Increment () {if (Direction == FORWARD) {Index ++; if (Индекс> = TotalSteps) {Индекс = 0; if (OnComplete! = NULL) {OnComplete (); // кері байланысқа қоңырау шалу}}} else // Бағыт == РЕВЕРС {--Index; if (Индекс <= 0) {Индекс = TotalSteps-1; if (OnComplete! = NULL) {OnComplete (); // қоңырау шалу кері байланыс}}}} // Кері үлгі бағыты void Reverse () {if (Direction == FORWARD) {Direction = REVERSE; Индекс = TotalSteps-1; } else {Direction = FORWARD; Индекс = 0; }} // RainbowCycle void үшін RainbowCycle үшін инициализация (uint8_t интервал, бағыт dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; Интервал = интервал; TotalSteps = 255; Индекс = 0; Бағыт = дир; } // Rainbow Cycle Pattern жарамсыз RainbowCycleUpdate () {жаңарту (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ())+Index) & 255))); } көрсету (); Қосу (); } // Theatre Chase void TheaterChase үшін инициализациялау (uint32_t color1, uint32_t color2, uint8_t интервал, бағыт dir = FORWARD) {ActivePattern = THEATER_CHASE; Интервал = интервал; TotalSteps = numPixels (); Түс1 = түс1; Түс2 = түс2; Индекс = 0; Бағыт = дир; } // Theatre Chase Pattern void TheaterChaseUpdate () {жаңарту (int i = 0; i <numPixels (); i ++) {if ((i+Index) % 3 == 0) {setPixelColor (i, Color1); } else {setPixelColor (i, Color2); }} көрсету (); Қосу (); } // ColorWipe void ColorWipe үшін инициализациялау (uint32_t түсі, uint8_t интервал, бағыт dir = FORWARD) {ActivePattern = COLOR_WIPE; Интервал = интервал; TotalSteps = numPixels (); Түс1 = түс; Индекс = 0; Бағыт = дир; } // Colour Wipe Pattern void ColorWipeUpdate () {setPixelColor (Index, Color1) жаңарту; көрсету (); Қосу (); } // SCANNNER бос сканерін инициализациялау (uint32_t color1, uint8_t интервал) {ActivePattern = SCANNER; Интервал = интервал; TotalSteps = (numPixels () - 1) * 2; Түс1 = түс1; Индекс = 0; } // Scanner Pattern void ScannerUpdate () {жаңартыңыз (int i = 0; i > 1, Жасыл (түс) >> 1, Көк (түс) >> 1); dimColor қайтару; } // Барлық пиксельдерді түске орнатыңыз (синхронды) ColorSet (uint32_t color) {for (int i = 0; i> 16) & 0xFF; } // 32 биттік түстің жасыл компонентін қайтарады uint8_t Жасыл (uint32_t түсі) {қайтару (түс >> 8) & 0xFF; } // 32 биттік түстің көк компонентін қайтарады uint8_t Көк (uint32_t түсі) {қайтару түсі & 0xFF; } // Түс мәнін алу үшін 0 -ден 255 -ке дейінгі мәнді енгізіңіз. // Түстер r - g - b - r -ге ауысу болып табылады. uint32_t Wheel (байт WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return Color (255 - WheelPos * 3, 0, WheelPos * 3); } if if (WheelPos <170) {WheelPos -= 85; қайтару Түсі (0, WheelPos * 3, 255 - WheelPos * 3); } басқа {WheelPos -= 170; қайтару түсі (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // Екі сақина мен таяқша үшін кейбір NeoPatterns анықтаңыз // сонымен қатар NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete) кейбір аяқтау процедуралары; const int BRIGHTNESS = 50; // Барлығын инициализациялаңыз және void орнатуды бастауға дайындалыңыз () {Serial.begin (115200); pinMode (2, INPUT); pinMode (0, INPUT); // Jewels.setBrightness (BRIGHTNESS) барлық пикселдерін инициализациялау; Jewels.begin (); // Jewels. TheaterChase үлгісін бастау (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // Main loop void loop () {// Зергерлік бұйымдарды жаңарту. Jewels. Update (); // Түймені басу кезінде өрнектерді ауыстырыңыз: if (digitalRead (2) == HIGH) // #1 түймесі басылған {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Зергерлік бұйымдар. TotalSteps = 100; Зергерлік бұйымдар. Аралық = 1; } else if (digitalRead (0) == HIGH) // #2 батырмасы {Jewels. Color1 = Jewels. Color (255, 0, 0) басылады; Jewels. ActivePattern = SCANNER; Jewels. TotalSteps = Jewels.numPixels (); Зергерлік бұйымдар. Аралық = 100; } else // Қалыпты жұмыс режиміне оралу {// Барлық үлгі параметрлерін қалпына келтіру Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Зергерлік бұйымдар. Аралық = 100; }} // ---------------------------------------------- -------------- // Аяқтау тәртібі-үлгіні аяқтауға шақыру // ---------------------- -------------------------------------- // Зергерлік бұйымдардың аяқталуы Қайта қоңырау шалу JewelsComplete () {// Келесі сканерлеу үшін түсінің кездейсоқ өзгеруі //Jewels. Color1 = Jewels. Wheel (random (255)); Зергерлік бұйымдар. Кері (); }

2 -қадам: схеманы жинаңыз

Схеманы жинау
Схеманы жинау
Схеманы жинау
Схеманы жинау

Үшінші қолмен ұстаушыларға көмектесу жиынтығы сымдарды компоненттерге дәнекерлеу процесін өте қарапайым және қызықты етеді. Бірақ егер сізде жинақ болмаса, алаңдамаңыз; Дәнекерлеу кезінде тақтаны тұрақты ұстау үшін сіз әрқашан таспаны немесе плакатты қолдануға болады.

Екі NeoPixel зергерлік бұйымдарының арасындағы байланыс үшін жіптің жіңішке бөліктерін (ұзындығы шамамен 6ин/15см) пайдаланыңыз (алдыңғы қадамдағы диаграмма). Егер сіз тым қысқа сымдарды қолдансаңыз, онда сіз жарық диодты көзіңізді бір -бірінен алыс орналастыра алмайсыз, ал егер сіз тым көп сым қолдансаңыз, костюм киіп жүргенде әлсіздік сіздің бетіңізге түседі.

Негізгі схема лапель аймағында өмір сүретін болады (кеуде сіздің иығыңызбен түйісетін жерде), сондықтан тізбектегі алғашқы NeoPixel зергерлік бұйымы мен Джемма арасындағы байланыс үшін сымдар әлдеқайда ұзағырақ болады. Сіз сымды көз аймағына дейін ұстап тұрып, сым жүретін қашықтықты өлшеу үшін тартып шығара аласыз, содан кейін босаңсу мен сақтандыруға аздап қосуға болады.

Gemma мен сымсыз қабылдағышты қосу үшін мен прототиптік сымдарды әйел тақырыптары бар қолдануды таңдадым, өйткені сымсыз қабылдағышта тақырып түйреуіштері бекітілген.

3 -қадам: Батарея қуаты

Батарея қуаты
Батарея қуаты
Батарея қуаты
Батарея қуаты

Схеманы қуаттандыру үшін мен 500 мАч липолды батареяны қолдандым. Егер липолды аккумуляторды қолдансаңыз, оны сызаттардан, пункциядан, сызаттардан, майысудан және басқа теріс пайдаланудан қорғаған дұрыс. Сіз оны берік матадан таспаға орап немесе оған 3D басып шығарғыш ұстағыш жасай аласыз.

Оның орнына 3xAAA ұстағышты қолдануға болады (оны лапель ішінде емес, қалтаңызда ұстаңыз).

4 -қадам: тігу үлгісі мен матаны кесу

Тігін үлгісі және мата
Тігін үлгісі және мата

Мен костюмнің бірінші нұсқасы үшін жасаған сол үлгіні қолдандым, ол көп беттік PDF, ол өрнектерді жасау үшін біріктіріледі.

Матаңызды бүктеңіз, матаның дәнін туралау үшін жиектің жиектерін туралаңыз және өрнектің бөліктерін белгіленгендей бүктеңіз. Белгіленген борды немесе қарындашты қолдана отырып, шамамен 5/8in/3см үлгінің бөліктерінен (бүктеуді қоспағанда) тігістің шығуын қадағалаңыз. Менің матам жұқа болғандықтан, мен оны екі есе көбейткім келді, және мен екі сорғыш жасағандықтан, мен негізгі матаның әр үлгісінің төртеуін кесіп тастадым, содан кейін сыртқа текстураны қосу үшін дәке дәкедегі тағы бір қабатты кесіп тастадым. қара матаның қабаты жарықтың түсуін болдырмайтын лайнер ретінде. Менің ойымша, егер мен бұны алдын ала жоспарлаған болсам, мен бастапқы ақ қабаттардың бірін түсіріп алар едім, ал сорғыштар төрт емес, үш қабаттан тұрар еді.

5 -қадам: Матаның бөліктерін жинаңыз

Матаның бөліктерін жинаңыз
Матаның бөліктерін жинаңыз
Матаның бөліктерін жинаңыз
Матаның бөліктерін жинаңыз
Матаның бөліктерін жинаңыз
Матаның бөліктерін жинаңыз
Матаның бөліктерін жинаңыз
Матаның бөліктерін жинаңыз

Әр өрнектің бөлігіне дартс/иық тігісін бекітіңіз және тігіңіз, содан кейін капюшон мен шапан бөліктерін мойын тігісінің бойымен оң жақ жиектерімен бірге туралаңыз. Тігісті, сондай -ақ сорғыштың жоғарғы жағына тікелей тігіңіз.

Сорғышты қолданып көріңіз. Сорғыштың шикі алдыңғы жиегін бүктеп, түйреп, ұқыпты жиекті және сым өтетін арнаны жасау үшін оны тігіңіз.

Содан кейін, сорғыштың алдыңғы жағын жабу үшін мөлдір қара матаның дөңгелек бөлігін кесіңіз. Бұл схеманы қолдайды және сіздің бетіңізді жасырады. Сорғышты киген кезде оны орнына бекітіңіз, содан кейін оны сорғыштың ашылуына қолмен немесе машинамен тігіңіз.

6 -қадам: Сорғышты схемаға орнатыңыз

Сорғышты схемаға орнатыңыз
Сорғышты схемаға орнатыңыз

Мен сорғышты кидім, тізбекті қостым және жарықдиодты шамдар үшін ең жақсы орынды анықтау үшін айна қолдандым. Содан кейін мен орындарды белгілеу үшін түйреуіштерді қолдандым және қара жіппен мұқият тігдім, NeoPixel зергерлік әшекейлеріндегі бекіту тесіктерін мөлдір қара алдыңғы панельге бекітемін. Менікі менің көзімнің астында орналасқан, бұл олардың өткенін көруді жеңілдетеді.

Егер сіз екінші сорғыш жасасаңыз, шайыңыз және қайталаңыз.

7 -қадам: оны киіңіз

Оны киіңіз!
Оны киіңіз!
Оны киіңіз!
Оны киіңіз!
Оны киіңіз!
Оны киіңіз!
Оны киіңіз!
Оны киіңіз!

Бұларды кию өте қызықты. Сырт көзге көріну оңай, ал басқаларға сіздің бетіңізді көру оңай емес. Алдыңғы матаны бетіңізге жабудан сақтайтын үлкен көлемді сорғыш пен сымдық раманың арқасында бәрі де өте ыңғайлы.

Менің жігітім екеуміз оларды биылғы жылы Хэллоуин мерекесінде хакерлер кеңістігінде диджей ретінде кидік, мен лазерлік проектордың бағдарламалық жасақтамасының интерфейсін көріп тұрғанымда, ол Эбелтондағы кішкентай мәтінді анықтай алмады. жақсы қарау. Мен сорғыштың жоғарғы бөлігіндегі қара матадан жасалған тақтаны алып тастадым, ал артық бөлігін бүктедім. Қараңғы бөлмеде сіз екеуінің арасындағы айырмашылықты ажырата алмадыңыз, бірақ сіз оны біздің жоғарыдағы суреттен көре аласыз.

Оқығаныңыз үшін рахмет! Егер сізге бұл жоба ұнайтын болса, сізге менің кейбіреулерім қызық болуы мүмкін:

  • 13 Жарықдиодты таратуға арналған идеялар
  • Arduino/Bluetooth көмегімен таралған жарықдиодты жолақ белгісі
  • ESP8266 бар YouTube жазылушыларының есептегіші
  • Оңай шексіздік айнасы
  • 3 бастаушы Arduino қателіктері

Жұмыс үстінде болу үшін мені YouTube, Instagram, Twitter және Pinterest -те қадағалаңыз.

Ұсынылған: