Мазмуну:

Алыстан башкарылуучу LED көздөр жана костюм капюшону: 7 кадам (сүрөттөр менен)
Алыстан башкарылуучу LED көздөр жана костюм капюшону: 7 кадам (сүрөттөр менен)

Video: Алыстан башкарылуучу LED көздөр жана костюм капюшону: 7 кадам (сүрөттөр менен)

Video: Алыстан башкарылуучу LED көздөр жана костюм капюшону: 7 кадам (сүрөттөр менен)
Video: ЖАШЫРУУН CCTV камера ВИДЕО КӨЗ!!! 2024, Июль
Anonim

By BekathwiaBecky SternFollow Дагы автордун:

Веб -камеранын купуялык досу
Веб -камеранын купуялык досу
Веб -камеранын купуялык досу
Веб -камеранын купуялык досу
Tape Measure Yagi антеннасы 3D басып чыгаруучу кошкучтары менен
Tape Measure Yagi антеннасы 3D басып чыгаруучу кошкучтары менен
Tape Measure Yagi антеннасы 3D басып чыгаруучу кошкучтары менен
Tape Measure Yagi антеннасы 3D басып чыгаруучу кошкучтары менен
Zodiac саймасы
Zodiac саймасы
Zodiac саймасы
Zodiac саймасы

Жөнүндө: Жасоо жана бөлүшүү менин эң чоң эки кумарым! Жалпысынан мен микроконтроллерден токууга чейинки жүздөгөн окуу куралдарын жарыяладым. Мен Нью -Йорктогу мотоциклистмин жана өкүнбөгөн иттин апасымын. My wo … Bekathwia жөнүндө кененирээк »

Twin Jawas! Double Orko! Bubble-Bobbleден эки элес сыйкырчысы! Бул костюм капюшон түстөрдү өзгөртүү менен сиз тандаган LED көздүү жандык болушу мүмкүн. Мен бул долбоорду биринчи жолу 2015 -жылы абдан жөнөкөй схема жана код менен жасадым, бирок бул жылы мен эки костюм боюнча бир убакта анимацияны башкаруу менен жакшыртылган версиясын түзгүм келди. Бул схема бир жыштыкта эки кабыл алуучуну көзөмөлдөө үчүн бир жөнөкөй, жакын аралыктан иштөөчү RF пультун колдонот жана Arduino коду Билл Эрлдин окуу кодуна негизделген анимациялык өзгөрүүлөргө жетүү үчүн үзгүлтүктөрдү колдонот.

Бул долбоор үчүн сизге керек болот:

  • Эки NeoPixel зергери
  • GEMMA M0 микроконтроллери
  • 315MHz зымсыз алуучу, бекитүүчү түрү
  • 315MHz зымсыз RF пульту төрт, эки же бир баскычтуу конфигурацияда
  • Силикон капталган жип (30awg сунушталат)
  • Лампочка жана ширетүүчү
  • Сым тазалагычтар
  • Кирүүчү кескичтер
  • Пинцет
  • Үчүнчү колго жардам берүү (милдеттүү эмес)
  • Тигүү казыктары
  • Тигүүчү бор (милдеттүү эмес)
  • 19awg мырышталган болот зым
  • Капот/капкак үчүн калың кездеме (бул версия үчүн мен ак тамеки кездемесинин эки катмарын жана бир катмар ак чүпүрөктү колдондум, андан кийин капкактын ичин жарык менен жабыш үчүн катуу кара менен каптадым)
  • Бет панели үчүн тунук кара кездеме
  • Тигүүчү машина
  • Кайчы
  • Ийне жана жип
  • Ийкемдүү жип менен 3D принтер (милдеттүү эмес)

Мен иштеп жаткан нерсеге жетүү үчүн YouTube, Instagram, Twitter, Pinterestте мени ээрчиңиз жана менин маалымат баракчама жазылыңыз. Amazon Associate катары мен менин өнөктөштүк шилтемелеримди колдонуп, квалификациялуу сатып алуулардан киреше табам.

Баштоодон мурун, сиз төмөнкү шарттарды окуп чыгыңыз:

  • Gemma M0 менен тааныштыруу
  • NeoPixel Uberguide
  • Биринчи капот долбоорунун версиясы (классикалык Gemma менен 2015 -жылы курулган жана зымсыз башкаруу жок)
  • Arduino pt 3 көп тапшырмасы

1 -кадам: Райондук диаграмма жана код

Райондук диаграмма жана код
Райондук диаграмма жана код

Райондук туташуулар төмөнкүдөй:

  • Gemma D2 зымсыз алуучуга D0
  • Gemma D0 зымсыз алуучуга D1
  • Gemma 3V зымсыз алуучуга +5V
  • 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 pattern {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 Index; // 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 (); тыныгуу; case SCANNER: ScannerUpdate (); тыныгуу; case FADE: FadeUpdate (); тыныгуу; демейки: тыныгуу; }}} // Индексти көбөйтүү жана аягында кайра коюу void Increment () {if (Direction == FORWARD) {Index ++; if (Index> = TotalSteps) {Index = 0; if (OnComplete! = NULL) {OnComplete (); // кайра чалууга чалуу}}} башка // Багыты == РЕВЕРС {--Index; if (Index <= 0) {Index = TotalSteps-1; if (OnComplete! = NULL) {OnComplete (); // чалуу кайра байланышка чалуу}}}} // Тескери үлгү багыты void Reverse () {if (Direction == FORWARD) {Багыты = REVERSE; Индекс = TotalSteps-1; } else {Direction = FORWARD; Index = 0; }} // RainbowCycle боштугу үчүн баштоо RainbowCycle (uint8_t интервал, багыт dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; Interval = интервал; TotalSteps = 255; Index = 0; Багыты = дир; } // Rainbow Cycle Pattern жараксыздыгын жаңыртуу RainbowCycleUpdate () {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ())+Index)) & 255)); } show (); Арттыруу (); } // Theatre Chase үчүн Initialize void TheaterChase (uint32_t color1, uint32_t color2, uint8_t интервал, багыт dir = АЛГА) {ActivePattern = THEATER_CHASE; Interval = интервал; TotalSteps = numPixels (); Color1 = color1; Color2 = color2; Index = 0; Багыты = дир; } // Theatre Chase Pattern жараксыз театрChaseUpdate () {үчүн (int i = 0; i <numPixels (); i ++) {if ((i+Index) % 3 == 0) {setPixelColor (i, Color1); } else {setPixelColor (i, Color2); }} show (); Артыкчылык (); } // ColorWipe боштугун ColorWipe үчүн баштоо (uint32_t түс, uint8_t интервал, багыт dir = FORWARD) {ActivePattern = COLOR_WIPE; Interval = интервал; TotalSteps = numPixels (); Color1 = түс; Index = 0; Багыты = дир; } // Color Wipe Pattern void ColorWipeUpdate () {setPixelColor (Index, Color1) жаңыртуу; көрсөтүү (); Арттыруу (); } // SCANNNER боштук сканерин баштоо (uint32_t color1, uint8_t интервал) {ActivePattern = SCANNER; Interval = интервал; TotalSteps = (numPixels () - 1) * 2; Color1 = color1; Index = 0; } // Scanner Pattern жараксыздыгын ScannerUpdate () {үчүн (int i = 0; i) жаңыртыңыз > 1, Жашыл (түс) >> 1, Көк (түс) >> 1); кайтаруу dimColor; } // Бардык пикселдерди түскө (синхрондуу) жараксыз ColorSet (uint32_t color) {үчүн (int i = 0; i> 16) & 0xFF; } // 32 биттик түстүн Жашыл компонентин кайтарат uint8_t Green (uint32_t color) {return (color >> 8) & 0xFF; } // 32 биттик түстүн Blue компонентин кайтарат uint8_t Blue (uint32_t color) {return color & 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); } else if (WheelPos <170) {WheelPos -= 85; кайтаруу Түсү (0, WheelPos * 3, 255 - WheelPos * 3); } else {WheelPos -= 170; кайтуу Түсү (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // Эки шакекче жана таякча үчүн кээ бир NeoPatternsти аныктаңыз // ошондой эле NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete) кээ бир толтуруу процедуралары; const int BRIGHTNESS = 50; // Баарын баштап жана жараксыз орнотууну баштоого даярдануу () {Serial.begin (115200); pinMode (2, INPUT); pinMode (0, INPUT); // Jewels.setBrightness (BRIGHTNESS) бардык пикселдерин инициализациялоо; Jewels.begin (); // Зергердик үлгүсүн ачыңыз. 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; Jewels. TotalSteps = 100; Jewels. Interval = 1; } else if (digitalRead (0) == HIGH) // #2 баскычы {Jewels. Color1 = Jewels. Color (255, 0, 0) басылган; Jewels. ActivePattern = СКАНЕР; Jewels. TotalSteps = Jewels.numPixels (); Jewels. Interval = 100; } else // Нормалдуу иштөөгө кайтуу {// Бардык үлгү параметрлерин калыбына келтирүү Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Jewels. Interval = 100; }} // ---------------------------------------------- -------------- // Аяктоо тартиби-бир үлгү бүткөндө чакырылыңыз // ---------------------- -------------------------------------- // Jewels Completion Callback void JewelsComplete () {// Кийинки сканерлөө үчүн туш келди түс өзгөртүү //Jewels. Color1 = Jewels. Wheel (random (255)); Jewels. Reverse (); }

2 -кадам: Районду чогултуу

Circuit чогултуу
Circuit чогултуу
Circuit чогултуу
Circuit чогултуу

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

Эки NeoPixel асыл таштарынын ортосундагы байланыштар үчүн жиптин жиптерин (узундугу болжол менен 6in/15cmin) колдонуңуз (мурунку кадамдагы диаграмма). Эгерде сиз өтө кыска зымдарды колдонсоңуз, анда сиз LED көздөрүңүздү бир -биринен алысыраак жайгаштыра албайсыз, эгер сиз өтө көп зым колдонсоңуз, костюм кийип жүргөнүңүздө боштук бетиңизге түшөт.

Негизги схема lapel аймагында жашайт (көкүрөгүңүз ийиниңизге туура келет), андыктан чынжырдагы биринчи NeoPixel зергери менен Gemma ортосундагы байланыштар үчүн зымдар алда канча узун болот. Сиз зымды көзүңүздүн аймагына чейин кармап, зымдын басып өтүшү керек болгон аралыкты өлчөп, анан боштук жана камсыздандыруу үчүн бир аз көбүрөөк кошо аласыз.

Gemma менен зымсыз ресивердин ортосунда туташуу үчүн, мен прототиптештирүүчү зымдарды аялдын баштары менен колдонууну чечтим, анткени зымсыз кабыл алгычта башына төөнөгүчтөр тиркелген.

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

Батарея кубаты
Батарея кубаты
Батарея кубаты
Батарея кубаты

Районду иштетүү үчүн мен 500 мАч липолялык батареяны колдондум. Эгерде липолялык батарейканы колдонуп жатсаңыз, аны чийиктен, тешүүдөн, сүрүлүүдөн, ийилүүдөн жана башка кыянаттыктардан коргоо акылдуулукка жатат. Сиз аны кандайдыр бир бышык кездемеге ороп, же 3D басып чыгаруучу кармагыч жасай аласыз.

Анын ордуна 3xAAA кармагычты оңой колдонсоңуз болот (лапелдин ичине эмес, чөнтөгүңүзгө салып жүрүңүз).

4 -кадам: Тигүү үлгүсү жана кездеме кесүү

Тигүү үлгүсү жана кездеме кесүү
Тигүү үлгүсү жана кездеме кесүү

Мен бул костюмдун биринчи версиясы үчүн жараткан үлгүмдү колдондум, ал көп беттердеги PDF болуп, үлгүлөрдүн бөлүктөрүн түзөт.

Тканиңизди бүктөңүз, кездеменин данын тегиздөө үчүн четин тегиздеп, үлгү кесимдерин белгиленгендей бүктөп коюңуз. Белги бор же карандаш менен 5/8ин/3см үлгүдөгү бөлүктөрдүн сыртында (бүктөмөдөн тышкары) тигилген жөлөк пулду караңыз. Менин кездемем жука болгондуктан, мен аны эки эсе көбөйткүм келди, жана мен эки капюшон жасагандыктан, мен негизги кездеменин ар бир үлгүсүнүн төрттөн бир бөлүгүн кыркып бүттүм, анан сыртына текстураны кошуу үчүн дагы бир катмарды кездеме менен жабыштырып, акыры жарыктын киришине тоскоолдук кылуу үчүн кара кездеменин катмары. Мен ойлойм, эгерде мен муну алдын ала пландап койгондо, мен алгачкы ак катмарлардын бирин түшүрмөкмүн жана капоттор төртөөнүн ордуна үч гана катмардан турмак.

5 -кадам: кездемелердин бөлүктөрүн чогултуу

Кездемелердин бөлүктөрүн чогултуу
Кездемелердин бөлүктөрүн чогултуу
Кездемелердин бөлүктөрүн чогултуу
Кездемелердин бөлүктөрүн чогултуу
Кездемелердин бөлүктөрүн чогултуу
Кездемелердин бөлүктөрүн чогултуу
Кездемелердин бөлүктөрүн чогултуу
Кездемелердин бөлүктөрүн чогултуу

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

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

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

6 -кадам: Гуддагы Circuit орнотуу

Районду Hoodка орнотуңуз
Районду Hoodка орнотуңуз

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

Экинчи капот жасап жатсаңыз, чайкаңыз жана кайталаңыз.

7 -кадам: Аны кий

Аны кий!
Аны кий!
Аны кий!
Аны кий!
Аны кий!
Аны кий!
Аны кий!
Аны кий!

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

Жигитим экөөбүз муну ушул жылы Хакоуин мейкиндигимдеги DJге кийип жүрдүм жана лазердик проектордун интерфейсин көрүп турганымда, ал Абелтондогу кичинекей текстти таптакыр айырмалай алган жок, ошондуктан биз аны жакшыраак көрүү. Мен капоттун үстүңкү бөлүгүнөн кара кездемеден жасалган панелди алып салдым жана ашыкчасын бүктөдүм. Караңгы бөлмөдө, экөөнүн айырмасын айта албайсыз, бирок муну жогорудагы чогуу түшкөн сүрөтүбүздөн көрүп турасыз.

Окуганыңыз үчүн рахмат! Эгерде сиз бул долбоорду жактырсаңыз, анда менин кээ бирөөлөрүмө кызыкдар болушуңуз мүмкүн:

  • Светодиоддорду таркатуу боюнча 13 идея
  • Arduino/Bluetooth менен жайылган LED Strip белгиси
  • ESP8266 менен YouTube жазылуучу эсептегич
  • Оңой Infinity Mirror
  • 3 Баштоочу Ардуино каталары

Мен иштеп жаткан нерсеге жетүү үчүн YouTube, Instagram, Twitter жана Pinterestте мени ээрчиңиз.

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