Mundarija:

Xoli-galstuk: 8 qadam (rasmlar bilan)
Xoli-galstuk: 8 qadam (rasmlar bilan)

Video: Xoli-galstuk: 8 qadam (rasmlar bilan)

Video: Xoli-galstuk: 8 qadam (rasmlar bilan)
Video: 5 USUL BILAN KELIN UYINI BEZATISHBino maketlari Logotip 2024, Iyul
Anonim
Image
Image

Muallif: gwfongMonkey PatchingFollow More by:

Yorituvchi it rampasi
Yorituvchi it rampasi
Chelik yurak va eritilgan shisha haykal
Chelik yurak va eritilgan shisha haykal
Chelik yurak va eritilgan shisha haykal
Chelik yurak va eritilgan shisha haykal
Mis sim va erigan shisha kapalak
Mis sim va erigan shisha kapalak
Mis sim va erigan shisha kapalak
Mis sim va erigan shisha kapalak

Haqida: Qiziqarli narsalar qilishni istagan yigit gwfong haqida ko'proq »

Bu Holi-Tie bayram kunlari taqish uchun mo'ljallangan bayramona galstuk. Florki taxtasidan foydalanadigan Bekki Sternning Ampli-Tie-ga asoslanib, Holi-Tie NeoPixel animatsiyalari va musiqasini boshqarish uchun Circuit Python Express (CPX) mikrokontroleridan foydalanadi. Bir tugma 2 xil NeoPixel animatsiyasi o'rtasida o'zgaradi. Sig'imli sensorli prokladkalar NeoPixel ranglarini va animatsiya tezligini o'zgartiradi. Boshqa tugma LED animatsiyasi va musiqa o'rtasida o'zgaradi. Bort mikrofoni VU o'lchagich animatsiyasi uchun atrofdagi shovqinlarni o'lchash uchun ishlatiladi. Va CPX dinamikasi bayram chiplarini kuylaydi.

Hammasi CircuitPython tizimida ishlaydigan Python dasturlash tili yordamida kodlangan. U 3.7V, 500mAH LiPo batareyasi bilan jihozlangan, uni yoqish/o'chirish tugmasi o'zgartirilgan.

Holi-Tie-ni ko'rsatadigan ikkita videoklip bor:

  • Xoli-galstuk tugadi
  • Holi-galstuk ichida

1 -qadam: ehtiyot qismlar va asboblar

Qismlar

  • O'yin maydonchasi ekspressi
  • 15x Flora neopiksellari
  • Magnit sim
  • Yopishqoq kanca va pastadir tasmasi
  • JST ulagichli 500 mA / soat lipo batareyasi
  • Candy qamish taqish
  • Mini slaydni almashtirish, SPDT
  • Issiqlikka chidamli quvurlar

Qismlarni sotib olayotganda, qo'shimcha sotib olish oqilona bo'ladi. Menda jami 20 ta NeoPixel bor edi, ulardan biri boshidan sindirilgan, ikkinchisi esa men vayron qilganman. Candy qamishining galstuklari shunchalik arzon ediki, men ikkinchisini sotib oldim.

Asboblar

  • Issiq yopishtiruvchi qurol
  • Lehimlash stantsiyasi
  • Tel kesgichlar
  • Kichik pichoq
  • Multimetr
  • Kompyuter
  • Yengilroq yoki issiq qurol
  • Ip va igna

2 -qadam: galstukni o'qish

Galstukni o'qish
Galstukni o'qish
Galstukni o'qish
Galstukni o'qish
Galstukni o'qish
Galstukni o'qish

Asosiy maqsad - ichki galstuk yadrosiga kirish va LEDlarni qaerda joylashtirish kerakligini ko'rsatuvchi chiziqlarni ajratish.

1 -qadam: galstukni joyiga bog'lang

Elektron buyumlar joyida bo'lsa, galstuk taqish qiyin bo'ladi. Shunday qilib, galstukni yaxshi ko'rinadigan qilib bog'lang va tugun etarlicha mustahkam va ochilmasin. Keyin galstukni boshidan uzib olish uchun teshikni ochish uchun galstukning kichik uchini ehtiyotkorlik bilan torting. Bu galstuk ishlanadigan pozitsiya.

Har xil taqish tugunlari mavjud. Men faqat bolaligimda o'rgangan, Vindzorni bilaman. Qaysi tugun ishlatilganligi muhim emas.

2 -qadam: galstukning orqa qismini oching

Tarmoqli halqa va logotipning bir tomonidagi tikuvlarni oching, so'ngra galstukning o'rtasidan pastga tushiring. Ehtiyot bo'ling, chunki uni oxirigacha tikib qo'yish kerak.

3 -qadam: LEDlarni joylashtirish kerak bo'lgan chiziqlarni chizish

LEDlarning galstukning oq chiziqli qismlarida paydo bo'lishi uchun galstuk yadrosining orqa qismidagi har bir oq chiziqli bo'lakning markaziy chizig'ini topish osonroq bo'ladi, so'ngra uni galstuk yadrosining old tomoniga joylashtiring. Markaziy chiziq 1) o'rtada va 2) chiziq bilan parallel ekanligini tekshiring va ikki marta tekshiring. LED pozitsiyalarini aniq sozlash, agar ular biroz uzilgan bo'lsa, mumkin bo'ladi. Ammo buni keyinroq emas, hozir aniqroq qilish yaxshiroqdir.

Chiziqlarga LEDlarni qo'yish va chiziqli matoni ustiga qo'yish orqali chiziqlarning markazlashtirilganligini tekshiring. Kerakli joyni sozlang.

3 -qadam: NeoPiksellarni ulash

NeoPiksellarni ulash
NeoPiksellarni ulash
NeoPiksellarni ulash
NeoPiksellarni ulash
NeoPiksellarni ulash
NeoPiksellarni ulash
NeoPiksellarni ulash
NeoPiksellarni ulash

Asosan, biz o'zimiz LED tasmasini ishlab chiqaramiz. Biz shunchaki LEDlarni galstuk yadrosiga o'rnatamiz va keyin ularni bir -biriga ulaymiz.

1 -qadam: NeoPixel -ni galstuk yadrosiga mahkamlang

NeoPixel -ning orqa tomoniga issiq elim surting va uni o'rta chiziqlarga qo'ying. 3 ta NeoPixelli bo'limlar uchun NeoPixel markazini vertikal ravishda tekislang va avval ularni pastga yopishtiring. Bu chap va o'ng NeoPixelni markazga nisbatan joylashtirishni osonlashtiradi, ayniqsa galstuk kengligi yuqoridan pastgacha oshgan bo'lsa.

Barcha NeoPixellarni pastdan o'ngdan o'ngga bir yo'nalishda yo'naltirishga ishonch hosil qiling. Agar bu noto'g'ri bo'lsa, chiziq ishlamaydi.

Issiq elim haqida eslatma. Loyihani yakunlash uchun etarli bo'ladi. Bu ko'p yillar davom etadimi -yo'qmi, faqat ko'rish kerak.

3 -qadam: NeoPixellarni bir -biriga lehimlang

NeoPixelni o'tkazgichli ipni ishlatmasdan, lehimlashga qaror qilganim uchun, NeoPixel yostiqchasidagi teshik biroz bizga qarshi ishlaydi. Simni lehimlash uchun yostiqdan yaxshi joy toping. Teshikni lehim bilan to'ldirishga urinmang, lekin agar shunday bo'lsa, yaxshi bo'ladi.

Magnit sim mis yadro atrofida yupqa izolyatsiyali qatlamga ega. Pichoq bilan, izolyatsiyani faqat lehimlanadigan joydan olib tashlang. Telning butun atrofini qirib tashlash yaxshidir.

4 -qadam: ulanishni tekshiring

Ulanishini tekshirish uchun multimetrdan foydalaning:

  1. Ijobiy aloqalar. Uchdan quyruqgacha ulanish bo'lishi kerak. Sinovning simga emas, balki prokladkalarga ulanishiga ishonch hosil qiling.
  2. Erga ulanishlar. Xuddi shu sinovni, lekin er yostiqchalari bilan bajaring.
  3. Har bir ma'lumot liniyasi. Ma'lumotlar panelidan keyingisiga ulanish mavjudligini tekshiring.

4 -qadam: O'yin maydonchasi ekspressini ulash

O'chirish maydonchasi ekspressini ulash
O'chirish maydonchasi ekspressini ulash

O'chirish maydonchasi Express (CPX) - bu tizimning yuragi. Adafruit -da ushbu nazoratchi uchun ko'plab qo'llanmalar mavjud. Keyinchalik, bu ko'rsatmali, men MCU -ning bir nechta xususiyatlarini ajratib ko'rsataman.

1 -qadam: CPX ni NeoPixelning pastki uchiga lehimlang

Quvvat, topraklama va ma'lumot uchun magnit simning mos uzunligini kesib oling. Ularni NeoPixel quvvatiga, erga va ma'lumotlar yostiqchalariga tegib turishi uchun ularni galstukli matodan o'tkazing. Ularni lehimlang, prokladkalardagi mavjud simlar hali ham yaxshi aloqa o'rnatayotganiga ishonch hosil qiling.

Keyin galstuk yadrosini ag'daring va CPXni xohlagan joyga qo'ying. Quvvat simini VOUT yostig'iga, topraklama simini har qanday topraklama yostig'iga va ma'lumot simini A0 dan boshqa har qanday kirish -chiqish padiga ulang. Men yozgan kod A3 dan foydalanadi.

Ulanishni tekshiring.

2 -qadam: CPX -ni ulang

Ip va ignadan foydalanib, bir xil masofada joylashgan to'rtta prokladkani tanlang va ularni bog'ich yadrosiga tikib qo'ying.

5 -qadam: CPX -ni yoqish

CPX -ni quvvatlantirish
CPX -ni quvvatlantirish
CPX -ni quvvatlantirish
CPX -ni quvvatlantirish
CPX -ni quvvatlantirish
CPX -ni quvvatlantirish

CPX -da yoqish/o'chirish tugmasi yo'q. Bu shuni anglatadiki, batareya ulangan payt galstuk yoqiladi. Bu shuni anglatadiki, uni o'chirishning yagona yo'li batareyani tarmoqdan uzishdir, bu katta qiyinchilik. Batareyani o'chirish/o'chirish tugmachasini qo'yish oddiy echimdir.

1 -qadam: Kalitning 3 -pinini kesib oling

Markaziy bo'lmagan pinlardan biri kerak emas. Kalit korpusi bilan bir tekisda kesib oling.

2-qadam: Kalitni batareyaga ulang

Batareya simini o'rtasidan bir joyga kesib oling. Topraklama simlarining har biriga issiqlik qisqaruvchi quvur bo'lagini siljiting. Bir topraklama simini pimlardan biriga, ikkinchisini esa boshqa pinga lehimlang. Ularning bir -biriga tegmasligiga yoki lehim metall korpusga tegishiga ishonch hosil qiling.

Multimetr yordamida ulanmaganligini tekshiring. Quvurni lehimli ulanishlar ustiga siljiting va uni qisqartiring. Bükme charchoqlari tufayli muvaffaqiyatsiz bo'lishi mumkin bo'lgan har qanday qismga bir oz elektr tasmasini qo'shing.

3 -qadam: Batareyaning ishlashini tekshiring

Bu vaqtda batareyani CPX ga ulash mumkin. Agar hamma narsa yaxshi bo'lsa, kalit CPX -ni yoqishi va o'chirishi kerak.

4 -qadam: Batareyani joylashtiring

Batareyaning orqa tomoniga va galstuk yadrosiga ozgina yopishtiruvchi kancak va halqa lenta qo'ying. Agar galstuk juda ko'p ishlov berilmasa, bu o'z o'rnida qoladi.

6 -qadam: O'yin maydonchasi ekspressini o'rnatish

Men CPX -ni qanday sozlash haqida batafsil ma'lumot bermayman. Adafruit buni qiladi, keyin esa ba'zi. Men tez -tez duch keladigan muammolar uchun bir nechta maslahatlar beraman.

CPX muzlaydi

Ehtimol, ish vaqti xotira muammolari tufayli, CPX tez -tez muzlab qoladi. Tez tuzatish-o'chirish va qayta yoqish. Ushbu ko'rsatmalarda "Eski yo'l" ni qidiring. Asosan, bu bir nechta tugmachalarni bosish, o'chirish uchun tortish va tushirish, so'ngra qayta yoqish uchun tortish va tushirish.

Ogohlantirish: bu hamma narsani o'chirib tashlaydi. CPX -dagi barcha kodlar yo'qoladi.

CPX -dagi o'zgarishlarni saqlash muammolarga olib kelishi mumkin

Men ba'zida faylni CPX -ga saqlaganimdan so'ng, python ish vaqti yomon holatda bo'lishini aniqladim. Qayta tiklash tugmachasini bosib, tuzatish python ish vaqtini qayta boshladi. Uni faqat bir marta bosing. Uni ikki marta bosish qayta yoqish jarayonini boshlaydi.

CPX -ga to'g'ridan -to'g'ri saqlash xavfli

CPX-ni qayta ko'rsatish ehtimoli tufayli, ularning barcha kodlarini yo'qotish xavfi bor. Kodni ikki marta yo'qotib qo'yganimdan so'ng, men oddiy ish oqimini topdim. Men kodimni mahalliy qattiq diskka saqlardim. U CPXda sinovdan o'tishga tayyor bo'lganda, men uni oddiy tarqatish skriptini ishga tushirib nusxa ko'chirardim.

7 -qadam: O'yin maydonchasi tezligini kodlash

Bu vaqtda CPX va NeoPixels deyarli to'liq. Ular bilan boshqa mexanik yoki elektr ishlarini bajarish shart emas. Qolganlarning hammasi dasturiy ta'minot.

Kodni mening github hisobimdan topish mumkin. Asosiy python kodi barcha operatsion tizimlar uchun o'zgarishsiz ishlashi kerak. Adafruit CircuitPython tashqi kutubxonalarini o'rnatmang. Ular ishlatilmaydi.

Bu erda kodda nima bo'layotgani haqida yuqori darajadagi xulosa.

Qaysi kirish nima qiladi?

  • A tugmasi: LED animatsiyalari bo'ylab aylanadi
  • B tugmasi: qo'shiqlar bo'ylab aylanadi
  • A1 sig'imli sensorli panel: LED animatsiyasi ranglarini o'zgartiradi
  • Capacitive Touch Pad A6: LED animatsiyalarining tezligini o'zgartiradi

3 ta animatsiya mavjud, lekin faqat 2 tasi amalda

kod.py

pixelsoff -ni import qilish

#mport vumeter import zinapoyalar importi miltillaydi… led_animations = [pixelsoff. PixelsOff (piksel), # vumeter. VuMeter (piksel, 100, 400) zinapoyalar. Dairalar (piksellar), miltillashlar.

Men Ampli-Tie VU metr uslubi kodini tashdim. Ovozni qabul qilish va tovush amplitudasiga qarab NeoPixellarni yoqish uchun CPX mikrofonidan foydalaniladi. Biroq, men ko'proq animatsiyalarni xohlardim. Xotira cheklovlari tufayli men xohlagan animatsiyalarni tanlashim kerak edi. Odatiy bo'lib, qolgan ikkitasi, Stair and Twinkle, kodni o'zgartirmasdan ishlaydi. VU o'lchagich animatsiyasini ishga tushirish uchun boshqa ko'rsatuvlardan biriga yoki ikkalasiga izoh berilishi va VU o'lchagichga izoh qoldirilmasligi kerak.

Musiqa menejeri va oflayn rejimda kodlash

shoxrux_sozlar.py

musiqiy_notlarni mn sifatida import qilish

# Frosty Snowman # Walter E. Rollins qo'shig'i = [(m4 G4, mn. HLF), (m4. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR)), (mn. C5, min. HLF),…

convert_to_binary.py

qo'shiqlar = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] qo'shiqlardagi qo'shiq uchun: data = song [0] file = song [1] with open (file, "wb") bin_file sifatida: ma'lumotlarni kiritish uchun: chop etish ("yozish:" + str (kirish)) note = yozuv [0] dur = kirish [1] bin_file.write (struct.pack ("<HH", eslatma, dur))

Men bayram musiqasini xohlardim. CPX ham WAV, ham ohanglarni qo'llab -quvvatlaydi. WAV fayllari fayl hajmi va ish vaqti xotirasi jihatidan juda katta bo'lib chiqdi. Ohanglarni ushlab turish uchun python ma'lumotlar tuzilmalaridan foydalanish va ularning davomiyligi ham juda ko'p ish vaqti xotirasidan foydalangan. Men Holi-Tie kodini siqilgan ikkilik formatdagi faqat kerakli qo'shiq ma'lumotlarini o'z ichiga olgan siqilgan ikkilik faylni o'qish uchun o'zgartirdim. Men ssenariy yozdim, u python ma'lumotlar tuzilmasida saqlangan qo'shiqni o'qiydi va uni ikkilik formatga yozadi. Qo'shiqni faylda ikkilik ma'lumotlar sifatida kodlanishi qo'shiqni ham kichik, ham dinamik qiladi. Qo'shiq ijro etilgach, xotira bo'shatiladi.

Yana qo'shiq qo'shish befoyda. Tafsilotlar uchun qo'shiqlarda README.md ga qarang.

A tugmasi NeoPixellarni jonlantiradi, B musiqa ijro etadi, lekin bir vaqtning o'zida emas

kod.py

def tugmasi_a_pressed ():

if music.is_playing (): # Musiqa ijro etilsa musiqani to'xtating.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # no.op animation next_led_animation (0) if music.is_playing (): # Toggle music.stop () boshqa: music.play ()

Hatto xotirani tejaydigan musiqa boshqaruv tizimi bo'lsa ham, men 2 ta animatsiyani ishlay olaman, bittasida o'ynay olmayman va bir vaqtning o'zida qo'shiq ijro eta olmadim. Chunki men VU o'lchagichni ish vaqtining xotirasida umuman ishlatmaslikni tanlaganim uchun, animatsiya sonini 1 taga kamaytirmoqchi emas edim. Shunday qilib, men kodni animatsiya o'ynayotgan yoki musiqa ijro etiladigan qilib yozganman. ikkalasi ham. Yana bir variant - NeoPixel sonini kamaytirish edi, lekin bu animatsiyaning salqinligini yo'qotadi.

Python kodining funktsionalligi

Men faxriy dasturiy ta'minot ishlab chiqaruvchisi bo'lsam -da, men hech qachon Python yozmaganman. Men o'zimni tutib, yaxshi kodlash amaliyotini, masalan, inkapsulyatsiya va modullashtirishni ko'rib chiqqach, men juda ko'p ish vaqti xotirasidan foydalanayotganimni tezda angladim. Shunday qilib, DRY bo'lmagan kod juda ko'p. Ish vaqti xotirasi muammolarini yanada kamaytirish uchun, shuningdek, const () kabi ba'zi MicroPython usullaridan foydalanishim kerak edi.

Tuzilgan modullar

kompilyatsiya qilish

#!/bin/bash

kompilyator = ~/development/circuitpython/mpy-cross-3.x-windows.exe CD qo'shiqlari python3./convert_to_binary.py cd.. f in *.py uchun; agar

Loyihaning boshida men Adafruit maslahatiga amal qildim va Adafruit CircuitPython kutubxonalarini tezda saqladim. Biroq, bu mening loyiham uchun juda oz joy qoldirdi. Mening kodimni CPX -ga olish uchun men modullarni kompilyatsiya qilishni va ularni MCU -ga joylashtirishni boshladim. Ma'lum bo'lishicha, Holi-Tie tashqi kutubxonalarga muhtoj emas. UF2 -dagi mavjud kutubxonalar ushbu loyiha uchun etarli edi. *. Mpy fayllarini ishga tushirish biroz samaraliroq, shuning uchun men tuzilgan modullarni joylashtirish jarayonini davom ettirdim.

Yuqoridagi kompilyatsiya skriptidan ko'rinib turibdiki, men Windows mashinasida ishlayman, lekin bash va python3 kabi Unix yordam dasturlaridan foydalanaman. Men buni amalga oshirish uchun Cygwin -dan foydalanaman. Ushbu skriptni DOS to'plamiga va Windows -ning mahalliy Python3 dasturiga osongina tarjima qilish mumkin.

8 -qadam: galstuk tugmachasini bosish

Tugmachani taqish
Tugmachani taqish
Tugmachani taqish
Tugmachani taqish

Oxirgi qadam - galstuk yadrosini joyiga qaytarish, galstukni qayta yig'ish va tikish. CPX -ni ochiq qilish imkoniyatiga ega bo'lishingizga ishonch hosil qiling. Batareyani almashtirish yoki kodni o'zgartirish paytida sizga kerak bo'ladi.

Tavsiya: