Мазмұны:

Холи-галстук: 8 қадам (суреттермен)
Холи-галстук: 8 қадам (суреттермен)

Бейне: Холи-галстук: 8 қадам (суреттермен)

Бейне: Холи-галстук: 8 қадам (суреттермен)
Бейне: 💥РЕМОНТ КАРБЮРАТОРА К-151 ПОДРОБНО. 2024, Шілде
Anonim
Image
Image

GwfongMonkey PatchingFollow Толығырақ автордың:

Жарықтандыратын ит пандусы
Жарықтандыратын ит пандусы
Болат жүрек және балқытылған әйнектен жасалған мүсін
Болат жүрек және балқытылған әйнектен жасалған мүсін
Болат жүрек және балқытылған әйнектен жасалған мүсін
Болат жүрек және балқытылған әйнектен жасалған мүсін
Мыс сым мен балқытылған шыны көбелек
Мыс сым мен балқытылған шыны көбелек
Мыс сым мен балқытылған шыны көбелек
Мыс сым мен балқытылған шыны көбелек

Туралы: Керемет нәрсе жасағысы келетін жігіт gwfong туралы толығырақ »

Бұл мереке кезінде киюге арналған мерекелік галстук-Холи-галстук. Flora тақтасын қолданатын Бекки Стерннің Ampli-Tie-ге негізделген, Holi-Tie NeoPixel анимациялары мен музыкасын басқару үшін Circuit Python Express (CPX) микроконтроллерін қолданады. 2 түрлі NeoPixel анимациясының арасында түйме ауысады. Сыйымды сенсорлық тақталар NeoPixel түстерін және анимация жылдамдығын өзгертеді. Басқа түйме жарықдиодты анимация мен музыка арасында ауысады. Борттық микрофон VU метрлік анимация үшін қоршаған ортаның шуын өлшеу үшін қолданылады. Ал CPX динамигі мерекелік чиптерді шығарады.

Барлығы CircuitPython жүйесінде жұмыс істейтін Python бағдарламалау тілінің көмегімен кодталған. Ол 3.7В, 500мАч LiPo батареясымен жұмыс істейді, ол қосу/өшіру қосқышына өзгертілген.

Холи-галстук көрсететін екі бейнеклип бар:

  • Холи-галстук аяқталды
  • Холи-галстуктің ішінде

1 -қадам: Бөлшектер мен құралдар

Бөлшектер

  • Экспресс ойын алаңы
  • 15x флора неопиксельдері
  • Магнит сым
  • Жабысқақ ілмек пен ілмек таспасы
  • JST коннекторы бар 500 мАч липо батареясы
  • Кәмпит таяқшасы
  • Шағын слайд қосқышы, SPDT
  • Жылуды төмендететін құбырлар

Бөлшектерді сатып алғанда, қосымша сатып алу дұрыс болар еді. Менде барлығы 20 NeoPixels болды, олардың біреуі басынан бастап бұзылды, ал біреуі мен қиратты. Candy қамысының галстугінің бағасы соншалықты арзан болды, мен біріншісін бұзған жағдайда, екіншісін сатып алдым.

Құралдар

  • Ыстық желім қаруы
  • Дәнекерлеу станциясы
  • Сым кескіштер
  • Кішкентай пышақ
  • Мультиметр
  • Компьютер
  • Жеңіл немесе ыстық мылтық
  • Жіп пен ине

2 -қадам: галстукті оқу

Галстукті оқу
Галстукті оқу
Галстукті оқу
Галстукті оқу
Галстукті оқу
Галстукті оқу

Негізгі мақсат - ішкі галстук өзегіне қол жеткізу және жарықдиодты шамдардың қайда орналасатынын көрсететін сызықтарды ажырату.

1 -қадам: Галстукті орнына бекітіңіз

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

Әр түрлі байланыстырушы түйіндер бар. Мен бала кезімде үйренген Виндзорды ғана білемін. Қандай түйін қолданылғаны маңызды болмауы керек.

2 -қадам: галстуктің артқы жағын ашыңыз

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

3 -қадам: Светодиодтар орналастырылатын сызықтарды сызыңыз

Светодиодтар галстуктің ақ жолақ бөліктерінде пайда болуы үшін галстук өзегінің артқы жағындағы әрбір ақ жолақ бөлігінің ортаңғы сызығын табу оңай, содан кейін галстук өзегінің алдыңғы жағымен салыстырыңыз. Ортаңғы сызықтың 1) ортасында және 2) жолаққа параллель екенін тексеріңіз және қайталап тексеріңіз. Жарық диодты позицияларды дәл баптауға болады, егер олар аз болса. Бірақ кейінірек емес, дәл қазір дәл болған дұрыс.

Сызықтарға жарықдиодты қою және жолақты матаны үстіне қою арқылы сызықтардың центрлілігін тексеріңіз. Қажет жерде реттеңіз.

3 -қадам: NeoPixels орнату

NeoPixels тіркесімі
NeoPixels тіркесімі
NeoPixels тіркесімі
NeoPixels тіркесімі
NeoPixels тіркесімі
NeoPixels тіркесімі
NeoPixels тіркесімі
NeoPixels тіркесімі

Негізінде, біз жарықдиодты жолақты өзіміз жасаймыз. Біз светодиодтарды байлау өзегіне орнатамыз, содан кейін оларды бір -бірімізге қосамыз.

1 -қадам: NeoPixels -ті өзекшеге жабыстырыңыз

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

Барлық NeoPixels -ті төменнен оңға қарай бір бағытта бағыттауды ұмытпаңыз. Егер бұл дұрыс болмаса, жолақ жұмыс істемейді.

Ыстық желім туралы ескерту. Жобаны аяқтау жеткілікті болады. Ол ұзақ жылдарға созыла ма, оны тек көру керек.

3 -қадам: NeoPixels бір -біріне дәнекерлеңіз

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

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

4 -қадам: Байланысты тексеру

Байланысты тексеру үшін мультиметрді қолданыңыз:

  1. Позитивті байланыстар. Ұштан құйрыққа дейін байланыс болуы керек. Тексергіштің сымға емес, жастықшаларға қосылуын тексеріңіз.
  2. Жердегі қосылыстар. Дәл сол сынақты жерге арналған жастықшалармен орындаңыз.
  3. Әрбір деректер жолы. Бір деректер тақтасынан екіншісіне қосылым бар екенін тексеріңіз.

4 -қадам: Ойын алаңының экспрессін бекіту

Ойын алаңының экспрессін бекіту
Ойын алаңының экспрессін бекіту

Circuit Playground Express (CPX) - бұл жүйенің жүрегі. Adafruit -те бұл контроллерге арналған көптеген оқулықтар бар. Кейінірек осы нұсқаулықта мен MCU -ның бірнеше мүмкіндіктерін бөліп көрсетемін.

1 -қадам: CPX төменгі ұшына NeoPixel -ге дәнекерлеңіз

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

Содан кейін галстук өзегін аударып, CPX қалау орнына қойыңыз. Қуат сымын VOUT алаңына, жерге қосу сымын кез келген жерге қосқышқа, ал деректер сымын A0 -нан басқа кез келген енгізу -шығару алаңына беріңіз. Мен жазған код A3 пайдаланады.

Байланысты тексеріңіз.

2 -қадам: CPX байланыстырыңыз

Жіп пен инені қолданып, төрт бірдей қашықтықтағы жастықшаны таңдап, оларды байлау өзегіне тігіңіз.

5 -қадам: CPX жүйесін қосу

CPX қуатын беру
CPX қуатын беру
CPX қуатын беру
CPX қуатын беру
CPX қуатын беру
CPX қуатын беру

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

1 -қадам: Коммутатордағы 3 -ші түйреуішті кесіңіз

Орталық емес түйреуіштердің бірі қажет емес. Оны ажыратқыштың корпусымен біркелкі етіп кесіңіз.

2-қадам: Коммутаторды батарея сымына дәнекерлеңіз

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

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

3 -қадам: Батареяның жұмыс істейтінін тексеріңіз

Бұл кезде батареяны CPX -ке қосуға болады. Егер бәрі ойдағыдай болса, коммутатор CPX қосуға және өшіруге қабілетті болуы керек.

4 -қадам: Батареяны салыңыз

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

6 -қадам: Экспресс ойын алаңын орнату

Мен CPX қалай орнату туралы егжей -тегжейлі айтпаймын. Адафрут мұны жасайды, содан кейін біраз. Мен жиі кездесетін мәселелер бойынша бірнеше кеңестер беремін.

CPX қатып қалады

Мүмкін, жұмыс уақыты жадының ақауларына байланысты, CPX жиі қатып қалады. Жылдам түзету-өшіру және қайта жыпылықтау. Осы нұсқаулықта «Ескі жолды» іздеңіз. Негізінде, бұл бірнеше түймені басу, өшіру үшін апарып тастау, содан кейін қайта жыпылықтау үшін апарып тастау.

Ескерту: бұл бәрін жояды. CPX бойынша барлық код жоғалады.

CPX -ке өзгертулерді сақтау мәселелерді тудыруы мүмкін

Мен кейде файлды CPX -ке сақтағаннан кейін питонның жұмыс уақыты нашар болатынын білдім. Қалпына келтіру түймесін басу арқылы түзету python жұмыс уақытын қайта бастады. Оны тек бір рет басыңыз. Оны екі рет басу қайта жарқылдау процесін бастайды.

CPX -ке тікелей сақтау қауіпті

CPX қайта жыпылықтауы мүмкін болғандықтан, олардың барлық кодын жоғалту қаупі бар. Менің кодты екі рет жоғалтқаннан кейін мен қарапайым жұмыс процесін ойлап таптым. Мен кодты жергілікті қатты дискіге сақтайтын едім. Ол CPX -те тестілеуге дайын болғанда, мен оны жай орналастыру сценарийін іске қосу арқылы көшіретін едім.

7 -қадам: Ойын алаңының экспрессін кодтау

Бұл кезде CPX және NeoPixels толықтай аяқталды. Олармен басқа механикалық немесе электрлік жұмыстардың қажеті жоқ. Қалғаны бағдарламалық қамтамасыз ету.

Кодты менің github есептік жазбамнан табуға болады. Негізгі python коды барлық операциялық жүйелер үшін еш өзгеріссіз жұмыс істеуі керек. Adafruit CircuitPython сыртқы кітапханаларын орнатпаңыз. Олар қолданылмайды.

Бұл кодта не болып жатқаны туралы жоғары деңгейдегі қысқаша ақпарат.

Қандай енгізу не істейді?

  • А түймесі: жарықдиодты анимация арқылы айналады
  • B түймесі: Әндер бойынша циклдар
  • А1 сыйымдылық тақтасы: жарықдиодты анимацияның түстерін өзгертеді
  • А6 сыйымдылық тақтасы: жарықдиодты анимацияның жылдамдығын өзгертеді

3 анимация бар, тек 2 -сі ғана әрекет етеді

code.py

пиксельді импорттау

# импорттық вуметрлік баспалдақтарды импорттау жыпылықтайды… led_animations = [pixelsoff. PixelsOff (пиксельдер), # vumeter. VuMeter (пиксельдер, 100, 400) баспалдақтар. Тайлар (пиксельдер), жыпылықтау. Жылтырау (пикселдер)]

Мен Ampli-Tie VU метр стилінің кодын жібердім. Ол дыбыс амплитудасына негізделген NeoPixels дыбысын алу және жарықтандыру үшін CPX микрофонын қолданады. Дегенмен, мен көбірек анимация алғым келді. Жұмыс уақытының жадының шектеулеріне байланысты маған қажет анимацияны таңдау керек болды. Әдепкі бойынша, қалған екеуі, баспалдақтар мен жыпылықтау кодты өзгертпестен жұмыс істейді. VU метрлік анимацияны іске қосу үшін басқа анимациялардың біреуіне немесе екеуіне де түсініктеме беру керек, ал VU өлшегішке түсініктеме бермеу керек.

Музыка менеджері және желіден тыс кодтау

аязды_қар_қар

музыкалық ескертулерді mn ретінде импорттаңыз

# Аязды қар адамы # Уолтер Э. Роллинз әні

convert_to_binary.py

әндер = [(jingle_bells.song, «jingle_bells.bin»), (frosty_the_snowman.song, «frosty_the_snowman.bin»)] әндердегі ән үшін: data = song [0] file = song [1] with open (file, «wb») bin_file ретінде: деректерді енгізу үшін: басып шығару («жазу:» + str (енгізу)) note = жазба [0] dur = енгізу [1] bin_file.write (struct.pack («<HH», ескерту, ұзақ))

Маған мерекелік музыка керек еді. CPX WAV және тондарды қолдайды. WAV файлдары файл өлшемі мен жұмыс уақыты жады бойынша тым үлкен болып шықты. Питонның деректер құрылымын тондарды және олардың ұзақтығын сақтау үшін пайдалану тым көп жұмыс уақытының жадын қолданатын болып шықты. Мен Holi-Tie кодын сығылған екілік форматта тек қажетті ән деректері бар сығылған екілік файлды оқу үшін өзгерттім. Мен сценарий жаздым, ол python деректер құрылымында сақталған әнді оқиды және оны екілік форматқа жазады. Әннің файлда екілік деректер ретінде кодталуы әннің шағын әрі динамикалық болуын қамтамасыз етеді. Әннің орындалуы аяқталғаннан кейін есте сақтау орны босатылады.

Көбірек ән қосу - бұл маңызды емес. Мәліметтер үшін әндердегі README.md қараңыз.

A түймесі NeoPixels анимациялайды, B музыка ойнайды, бірақ бір мезгілде емес

code.py

def button_a_pressed ():

if music.is_playing (): # Музыка ойнап жатса, музыканы тоқтатыңыз.топты тоқтатыңыз () келесі_лед_анимация () def түймесі_b_pressed (): егер белсенді_лендірілген болса! = 0: # music.is_playing () болса, no-op animation next_led_animation (0): # ауысу музыка қосылады немесе өшіріледі. stop () else: music.play ()

Музыканы басқарудың жадында неғұрлым тиімді жүйе болса да, мен 2 анимацияны жұмыс уақытында сақтай алмадым, олардың бірін ойнап, сонымен қатар әнді бір уақытта ойнай алмадым. Мен жұмыс уақытының жадында VU өлшегіші болмауды таңдағандықтан, мен анимация санын 1 -ге дейін қысқартқым келмеді. Сондықтан кодты анимация ойнап немесе музыка ойнап тұрғаны үшін жаздым, бірақ олай емес екеуі де. Тағы бір нұсқа NeoPixels санын азайту болды, бірақ бұл анимацияның кейбір салқындықтарын жоғалтады.

Python кодының функционалдығы

Мен бағдарламалық жасақтаманың ардагері болсам да, мен ешқашан Python жазған емеспін. Мен бұған қол жеткізгеннен кейін және инкапсуляция мен модульдеу сияқты жақсы кодтау әдістерін қолдануды бақылағаннан кейін, мен жұмыс уақытының жадын тым көп қолданатынымды тез білдім. Сондықтан DRY емес код бар. Сондай -ақ, жұмыс уақытының жады мәселелерін одан әрі азайту үшін кейбір MicroPython әдістерін қолдануға тура келді, мысалы const ().

Құрастырылған модульдер

құрастыру

#!/bin/bash

компилятор = ~/development/circuitpython/mpy-cross-3.x-windows.exe cd әндері python3./convert_to_binary.py cd.. үшін f in *.py; егер

Жобаның басында мен Адафруттың кеңесіне құлақ асып, барлық Adafruit CircuitPython кітапханаларын тез сақтадым. Алайда, бұл менің жобама аз орын қалдырды. Менің кодты CPX -ке алу үшін мен модульдерді құрастыруды және оларды MCU -ге орналастыруды бастадым. Холи-галстукке сыртқы кітапханалардың ешқайсысы қажет емес екен. UF2 -де бар кітапханалар бұл жоба үшін жеткілікті болды. *. Mpy файлдарын іске қосу әлдеқайда тиімді, сондықтан мен жинақталған модульдерді орналастыру процесін сақтадым.

Жоғарыдағы компиляция сценарийінде көрініп тұрғандай, мен Windows машинасында жұмыс жасаймын, бірақ bash және python3 сияқты Unix утилиталарын қолданамын. Мен бұған жету үшін Cygwin қолданамын. Бұл сценарийді DOS пакетіне және Windows жергілікті Python3 бағдарламасына оңай аударуға болады.

8 -қадам: галстук түймесін басыңыз

Галстукті түймелеу
Галстукті түймелеу
Галстукті түймелеу
Галстукті түймелеу

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

Ұсынылған: