Мазмуну:

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

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

Video: Холи-галстук: 8 кадам (сүрөттөр менен)
Video: Аял кантсе, эркекти тошокто кандырат? 2024, Ноябрь
Anonim
Image
Image

By gwfongMonkey PatchingFollow More by Author:

Жарыктандыруучу ит пандусу
Жарыктандыруучу ит пандусу
Болот жүрөк жана эритилген айнек скульптурасы
Болот жүрөк жана эритилген айнек скульптурасы
Болот жүрөк жана эритилген айнек скульптурасы
Болот жүрөк жана эритилген айнек скульптурасы
Жез сым жана эритилген айнек көпөлөгү
Жез сым жана эритилген айнек көпөлөгү
Жез сым жана эритилген айнек көпөлөгү
Жез сым жана эритилген айнек көпөлөгү

Жөнүндө: Жөн эле сонун нерселерди жасоону көздөгөн жигит gwfong жөнүндө көбүрөөк маалымат »

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

Баары CircuitPython системасында иштеген Python программалоо тили менен коддолгон. Бул 3.7V, 500mAH LiPo батарейкасы менен иштейт, ал күйгүзүү/өчүрүү которгучуна ээ болгон.

Холи-галстукту көрсөткөн эки видео клип бар:

  • Холи-галстук аяктады
  • Холи-галстуктун ичинде

1 -кадам: Бөлүктөр жана шаймандар

Бөлүктөр

  • Circuit Playground Express
  • 15x Flora Neopixels
  • Магнит зым
  • Желим илгич жана илмек скотч
  • JST туташтыргычы бар 500mAH lipo батареясы
  • Кенди камыш галстугу
  • Мини слайд которгуч, SPDT
  • Жылуулукту кыскартуучу түтүк

Бөлүктөрдү сатып алууда кошумча сатып алуу акылдуулукка жатат. Менде жалпысынан 20 NeoPixels бар болчу, алардын бири башынан бери бузулуп, экинчиси талкаланды. Кенди камыштын галстугу ушунчалык арзан болгондуктан, биринчисин талкаласам эле экинчисин сатып алдым.

Куралдар

  • Ысык желим мылтык
  • Лагердик станция
  • Сым кескичтер
  • Кичинекей бычак
  • Мультиметр
  • Компьютер
  • Жеңил же жылытуучу курал
  • Жип жана ийне

2 -кадам: Галстукту окуу

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

Негизги максат - ички галстуктун өзөгүнө жетүү жана LEDлердин кайда жайгашуу керектигин көрсөтүү.

1 -кадам: галстукту позицияга байлаңыз

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

Ар кандай галстук түйүндөрү бар. Мен бала кезде үйрөнгөн нерсени гана билем, Виндзор. Кайсы түйүн колдонулганы маанилүү эмес.

2 -кадам: галстуктун арт жагын ачыңыз

Галстуктун жана логотиптин бир жагындагы тигүүлөрдү ачып, анан галстуктун ортосунан ылдый түшүрүңүз. Этият болуңуз, анткени аягында кайра тигилиши керек.

3 -кадам: LEDлерди жайгаштыруу керек болгон сызыктарды чийиңиз

Светодиоддор галстуктун ак тилкелүү бөлүмдөрүндө пайда болушу үчүн, галстуктун өзөгүнүн арт жагындагы ар бир ак тилке бөлүмүнүн борбордук линиясын табуу оңоюраак болот, андан кийин галстуктун өзөгүнүн маңдайына карта салыңыз. Орто сызык 1) борбордо жана 2) тилке менен параллель экенин текшерип, эки жолу текшериңиз. LED позицияларын так жөндөө, эгер алар бир аз өчүрүлгөн болсо, мүмкүн болот. Бирок кийинчерээк эмес, азыр так болгонго жакын.

Сызыктардын LEDлерин сызыктарга коюп, үстүнө тилкелүү кездемени коюу менен линиялардын централдуулугун текшериңиз. Керек жерде тууралаңыз.

3 -кадам: NeoPixels тиркөө

NeoPixels тиркөө
NeoPixels тиркөө
NeoPixels тиркөө
NeoPixels тиркөө
NeoPixels тиркөө
NeoPixels тиркөө
NeoPixels тиркөө
NeoPixels тиркөө

Негизинен, биз өзүбүз LED тилкесин жасап жатабыз. Биз жөн гана LEDдерди галстуктун өзөгүнө орнотуп, анан бири -бирине туташтырабыз.

1 -кадам: NeoPixelsти галстуктун өзөгүнө карманыңыз

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

NeoPixelsтин бардыгын төмөндөн оңго карай бир багытка бурууну унутпаңыз. Эгерде бул туура эмес болсо, тилке иштебейт.

Ысык клей жөнүндө эскертүү. Долбоорду аягына чыгаруу үчүн жетиштүү болот. Ал көп жылдарга созулабы же жокпу, аны бир гана көрүш керек.

3 -кадам: NeoPixelsти бири -бирине ээрчиңиз

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

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

4 -кадам: байланышты текшерүү

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

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

4 -кадам: Circuit Playground Express тиркөө

Circuit Playground Express тиркөө
Circuit Playground Express тиркөө

Circuit Playground Express (CPX) системанын жүрөгү. Adafruitте бул контролер үчүн көптөгөн окуу куралдары бар. Кийинчерээк бул көрсөтмөдө мен MCU өзгөчөлүктөрүнүн бир нечесин бөлүп көрсөтөм.

1 -кадам: CPX'ти NeoPixelдин ылдый жагына ээрчиңиз

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

Кийинки галстуктун өзөгүн оодарыңыз жана CPXти каалоо абалына коюңуз. Электр зымын VOUT аянтчасына, жерге зымды каалаган жерге төшөгүчкө жана маалымат зымын A0дон башка I/O аянтчасына бериңиз. Мен жазган код A3 колдонот.

Байланышты текшериңиз.

2 -кадам: CPXти байлаңыз

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

5 -кадам: CPXти иштетүү

CPX иштетүү
CPX иштетүү
CPX иштетүү
CPX иштетүү
CPX иштетүү
CPX иштетүү

CPXтин күйгүзүү/өчүрүү өчүргүчү жок. Бул батарея туташтырылган учурда галстук күйгүзүлөт дегенди билдирет. Бул ошондой эле аны өчүрүүнүн бирден -бир жолу - бул чоң түйшүк болгон батареяны сууруу. Жөнөкөй чечим - бул батареяны өчүрүү/өчүрүү которгучун коюу.

1 -кадам: Коммутатордун 3 -пинин кесип салыңыз

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

2-кадам: Коммутаторду батареяга коргошун менен кошуңуз

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

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

3 -кадам: Батарейканын иштешин текшериңиз

Бул учурда, батарейканы CPXке туташтырса болот. Эгерде баары ойдогудай болсо, которуштуруучу CPXти күйгүзүп жана өчүрүшү керек.

4 -кадам: Батарейканы орнотуңуз

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

6 -кадам: Circuit Playground Expressти орнотуу

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

CPX тоңот

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

Эскертүү: Бул баарын өчүрөт. CPXтеги бардык коддор жоголот.

CPXке өзгөртүүлөрдү сактоо көйгөйлөрдү жаратышы мүмкүн

Мен кээде файлды CPXке сактагандан кийин, питондун иштөө убактысы начар абалда болорун билдим. Оңдоо баскычын басуу менен pythonдун иштөө убактысы кайра башталды. Аны бир эле жолу басыңыз. Аны эки жолу басуу кайра жаркылдоо процессин баштайт.

CPXке түз сактоо - бул тобокелчилик

CPXти кайра чагылдыруу мүмкүнчүлүгүнөн улам, алардын коддорунун бардыгын жоготуп алуу коркунучу бар. Кодумду эки жолу жоготкондон кийин, мен жөнөкөй жумуш процессин ойлоп таптым. Мен кодумду жергиликтүү катуу дискте сактайт элем. Качан CPXте сыноого даяр болгондо, мен аны жөнөкөй жайылтуу скриптин иштетүү менен көчүрмөкмүн.

7 -кадам: Circuit Playground Expressти коддоо

Бул учурда, CPX жана NeoPixels дээрлик толук. Алар менен башка механикалык же электрдик иштерди жасоонун кажети жок. Калганынын баары программалык камсыздоо.

Кодду менин github эсебимден тапса болот. Негизги питон коду бардык операциялык системалар үчүн эч кандай өзгөрүүсүз иштеши керек. Тышкы Adafruit CircuitPython китепканаларын орнотпоңуз. Алар колдонулбайт.

Бул жерде коддо болуп жаткан нерселердин жогорку деңгээлдеги кыскача баяны.

Киргизүү эмне кылат?

  • А баскычы: LED анимациялары аркылуу айланат
  • Б баскычы: Ырлар аркылуу өтөт
  • Capacitive Touch Pad A1: LED анимациясынын түстөрүн өзгөртөт
  • Capacitive Touch Pad A6: LED анимациясынын ылдамдыгын өзгөртөт

3 анимация бар, бирок 2 гана күчүндө

code.py

pixelsoff импорттоо

# импорт вуметр импорттук тепкич импорт жаркылдайт… led_animations = [pixelsoff. PixelsOff (пикселдер), # vumeter. VuMeter (пикселдер, 100, 400) тепкичтер. Чондор (пикселдер), жымыңдашуу.

Мен Ampli-Tie VU метр стили кодун алып жүрдүм. Бул үндү алуу жана үн амплитудасына негизделген NeoPixelsти жарыктандыруу үчүн CPX микрофонун колдонот. Бирок, мен дагы анимацияларды каалагам. Иш убактысынын эс тутумунун чектелишинен улам мен каалаган анимацияны тандашым керек болчу. Ошентип, демейки боюнча, калган экөө, Stairs and Twinkle, кодду өзгөртпөстөн иштейт. VU метр анимациясын иштетүү үчүн, башка анимациялардын бирин же экөөнү тең комментарийлеп, VU метрин комментарийсиз калтыруу керек.

Музыка менеджери жана оффлайн коддоо

frosty_the_snowman.py

m_ катары музыкалык эскертүүлөрдү импорттоо

# Frosty Snowman # Уолтер Э. Роллинз ыры

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", эскертүү, dur))

Мен майрамдык музыканы кааладым. CPX WAV жана обондорду колдойт. WAV файлдары файлдын өлчөмү жана иштөө убактысынын эс тутуму боюнча өтө чоң болуп чыкты. Обондорду кармоо үчүн python маалымат структураларын колдонуу жана алардын иштөө мөөнөтү да өтө көп иштөө эсин колдонуп калды. Ошентип, Holi-Tie кодун кысылган экилик форматта керектүү ыр маалыматтарын камтыган кысылган бинардык файлды окуу үчүн өзгөрттүм. Мен сценарий жаздым, ал python маалымат структурасында сакталган ырды окуп, аны бинардык форматка жазат. Ырдын файлдагы бинардык маалымат катары коддолушу ырды кичине жана динамикалык кылат. Ыр бүткөндөн кийин, эс тутум бошотулат.

Көбүрөөк ыр кошуу анча маанилүү эмес. Чоо -жайын билүү үчүн, ырлардагы README.md караңыз.

A баскычы NeoPixelsти жандандырат, B музыка ойнойт, бирок бир эле учурда эмес

code.py

def button_a_pressed ():

if music.is_playing (): # Музыка ойноп жатса музыканы токтотуңуз. токтотуу () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Non-op animation next_led_animation (0) if music.is_playing (): # Toggle музыка күйүк же өчүк music.stop () else: music.play ()

Эстутуму натыйжалуу болгон музыканы башкаруу тутуму менен, мен 2 анимацияны иштөө учурунда, 1ди ойнотуп, ырды бир убакта ойной алган жокмун. Мен VU эсептегичтин иштөө убактысынын эс тутумунда болбоону тандаганым үчүн, анимациялардын санын 1ге чейин кыскарткым келген жок. Андыктан анимация ойноп же музыка ойноп жаткандай кылып код жаздым. экөө тең. Дагы бир вариант NeoPixels санын азайтуу болчу, бирок анимациянын муздактыгын жоготот.

Python Code Funkiness

Мен ардагер программалык камсыздоону иштеп чыгуучу болсом да, мен эч качан Python жазган эмесмин. Мен колума тийгенден кийин, инкапсуляция жана модулизация сыяктуу жакшы коддоо тажрыйбаларын колдоно баштагандан кийин, мен иштөө убактысынын эс тутумун көп колдонуп жатканымды дароо түшүндүм. Ошентип, бир аз DRY эмес код бар. Мындан тышкары, иштөө убактысынын эс тутумундагы маселелерди андан ары азайтуу үчүн const () сыяктуу MicroPython техникаларын колдонууга туура келди.

Түзүлгөн модулдар

компиляциялоо

#!/bin/bash

compiler = ~/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ти жеткиликтүү кылуу үчүн шектенбесек болот. Батареяны алмаштырууда же кодду өзгөртүүдө сизге керек болот.

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