İçindekiler:

Space Invaders Clock (Bütçede!): 6 Adım (Resimlerle)
Space Invaders Clock (Bütçede!): 6 Adım (Resimlerle)

Video: Space Invaders Clock (Bütçede!): 6 Adım (Resimlerle)

Video: Space Invaders Clock (Bütçede!): 6 Adım (Resimlerle)
Video: 3000+ Common Spanish Words with Pronunciation 2024, Temmuz
Anonim
Image
Image
Parçaları Topla
Parçaları Topla

Geçenlerde GeckoDiode'un harika bir yapısını gördüm ve hemen kendim yapmak istedim. Eğitilebilir, Space Invaders Masaüstü Saatidir ve bunu okuduktan sonra ona bir göz atmanızı tavsiye ederim.

Proje neredeyse tamamen Adafruit'ten temin edilen, 3D baskılı muhafaza ve lazer kesim ön yüz ile inşa edildi. Her şeyi yapı maliyetine eklemek çok maliyetli olur! (yaklaşık 100 £ veya daha fazla). Sorun şu ki, bir 3D yazıcınız yoksa, modelinizi yazdırmak için ödeme yapmanız veya ebay'den genellikle biraz fazla küçük, çok dar, kısa veya tam tersi olan çirkin bir kasa satın almanız gerekir.

Yapılarımın çoğu bir hobi bütçesiyle yapılmalı ve muhafazalar her zaman en pahalı kısım oluyor. Bu yüzden aynı saati kurmaya karar verdim ama makul bir bütçeyle.

Garip saatlere bakmaktan hoşlanıyorsanız, muhafaza için aynı yapı malzemelerini kullanan Steampunk Voltmetre Saatime göz atın:-)

Adım 1: Parçaları Toplayın

Bu projeyi yapmak için aşağıdakilere ihtiyacınız olacak. Diğer projelerde kullanabileceğiniz (gelecekteki inşaatların maliyetini daha da ucuza getiren) çok fazla arta kalana sahip olacağınız muhafaza için malzemeleri aklınızda bulundurun. Ebay'de fiyat vb. kontrol etmek isterseniz ihtiyacınız olan şeylerin PDF'lerini yükledim.

Araçlar (Bunlara zaten sahip olacağınızı varsayıyorum)

  • Havya
  • Lehim
  • Lehim pompası (hata yaparsanız ve lehimi çıkarmanız gerekiyorsa)
  • Sıcak yapıştırıcı tabancası
  • Sıcak tutkal çubukları
  • El işi bıçağı (a.k.a. stanley bıçağı)
  • Cetvel / şerit metre / Sürmeli kumpas
  • Akülü matkap + matkap uçları (1 mm - 13 mm)
  • Kesme diskli döner çok amaçlı alet (a.k.a. Dremel)
  • İzopropil-alkol gibi temizleme sıvısı (ucuz tıraş sonrası da işe yarar)
  • Güvenlik maskesi (sprey boyamada kullanılır)

Elektronik (Elektronik maliyeti = 13,05 £)

Bunlardan bazıları bedavaya sahiptim. Eski elektronik oyuncakların içinde bu güzel Mylar hoparlörler var, eğer onları parçalara ayırırsanız. Oradayken muhtemelen bir DC namlu ve bir basma düğmesi de alabilirsiniz.

  • Dupont / Jumper kabloları - 0,99 £
  • DS1307 Gerçek zamanlı saat modülü - 0,99 £ (varsa bunun yerine DS3231 almanızı tavsiye ederim)
  • Arduino nano + usb kablosu - 2,23 £
  • 8 Ohm Mylar hoparlör - 0,99 £
  • SPST anlık basma düğmesi - £1,49
  • 5,5 mm DC namlu soketi - £1,26
  • 5v, 0,5A DC güç kaynağı - 2,83 £
  • MAX7219 Nokta vuruşlu ekran - 3,76 £

Muhafaza (Muhafaza malzemelerinin maliyeti = 17,19 £)

  • 60 mm kare drenaj borusu - 5,99 £ (daha fazla proje için bundan çok fazlasına sahip olacaksınız)
  • Siyah sprey boya - 4,85 £
  • Siyah PVC (köpük) - 2,99 £
  • Süper yapıştırıcı - £0,99
  • 60 mm uç kapakları - 2,37 £

Toplam maliyet = 30,24 £:-) ……..bugün itibariyle bu, herhangi bir uluslararası okuyucu için 38 USD'ye eşdeğerdir.

PVC kare boru ile çalışmaktan zevk alıyorum. Delmeleri, kesmeleri, boyamaları kolay ve Steampunk saatim için bir tane kullandım.

Adım 2: Tahliye Borunuzu Hazırlayın

Drenaj Borunuzu Hazırlayın
Drenaj Borunuzu Hazırlayın

Eşyaları nereye koymak istediğinizi işaretleyin

Bu çok kolaydı. Süslü bir şey kullanmadım. Önce 2,5 m'lik uzunluğu evdeki tezgahım için makul bir boyuta (yaklaşık 30 cm) demir testereyle kestim. Daha sonra kenarları güzel ve düz hale getirmek için bunu bir dremel ile kestim. Ardından bileşenleri borunun yüzeyine yerleştirdim ve delmek ve kesmek istediğim yeri işaretlemek için kalıcı bir pazar kullandım. LED matrisinin dışını çizdim ve aynı hizada olması için kare bir delik açmak için döner bir çoklu alet kullandım. Basmalı düğmenin çapını ölçmek için dijital bir kumpas ve arkada ve üstte doğru boyutta delikleri kesmek için DC namlu kullandım.

Bir çerçeve kesin

Önceki projelerden bir sürü PVC köpük levham var. Devreleri muhafazalara monte etmek, üzerinde epoksiyi karıştırmak için kullanmak ve başka bitler ve boblar yapmak için harikadırlar. A4 veya A5 boyutunda bir parça alın ve LED matrisini çerçevelemek için 5 mm'lik kare bir çerçeve veya çerçeve kesin. Bu, matris için kare deliği keserken yaptığınız bozuk uçları gizleyecektir. Bunun için Inkscape'de küçük bir şablon çizdim ve yazdırdım (SVG Dosyası ekli). Daha sonra köpük tahtaya maskeleme bandıyla bantladım ve bir maket bıçağıyla dikkatlice etrafını kestim. Doğru yapmak zor, önce içini sonra dışını kesmenizi tavsiye ederim.

Her şeyi boya

Tüm delikler delinip kesildikten sonra, çapaklanmış kenarları çıkarın. Herhangi bir tozu veya kirliliği (veya herhangi bir IPA'nız yoksa biraz ucuz tıraş sonrası) temizlemek için yüzeyleri biraz alkollü mendille temizleyin. İyi havalandırılmış bir alanda deneyin ve püskürtün ve mümkünse bir maske kullanın. Bunu dışarıda yerde kartonla yaptım ama ideal değil, küçük bir esinti bile boyanın yüzünüze geri kaçmasına neden olabilir. Dikkatli olun ve mümkünse koruyucu ekipman giyin.

Boruyu, çerçeveyi ve uç kapakları aynı türde siyah olacak şekilde püskürtün, ardından birkaç saat kurumaya bırakın.

Adım 3: Arduino'yu programlayın

Arduino'yu programlayın
Arduino'yu programlayın

Kod hakkında bazı bilgiler

Kodunu aldığım ve MAX7219 Chip ile çalışacak şekilde değiştirdiğim için GeckoDiode'a teşekkür ederim. Adafruit versiyonu I2C veri yolunu, MAX ise SPI veri yolunu kullanır. Bunun için indirip Arduino IDE'ye kurduğum MaxMatrix kütüphanesini kullandım. MaxMatrix ve LED matrisinin prensipte nasıl çalıştığı hakkında daha fazla bilgi edinmek istiyorsanız HowToMechatronics.com'da çok kısa bir eğitim var. LED matrisi, çok renkli bir ekrana sahip olmak yerine yalnızca tek bir LED renginden oluşur.

Sahip olduğum bir hayal kırıklığı, kütüphane için işlevlerin ne olduğu ve her birine hangi argümanların iletilmesi gerektiğine dair net bir tanım YOKTUR. Neyse ki neyin ne olduğunu deneme yanılma yoluyla bulabildim ve sonunda düzgün çalışmasını sağlamak çok zor olmadı. Anlaşılması gereken ilk şey, matrisinizde kaç tane 8x8 modül olduğunu tanımlamanız gerektiğidir. Kodumda bu, şöyle "modüller" adı verilen bir tamsayıda saklanır:

"int modülleri = 4;"

Bu, ekranınızda birbirine bağladığınız 8x8 modüllerin SAYISI'dır. LED'lerin sayısı veya gönderme verilerini hangi pini kullandığınız değil. Hatırlanması gereken bir sonraki şey, "hareket grafiğiniz" veya dört matrisin tümünü kapsıyorsa, bayt dizisinin şu şekilde tanımlanması gerektiğidir:

"byte text_start_bmp = {32, 8, …*biraz bayt verisi*…};"

Sayılar, matristeki satır ve sütun miktarını gösterir. Bu durumda "text_start_bmp" adlı bayt 32 sütun ve 8 satır üzerinde görüntülenir. Rakamlar yalnızca tek bir 8x8 matrisinde görüntülenir, bu nedenle dakika sayısı 10 şöyle görünür:

"bayt dakika_ten_bmp = {8, 8, …*biraz bayt verisi*…};"

İstilacılar iki matrisi kaplar, böylece bayt verilerinde bayta 16, 8 verilir.

Beni yakalayan diğer şey, sprite verilerinin konumlandırılmasıydı. Arduino'dan hareketli grafiği varsayılan ana konumundan matris üzerinde farklı bir X/Y konumunda görüntülemesini isteyebilirsiniz. Sıfır dakikası için kod şöyle görünür:

"matrix.writeSprite(8, 0, dakika_sıfır_bmp);"

Bir sayı X ayarı ve diğeri Y'dir. Hangisinin hangisi olduğunu şimdi hatırlayamıyorum, ancak hareketli grafiği 1 satır veya sütun yukarı veya aşağı sürüklemek istiyorsanız, sayıyı pozitif veya eksi olarak artırmanız yeterlidir. 8x8 matris için yeterince basit, ancak hareketli grafiğiniz birden fazla matrisi kapsadığında, ana konumu buna göre ayarlamanız gerekir. "POP" hareketli grafiği aşağıda gösterilmiştir:

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

Şimdi ana konumun 8 değil 16 olduğuna dikkat edin? Burada kod, hareketli grafiğin 16. satır/sütun 16'dan soldan sağa görüntülendiğini belirtir. 4 tane olmasına rağmen iki 8x8 ekranı tek bir 16x8 ekran olarak kabul eder! Bu nedenle, hareketli grafiğin kaç ekranda görüntüleneceğini düşünmek ve her hareketli grafiğin bayt dizisini buna göre boyutlandırmak önemlidir. Aksi takdirde, çok ilginç spritelarınız olacak!

DS1307 RTC

DS1307, Adafruit RTClib.h kitaplığı ile iyi çalışmasına rağmen, sadece bir acı olan zamanı manuel olarak ayarlayamazsınız. Ben sadece bununla gittim çünkü değiştirilecek daha az kod anlamına geliyordu. DS1307, kodun bilgisayarınızın saatinden derlendiği saati ve tarihi kullanarak saati ayarlar. Bunun yerine, DS3231 kitaplığını nasıl kullanacağınızı öğrenin ve gelecekte bir veya iki dakika önceden ayarlayın. Aynı zamanda daha az "kayma" özelliğine sahiptir, bu nedenle zaman içinde zamanı daha iyi tutar. Her iki modül de I2C veri yolunu kullanır ve kullanmaya devam etmek isterseniz DS3231'in RTClib.h ile kullanılabileceğine inanıyorum.

Kodu yükleyin

Koddan memnun kaldığınızda, Arduino'ya yükleyin. Arduino taslağımı değerlendirmeniz için ekledim.

Adım 4: Elektroniklerin Montajı

Elektronik Montaj
Elektronik Montaj

Kodu yüklerken, elektronik aksamın bir breadboard üzerinde dupont/atlama telleriyle birleştirilmesini tavsiye ederim, böylece kodu yüklediğinizde her şeyin istendiği gibi çalıştığını bilirsiniz. Bu, yapıştırmaya ve yapıştırmaya başlamadan önce sprite vb. görüntülemeyle ilgili sorunları gidermenizi sağlar. Kodumda 4, 5, 6, 7, 9 numaralı dijital pinleri kullandığımı görebilirsiniz, ancak gerekirse bunları değiştirebilirsiniz. Düğmeye, DC jakına ve Hoparlöre kablo lehimlemeniz gerekebilir, ancak çoğunluğu kolay itme tarzı konektörler olmalıdır.

Elektronik aksamın amaçlandığı gibi çalıştığından memnun olduğunuzda, bağlantıları lehimlemeyi düşünmelisiniz. Bunu bakır stripboard/veroboard ile yapabilirsiniz, ancak az miktarda bileşen için doğrudan Arduino'nun pinlerine lehimleyebilirsiniz. Fare yuvası gibi görünecek ama yine de monte edildikten sonra kasanın içini kimse görmeyecek, sadece tüm metalik parçaların ayrıldığından emin olun, kasada herhangi bir kısa devre olmasını istemezsiniz.

"MainButton" pimi aşağı çekildiğinde basmalı düğmeyi çalıştırdım. Arduino'nun, yüzen elektronikler üzerine yerleştiğinde basılan yanlış basma düğmesini tanıdığını buldum. Basma düğmesinde 10K'lık bir açılır direnç kullanmak ve pimi "INPUT_PULLUP" olarak ayarlamak bu sorunu benim için çözdü.

Pimleri nereye bağlayacağınızı bilmeniz için PDF ve PNG'deki şema ektedir.

Adım 5: Elektroniği Monte Edin ve Kapatın

Elektroniği Monte Edin ve Kapatın
Elektroniği Monte Edin ve Kapatın
Elektroniği Monte Edin ve Kapatın
Elektroniği Monte Edin ve Kapatın

Saatim için elektroniği sıcak tutkal kullanarak monte ettim, ancak çok fazla uygulamamaya dikkat edin (elektronik çok uzun süre ısıtılmaktan hoşlanmaz). Çerçevenin etrafına noktalı küçük bir damla süper yapıştırıcı kullandım ve ön tarafa bastırdım. Her iki uçtaki uç kapakları iterek muhafazayı bitirdim. Elbette, montajı tamamen kapatmak için uç kapakları yapıştırabilirsiniz, ancak gelecekte tarih ve saati sıfırlamak için arduino'nun USB bağlantı noktasına erişebilmem için bir tarafımı açık bıraktım.

6. Adım: Keyfini çıkarın

Eğlence
Eğlence
Eğlence
Eğlence

Genel olarak, sadece bir oluk borusu ve sprey boya olduğunu düşünürsek, bunun ortaya çıkma şeklinden memnunum. Umarım beğenirsiniz ve eklenebilecek harika yükseltmeler düşünürseniz bana bildirin. Birinin bunu daha ucuza yapıp yapamayacağını veya bir sonraki projemde deneyebileceğim bir muhafaza yapmanın başka bir tutumlu yolu olup olmadığını bilmek isterim.

Önerilen: