Mündəricat:

Space Invaders Saatı (Büdcədə!): 6 Addım (Şəkillərlə)
Space Invaders Saatı (Büdcədə!): 6 Addım (Şəkillərlə)

Video: Space Invaders Saatı (Büdcədə!): 6 Addım (Şəkillərlə)

Video: Space Invaders Saatı (Büdcədə!): 6 Addım (Şəkillərlə)
Video: Space Invader Clock 2024, Iyul
Anonim
Image
Image
Parçaları toplayın
Parçaları toplayın

Bu yaxınlarda GeckoDiode tərəfindən sərin bir bina gördüm və dərhal özüm tikmək istədim. Təlimat verilə bilən Space Invaders Masaüstü Saatıdır və bunu oxuduqdan sonra baxmağınızı məsləhət görürəm.

Layihə, demək olar ki, yalnız Adafruit -dən 3D çaplı bir korpus və lazer kəsmə ilə təchiz edilmiş hissələrdən hazırlanmışdır. Quruluşun dəyərini hər şeyə əlavə etmək çox baha başa gəlir! (təxminən 100 funt sterlinq və ya daha çox). Problem, 3D printerə sahib deyilsinizsə, modelinizi çap etdirmək üçün pul ödəməli və ya ebaydan çox kiçik, çox dar, qısa və ya əksinə olan çirkin bir korpus almalısınız.

İnşaatlarımın çoxu bir hobbi büdcəsi ilə edilməlidir və qapaqlar həmişə ən bahalı hissəsi olur. Buna görə də eyni saatı layiqli büdcəyə görə qurmağa qərar verdim.

Qəribə saatlara baxmaqdan zövq alırsınızsa, korpus üçün eyni tikinti materiallarından istifadə edən Steampunk Voltmetr Saatıma baxın:-)

Addım 1: hissələri toplayın

Bu layihəni həyata keçirmək üçün aşağıdakılara ehtiyacınız olacaq. Başqa layihələrdə istifadə edə biləcəyiniz çoxlu qalıqlara sahib olacağınız korpus üçün materialları unutmayın (bu, gələcək tikintilərin qiymətini daha da ucuzlaşdırır). Ebay -da qiymət və s.

Alətlər (güman edirəm ki, bunlara sahib olacaqsınız)

  • Lehimleme dəmir
  • Lehim
  • Lehim pompası (səhv edirsinizsə və lehimi çıxarmaq lazımdırsa)
  • İsti yapışqan silahı
  • İsti yapışqan çubuqlar
  • Sənət bıçağı (aka stanley bıçağı)
  • Cetvel / ölçü lenti / Vernier kaliper
  • Akülü qazma + qazma ucları (1 mm -dən 13 mm -ə qədər)
  • Kəsmə diskli fırlanan çox alət (aka Dremel)
  • İzopropil spirti kimi təmizləyici maye (ucuz təraşdan sonra da işləyir)
  • Təhlükəsizlik maskası (sprey boyama zamanı istifadə olunur)

Elektronika (Elektronikanın qiyməti = 13.05 funt)

Bunlardan bəzilərini pulsuz əldə etdim. Köhnə elektron oyuncaqların içərisində bu gözəl Mylar dinamikləri var, əgər onları ayırarsanız. Orada olduğunuzda çox güman ki, bir DC barel və bir düymə də əldə edə bilərsiniz.

  • Dupont / Jumper kabelləri - 0.99 funt
  • DS1307 Real vaxt saatı modulu - 0.99 funt (mövcud olduqda DS3231 almağı məsləhət görürəm)
  • Arduino nano + usb kabeli - 2,23 funt
  • 8 Ohm Mylar dinamik - 0.99 funt
  • SPST ani düymə - 1,49 funt
  • 5,5 mm DC lülə yuvası - 1,26 funt
  • 5v, 0.5A DC enerji təchizatı - 2.83 funt
  • MAX7219 Dot matrix ekran - 3,76 funt

Kassa (Qapalı materialların dəyəri = 17,19 funt sterlinq)

  • 60 mm kvadrat drenaj borusu - 5,99 funt (daha çox layihə üçün çox şeyiniz qalacaq)
  • Qara sprey boya - 4,85 funt
  • Qara PVC (köpük taxta) - 2.99 funt
  • Super yapışqan - 0.99 funt
  • 60 mm qapaqlar - 2,37 funt sterlinq

Ümumi xərc = 30,24 funt sterlinq:-) …….. bu gündən etibarən bu, hər hansı bir beynəlxalq oxucu üçün 38 ABŞ dollarına bərabərdir.

PVC kvadrat boru ilə işləməkdən zövq alıram. Qazmaq, kəsmək, rəngləmək asandır və mən Steampunk saatım üçün istifadə etdim.

Addım 2: Drenaj borusunu hazırlayın

Drenaj borusunu hazırlayın
Drenaj borusunu hazırlayın

Əşyaları hara qoymaq istədiyinizi qeyd edin

Bu çox asan idi. İstedadlı bir şey istifadə etmədim. Əvvəlcə evdəki dəzgahım üçün (təxminən 30 sm) 2,5 m uzunluğunu ağıllı bir mişarla kəsdim. Daha sonra kənarları gözəl və düz etmək üçün bir dremel ilə kəsdim. Sonra komponentləri borunun səthinə söykədim və qazmaq və kəsmək istədiyim yeri qeyd etmək üçün daimi bir bazar istifadə etdim. LED matrisinin kənarını izlədim və fırlanan çoxlu alətdən istifadə edərək düz bir şəkildə düzəltmək üçün bir kvadrat çuxur kəsdim. Düymənin diametrini ölçmək üçün rəqəmsal bir kaliperdən istifadə etdim və arxa və yuxarıdakı düzgün ölçülü delikləri kəsdim.

Çərçivəni kəsin

Əvvəlki layihələrdən hazırladığım çoxlu PVC köpük lövhəsi var. Dövrləri korpuslara quraşdırmaq, epoksi ilə qarışdırmaq və digər bitlər və boblər etmək üçün əladır. A4 və ya A5 ölçülü bir parça götürün və LED matrisini çərçivəyə salmaq üçün 5 mm kvadrat və ya çərçivə kəsin. Bu, matris üçün kvadrat çuxur kəsərkən etdiyiniz hər hansı bir uğursuz ucu gizlədir. Bunun üçün Inkscape -də kiçik bir şablon çəkdim və çap etdim (SVG faylı əlavə olunur). Daha sonra köpük taxtasına maskeləyici lentlə yapışdırdım və diqqətlə bir sənətkarlıq bıçağı ilə kəsdim. Doğru olmaq çətindir, əvvəlcə içini, sonra kənarını kəsməyi məsləhət görürəm.

Hər şeyi boyayın

Bütün deliklər qazıldıqdan və kəsildikdən sonra buruq kənarları çıxarın. Toz və ya çirklənməni aradan qaldırmaq üçün səthləri spirtli mendillərlə təmizləyin (və ya heç bir IPA olmadıqda ucuz bir təraşdan sonra). Yaxşı havalandırılan bir ərazidə sprey edin və mümkünsə maska istifadə edin. Bunu yerdə bir az kartonla çöldə etdim, amma ideal deyil, hətta kiçik bir külək də boyanın yenidən üzünüzə uçmasına səbəb ola bilər. Ehtiyatlı olun və mümkün olduqda qoruyucu vasitələrdən istifadə edin.

Borunu, çərçivəni və uc qapaqlarını sprey edin ki, hamısı eyni rəngdə olsun, sonra bir neçə saat qurudun.

Addım 3: Arduino proqramlaşdırın

Arduino proqramlaşdırın
Arduino proqramlaşdırın

Kod haqqında bəzi məlumatlar

Kodunu götürüb MAX7219 Çipi ilə işləmək üçün dəyişdirdiyim üçün GeckoDiode -a kredit. Adafruit versiyası I2C avtobusundan, MAX isə SPI avtobusundan istifadə edir. Bunun üçün Arduino IDE -yə yüklədiyim və quraşdırdığım MaxMatrix kitabxanasından istifadə etdim. MaxMatrix və LED matrisinin prinsipcə necə işlədiyini öyrənmək istəyirsinizsə HowToMechatronics.com saytında çox qısa bir dərs var. LED matrisi çox rəngli bir ekrana sahib olmaq əvəzinə yalnız bir LED rəngindən ibarətdir.

Yaşadığım bir xəyal qırıqlığı, kitabxana üçün hansı funksiyaların olduğunu və hər bir arqumentə keçmək üçün lazım olan dəqiq təriflərin olmamasıdır. Xoşbəxtlikdən sınaq və səhvən nə etdiyini öyrənə bildim və nəticədə düzgün işləməsini təmin etmək o qədər də çətin olmadı. Anlamaq lazım olan ilk şey, matrisinizdə neçə ədəd 8x8 modul olduğunu təyin etməyinizdir. Kodumda bu, "modullar" adlı bir tam ədəddə saxlanılır:

"int modulları = 4;"

Ekranınızda bir -birinə bağladığınız 8x8 modulların SAYISI budur. LED -lərin sayı və ya göndərmə məlumatlarından istifadə etdiyiniz pin deyil. Xatırlamaq lazım olan növbəti şey, "sprite" və ya dörd matrisin hamısını əhatə edərsə, bayt dizisinin bu şəkildə təyin edilməsi lazımdır:

"bayt text_start_bmp = {32, 8,…*bəzi bayt məlumatları*…};"

Nömrələr matrisdəki satır və sütunların miqdarını göstərir. Bu münasibətlə "text_start_bmp" adlı bayt 32 sütun və 8 satır üzərində göstərilir. Nömrələr yalnız bir ədəd 8x8 matrisdə göstərilir, belə ki, dəqiqə sayı 10 belə görünür:

"byte minute_ten_bmp = {8, 8,…*bəzi bayt məlumatları*…};"

İşğalçılar iki matrisi əhatə edir, buna görə bayt məlumatlarında 16, 8 veriləcək.

Məni tutan digər şey sprite məlumatlarının yerləşdirilməsi idi. Arduino -dan spriti standart matrisdəki fərqli X/Y mövqeyində göstərməsini istəyə bilərsiniz. Kod sıfır dəqiqəsi üçün belə görünür:

"matrix.writeSprite (8, 0, minutes_zero_bmp);"

Bir nömrə X düzəlişidir, digəri isə Y. Hansının olduğunu xatırlaya bilmirəm, ancaq spriti 1 sətir və ya sütunla yuxarı və ya aşağı çəkmək istəyirsinizsə sadəcə sayını müsbət və ya eksi artırın. 8x8 matris üçün kifayət qədər sadədir, ancaq sprite birdən çox matrisi əhatə etdikdə buna uyğun olaraq ev mövqeyini təyin etməlisiniz. "POP" sprite aşağıda göstərilmişdir:

"matrix.writeSprite (16, 0, invader_pop_bmp);"

İndi evin mövqeyinin 16 deyil 8 olduğunu necə görürsünüz? Burada kod, sprite mövqeyindən/sütundan 16 -dan soldan sağa göstərildiyini göstərir. 4 ədəd olmasına baxmayaraq iki 8x8 displeyi tək 16x8 ekran hesab edir! Buna görə sprite -nin neçə displeydə göstəriləcəyini və hər bir sprite -nin bayt massivini buna uyğun olaraq ölçüsünü düşünmək vacibdir. Əks təqdirdə çox maraqlı spritləriniz olacaq!

DS1307 RTC

DS1307, Adafruit RTClib.h kitabxanası ilə yaxşı işlədiyini düşündüyünüz üçün vaxtınızı əl ilə təyin edə bilməzsiniz. Sadəcə, bu kodu dəyişdirmək üçün daha az məna daşıdığına görə getdim. DS1307, kompüterinizin vaxtından kodun tərtib edildiyi vaxt və tarixdən istifadə edərək vaxtı təyin edir. Bunun əvəzinə DS3231 kitabxanasını necə istifadə edəcəyinizi öyrənin və gələcəkdə bir və ya iki dəqiqə qabağa qoyun. Həm də daha az "sürüşmə" xüsusiyyətinə malikdir, buna görə də zamanla daha yaxşı saxlayır. Hər iki modul da I2C avtobusundan istifadə edir və istifadə etməyə davam etmək istəsəniz DS3231 -in RTClib.h ilə birlikdə istifadə oluna biləcəyinə inanıram.

Kodu yükləyin

Koddan məmnun olduqdan sonra Arduinoya yükləyin. Arduino eskizimi nəzərinizə çatdırdım.

Addım 4: Elektronikanın yığılması

Elektronikanın yığılması
Elektronikanın yığılması

Kodu yükləyərkən əvvəlcə elektronikanın dupont/jumper telləri ilə bir çörək taxtasına yığılmasını tövsiyə edərdim, buna görə də kodu yüklədiyiniz zaman hər şeyin istədiyi kimi işlədiyini bilirsiniz. Bu, yapışdırmağa və yapışdırmağa başlamazdan əvvəl spritlərin göstərilməsi ilə bağlı hər hansı bir problemi həll etməyə imkan verir. Kodumda 4, 5, 6, 7, 9 rəqəmsal sancaqlar istifadə etdiyimi görə bilərsiniz, ancaq lazım gələrsə bunları dəyişə bilərsiniz. Kabelləri düyməyə, DC jakına və Dinamikə lehimləməyiniz lazım ola bilər, lakin əksəriyyəti asan itələmə tərzi konnektorları olmalıdır.

Elektronika istədiyiniz kimi işlədikdən sonra əlaqələri lehimləməyi düşünməlisiniz. Bunu mis lövhə/veroboard ilə edə bilərsiniz, ancaq az miqdarda komponent üçün birbaşa Arduino sancaqlarına lehim edə bilərsiniz. Siçovul yuvasına bənzəyəcək, amma heç bir halda yığıldıqdan sonra heç kim korpusun içini görməyəcək, sadəcə bütün metal hissələrin ayrıldığından əmin olun, halda heç bir şey qısalmaq istəmirsiniz.

"MainButton" pin aşağı çəkildikdə düyməni işləməyə məcbur etdim. Arduinonun üzən elektronika üzərinə oturduqda basılan saxta basma düyməsini tanıdığını gördüm. Düymədə 10K açılan rezistordan istifadə edərək pimi "INPUT_PULLUP" olaraq təyin etmək mənim üçün bu problemi həll etdi.

PDF və-p.webp

Addım 5: Elektronikanı quraşdırın və yaxınlaşdırın

Elektronikanı quraşdırın və yaxınlaşdırın
Elektronikanı quraşdırın və yaxınlaşdırın
Elektronikanı quraşdırın və yaxınlaşdırın
Elektronikanı quraşdırın və yaxınlaşdırın

Saatım üçün elektronikanı isti yapışqan istifadə edərək quraşdırdım, amma çox tətbiq etməmək üçün diqqətli olun (elektronika çox uzun müddət qızdırılmağı sevmir). Çərçivənin ətrafında kiçik bir damla super yapışqan istifadə etdim və ön tərəfə bastırdım. Hər tərəfdən uc qapaqlarını itələyərək korpusu bitirdim. Əlbəttə ki, montajı tamamilə bağlamaq üçün son qapaqları yapışdıra bilərsiniz, ancaq bir tərəfimi açıq buraxdım ki, gələcəkdə tarix və saatı sıfırlamaq üçün arduinonun USB portuna daxil ola biləm.

Addım 6: Zövq alın

Zövq alın
Zövq alın
Zövq alın
Zövq alın

Ümumiyyətlə, bunun bir az oluk borusu və sprey boyası olduğunu nəzərə alaraq, ortaya çıxmasından məmnunam. Ümid edirəm ki, xoşunuza gəlir və əlavə edilə biləcək hər hansı bir sərin yükseltme haqqında düşünə biləcəyinizi bildirin. Hər kəsin bunu daha ucuz edə biləcəyini və ya növbəti layihəmdə sınaya biləcəyim başqa bir qənaət üsulu olub olmadığını bilmək maraqlı olardı.

Tövsiyə: