İçindekiler:

Beş Oyunlu Arduino VGA Konsolu: 4 Adım
Beş Oyunlu Arduino VGA Konsolu: 4 Adım

Video: Beş Oyunlu Arduino VGA Konsolu: 4 Adım

Video: Beş Oyunlu Arduino VGA Konsolu: 4 Adım
Video: Bilgisayar çöp oldu #vlog #keşfet #birgünüm #ironia #bilgisayar #arkadaş #tavsiye 2024, Temmuz
Anonim
Image
Image
Beş Oyunlu Arduino VGA Konsolu
Beş Oyunlu Arduino VGA Konsolu
Beş Oyunlu Arduino VGA Konsolu
Beş Oyunlu Arduino VGA Konsolu

Önceki Instructables'ımda, en popüler klasik atari oyunlarından bazılarının basitleştirilmiş sürümlerini, çıplak bir Arduino ve birkaç başka bileşen aracılığıyla yeniden ürettim. Daha sonra beş tanesini tek bir eskizde birleştirdim. Burada, Pong, Breakout, Bomber, Tetris ve Etch-a-Sketch'ten ilham alan bir çizim oyuncağı oynayabilecek basit bir konsolu nasıl oluşturabileceğinizi göstereceğim. Bu konsol ayrıca Snake ve diğer yazarlar tarafından yazılmış iki oyun daha oynamak için kullanılabilir: Sandro Maffiodo namı diğer "Smaffer" Bit Ninja ve Nikita Kurylev'den Stacker.

Ana özellik, VGAx kitaplığı sayesinde bir VGA sinyalinin üretilmesidir, bu nedenle konsolun bir VGA monitöre ihtiyacı vardır. Amacım, her zamanki gibi, onu oluşturmak için herhangi bir "özel bileşenden" kaçınmak, o zaman herhangi bir destekleyici IC veya kalkana ihtiyacınız yok! Tek bileşenler iki potansiyometre, beş düğme, birkaç direnç ve bir DSUB15 (VGA) konektörüdür. Piezo hoparlör isteğe bağlıdır. Bu oyunların nasıl göründüğünü bu sayfadaki resimlerde görebilirsiniz.

VGAx kitaplığı, 120 x 60 piksel çözünürlükte dört rengin kullanılmasına izin veriyor, bu çok değil ama bu retro oyun konsolu için yeterli. Grafik ham ama potansiyometre kullanımı sayesinde oyunlar sorunsuz çalışıyor. Basit ses efektleri de mevcuttur.

Adım 1: Kendi Arduino VGA Konsolunuzu Nasıl Oluşturursunuz

Kendi Arduino VGA Konsolunuzu Nasıl Yapabilirsiniz?
Kendi Arduino VGA Konsolunuzu Nasıl Yapabilirsiniz?
Kendi Arduino VGA Konsolunuzu Nasıl Yapabilirsiniz?
Kendi Arduino VGA Konsolunuzu Nasıl Yapabilirsiniz?

Öncelikle bu sayfanın en altındaki ArduinoVGAgame.ino ve/veya Snake.ino kodlarını indirin ve PC'nizde aynı isimli bir dizine kopyalayın. GitHub'daki bu bağlantıdan VGAx kitaplığını indirin. En kolay yol, hemen tanınması için "kütüphaneler" adlı Arduino yazılımı alt klasörüne kopyalamaktır.

ÖNEMLİ: Bu kitaplık Arduno IDE 1.6.4 için çalışıyor ancak eski veya daha yeni sürümlerle tam uyumlu değil.

Kodu Arduino kartınıza yükleyin (Hem Uno hem de Nano'yu test ettim). Düşük kullanılabilir bellek için bir uyarı normaldir. Başka bir hatanız yoksa her şey yolundadır ve hemen kendi konsolunuzu oluşturmaya başlayabilirsiniz.

Bunun için ihtiyacınız olan:

  • bir Arduino Uno Rev. 3 veya Arduino Nano 3.x (ATmega328)
  • bir DSUB15 Konektör, yani bir VGA dişi konektör veya kesilecek bir VGA kablosu.
  • dirençler: 2 x 68 Ohm ve 2 x 470 Ohm ve 5 x 1 ila 2 kOhm
  • iki adet 10 kOhm lineer potansiyometre (benzer değerler de uygundur)
  • beş düğme
  • bir parça kablo
  • tüm bileşenleri koymak için bir veya iki güzel kutu.

isteğe bağlı:

  • bir breadboard veya bir şerit tahtası
  • Piezo hoparlör

Şematik, bitmiş bir "konsol" örneği ile birlikte bu adımın en üstünde rapor edilir.

şematik, bir düğmenin ve bir potansiyometrenin nasıl bağlanacağını gösterir. Daha spesifik olarak, sırasıyla 5, 10, 11, 12 ve 13 pinlerine beş düğme bağlamanız gerekir. Her düğme tarafından gerçekleştirilen eylem, şematikte sağ üstteki tabloda açıklanmıştır. Solda bir potansiyometrenin nasıl bağlanacağı gösterilmiştir (A1 ve A2 pinlerine iki potansiyometreye ihtiyacınız vardır). Hoparlör, analog pin A0'a bağlanmalıdır.

VGA konektörlü Arduino kartını, aynı zamanda birinci oyuncu potansiyometresini ve dört düğmeyi de barındıran bir ahşap kutuya yerleştirdim, ikinci oyuncu potansiyometresi ve başlat düğmesi ise ayrı ve daha küçük bir kutuda.

Bu oyuncağı beğendiyseniz ve çoğaltmaya karar verirseniz, aşağıdaki yorum bölümüne bir yorum yazarsanız veya bir resim gönderirseniz sevinirim.

2. Adım: Diğer Yazarlardan Oyunlar

Sandro Maffiodo yakın zamanda BitNinja oyununu yayınladı. Burada daha fazla bilgi bulabilir ve kodu buradan indirebilirsiniz.

Konsolumu kullanmak için, kodundaki düğmeyi aşağıdaki gibi yeniden eşleştirmeniz yeterlidir:

#define BTN_UP 11 (13 yerine)

#define BTN_LEFT 10 (12 yerine)

#define BTN_RIGHT 12 (11 yerine)

Nikita Kurylev'den İstifleyici burada mevcuttur. Daha fazla bilgi burada.

Yine, kodun farklı bölümlerinde bir düğmeyi yeniden eşleştirmeniz gerekir: sadece digitalRead(2)'yi digitalRead(13) ile değiştirin

3. Adım: Ek 1: Denetleyicilerin Nasıl Oluşturulacağı Hakkında Daha Fazla Detay

Ek 1: Denetleyicilerin Nasıl Oluşturulacağı Hakkında Daha Fazla Detay
Ek 1: Denetleyicilerin Nasıl Oluşturulacağı Hakkında Daha Fazla Detay
Ek 1: Denetleyicilerin Nasıl Oluşturulacağı Hakkında Daha Fazla Detay
Ek 1: Denetleyicilerin Nasıl Oluşturulacağı Hakkında Daha Fazla Detay
Ek 1: Denetleyicilerin Nasıl Oluşturulacağı Hakkında Daha Fazla Detay
Ek 1: Denetleyicilerin Nasıl Oluşturulacağı Hakkında Daha Fazla Detay
Ek 1: Denetleyicilerin Nasıl Oluşturulacağı Hakkında Daha Fazla Detay
Ek 1: Denetleyicilerin Nasıl Oluşturulacağı Hakkında Daha Fazla Detay

Kontrol cihazını mevcut malzemeye ve zevkinize bağlı olarak birçok farklı şekilde gerçekleştirebilirsiniz.

Onları ahşap kutularla gerçekleştirmeyi seviyorum (bu sayfadaki resimlere bakın). Arduino, VGA konektörü ve ilk oynatıcı düğmeleri ve potansiyometre için bir ana kutu; sadece ikinci oyuncu düğmesi ve çark için ikinci (daha küçük) bir tane (Pong ve çizim oyuncağı için gerekli). Diğer bir olasılık, her şeyi tek bir büyük kutuya koymaktır.

İlk önce VGA bağlantı noktasını bağlamanızı tavsiye ederim. Birinci ve ikinci resimlerde bazı detayları görebilirsiniz: Sırasıyla pin 6 ve 7'ye bağlı Kırmızı ve Yeşil için iki 470 Ohm rezistöre ve yatay ve dikey senkronizasyon sinyali için pin 3 ve 9'a iki 68 Ohm'a dikkat edin.

VGA DSUB15 konektörüne bağladığınız pinlere bağlı olarak farklı renk kombinasyonları seçebilirsiniz, 1, 2 ve 3 pinleri sırasıyla Kırmızı, Yeşil, Mavi (RGB) temsil eder. Pin 1 ve 2'yi bağladım, böylece aşağıdaki renk kombinasyonuna sahibim: (0, 0) = siyah; (1, 0) = kırmızı; (0, 1) = yeşil; (1, 1) = sarı.

Tüm farklı olasılıklar için VGAx kitaplıklarını indirdiğiniz sayfadaki detayları okumanızı öneririm.

VGA konektörü hazır olur olmaz diğer tüm kabloları düğmeler, tekerlekler ve hoparlör için hazırlayabilirsiniz (bkz. resim 2).

Şimdi her şeyi bir araya getirin: her bir buton pininin 1 veya 2 kOhm'luk bir direnç üzerinden toprağa bağlanması gerektiğini unutmayın, aksi halde buton açıkken pinin durumu tanımsız olabilir. Bu, pin bağlantısı kesik bırakılırsa, üzerinde onu etkinleştirebilecek rastgele (statik) bir voltaj bulunabileceği anlamına gelir. Daha fazla ayrıntı için bu talimatın ikinci adımındaki şemaya bakın.

Son adım, her şeyi yerinde düzeltmektir. Sıcak tutkal tabancasını kullandım, ancak tercih ettiğiniz yöntemi kullanabilirsiniz.

Adım 4: Ek 2: Bellek Sınırları Hakkında Bazı Hususlar

Basit bir Arduino'nun bir VGA sinyali ve tüm bu oyunları bir arada üretebilmesi şaşırtıcı. Gerçek darboğaz, SRAM eksikliğidir. AVR mikro denetleyicisi, değişkenleri depolamak ve işlemek için yalnızca 2048 bayta sahiptir ve VGAx kitaplığı, ekran değişkenlerini, toplam 1800 bayt için her pikselin 2 bit (4 renk) gerektirdiği 120x60 piksel çerçeve arabelleğinde saklar. Bu, çizim değişkenleri için yalnızca 248 bayt kaldığı anlamına gelir. Ayrıca, deneyimlerime göre, kararsızlıkları önlemek için en az 100 bayt boş bırakılmalıdır. 1950 baytın üzerinde dinamik bellek kullanan mikrodenetleyici, garip ve öngörülemeyen davranışlar göstermeye başlar.

Bu, tüm değişkenlerin farklı oyunlar arasında paylaşılması gerektiği anlamına gelir ve bu, kodu oldukça okunamaz ve hata ayıklamayı zorlaştırır. Önceki çizime sadece "yeni bir oyun eklemek" meselesi değil, tüm kodun derinlemesine değiştirilmesi ve optimize edilmesi gerekiyor.

Ayrıca, mümkün olan minimum değişken biçimini kullanmam gerekiyordu: örneğin, tüm koordinatlar için "int" yerine "byte" kullanmam gerekiyordu veya diğer durumlarda "float" yerine "int" kullanmam gerekiyordu.

Son olarak, teşekkürüm, VGAx kitaplığının ve harika oyun BitNinja'nın yaratıcısı Sandro Maffiodo aka Smaffer'a gidiyor. Bu kütüphane olmadan bu proje gerçekleştirilemezdi.

Basit ama eğlenceli Stacker oyunu için Nikita Kurylev'e de teşekkür ederiz.

Önerilen: