Mündəricat:

Beş Oyunla Arduino VGA Konsolu: 4 addım
Beş Oyunla Arduino VGA Konsolu: 4 addım

Video: Beş Oyunla Arduino VGA Konsolu: 4 addım

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

Əvvəlki Təlimatlarımda, çılpaq bir Arduino və bir neçə digər komponent vasitəsi ilə ən məşhur klassik arcade oyunlarının sadələşdirilmiş versiyalarını təkrarladım. Daha sonra tək bir eskizdə onlardan beşini birləşdirdim. Burada Pong, Breakout, Bomber, Tetris və Etch-a-Sketch-dən ilhamlanan bir oyuncaq oynaya biləcək sadə bir konsol qura biləcəyinizi göstərəcəyəm. Bu konsol, İlanı və digər müəlliflərin yazdığı daha iki oyunu oynamaq üçün də istifadə edilə bilər: Sandro Maffiodo aka "Smaffer" in Bit Ninja və Nikita Kurylevin Stacker.

Əsas xüsusiyyət, VGAx kitabxanası sayəsində VGA siqnalının yaranmasıdır, beləliklə konsolun VGA monitoruna ehtiyacı var. Məqsədim, hər zamanki kimi, onu qurmaq üçün heç bir "xüsusi komponentdən" çəkinməkdir, bundan sonra heç bir dəstəkləyici IC və ya qalxanlara ehtiyacınız yoxdur! Yalnız komponentlər iki potansiyometr, beş düymə, bir neçə rezistor və DSUB15 (VGA) bağlayıcısından ibarətdir. Piezo dinamik isteğe bağlıdır. Bu səhifədəki şəkillərdə bu oyunların necə göründüyünü görə bilərsiniz.

VGAx kitabxanası 120 x 60 piksel qətnamə ilə dörd rəng istifadə etməyə imkan verir, lakin bu retro oyun konsolu üçün kifayət qədər deyil. Qrafik xamdır, lakin potensiometrlərin istifadəsi sayəsində oyunlar düzgün gedir. Sadə səs effektləri də mövcuddur.

Addım 1: Öz Arduino VGA Konsolunuzu necə qurmaq olar

Öz Arduino VGA Konsolunuzu necə qurmaq olar
Öz Arduino VGA Konsolunuzu necə qurmaq olar
Öz Arduino VGA Konsolunuzu necə qurmaq olar
Öz Arduino VGA Konsolunuzu necə qurmaq olar

Əvvəlcə bu səhifənin altındakı ArduinoVGAgame.ino və/və ya Snake.ino kodlarını yükləyin və PC -də eyni adlı bir qovluğa kopyalayın. GitHubdakı bu linkdən VGAx kitabxanasını yükləyin. Ən asan yol, dərhal tanınmaq üçün "kitabxanalar" adlı Arduino proqram alt qovluğuna kopyalamaqdır.

Vacibdir: bu kitabxana Arduno IDE 1.6.4 üçün işləyir, lakin köhnə və ya daha yeni versiyalarla tam uyğun gəlmir.

Kodu Arduino lövhənizə yükləyin (həm Uno, həm də Nano test etdim). Yaddaşın az olması barədə xəbərdarlıq normaldır. Başqa səhvləriniz yoxdursa, hər şey qaydasındadır və dərhal öz konsolunuzu qurmağa başlaya bilərsiniz.

Bunun üçün sizə lazımdır:

  • bir Arduino Uno Rev. 3 və ya Arduino Nano 3.x (ATmega328)
  • DSUB15 Konnektoru, yəni kəsiləcək VGA dişi konnektoru və ya VGA kabeli.
  • Rezistorlar: 2 x 68 Ohm və 2 x 470 Ohm və 5 x 1 ilə 2 kOhm
  • iki 10 kOhm xətti potensiometr (oxşar dəyərlər də yaxşıdır)
  • beş düymə
  • bir parça kabel
  • bütün komponentləri qoymaq üçün bir və ya iki gözəl qutu.

Fakultativ:

  • çörək taxtası və ya lövhə
  • piezo dinamik

Sxem, bitmiş bir "konsol" nümunəsi ilə birlikdə bu addımın yuxarı hissəsində bildirilir.

sxem bir düyməni və potensiometrini necə bağlayacağınızı göstərir. Daha dəqiq desək, 5 düyməni sırasıyla 5, 10, 11, 12 və 13 pinlərinə bağlamaq lazımdır. Hər bir düymənin yerinə yetirdiyi hərəkət sxematik olaraq yuxarı sağ cədvəldə təsvir edilmişdir. Solda bir potansiyometrin necə bağlanacağı göstərilir (A1 və A2 sancaqlarına iki potansiyometr lazımdır). Dinamik A0 analog pininə qoşulmalıdır.

VGA konnektoru olan Arduino lövhəsini, ilk oyunçu potansiyometrini və dörd düyməni tutan taxta bir qutuya qoydum, ikinci oyunçu potansiyometri və onun başlanğıc düyməsi ayrı və daha kiçik bir qutuda.

Bu oyuncağı bəyənirsinizsə və onu yenidən istehsal etmək qərarına gəlsəniz, aşağıdakı şərh bölməsində bir şərh yazsanız və ya bir şəkil göndərsəniz minnətdaram.

Addım 2: Digər Müəlliflərin Oyunları

Sandro Maffiodo bu yaxınlarda BitNinja oyununu yayımladı. Youn burada daha çox məlumat tapa bilər və kodu buradan yükləyə bilər.

Konsolumdan istifadə etmək üçün kodundakı düyməni aşağıdakı kimi yenidən düzəltməlisiniz:

#deftine BTN_UP 11 (13 əvəzinə)

#deftine BTN_LEFT 10 (12 əvəzinə)

#deftine BTN_RIGHT 12 (11 əvəzinə)

Nikita Kurylevdən olan yığıcı burada mövcuddur. Ətraflı məlumat burada.

Yenə kodun fərqli bir hissəsində bir düyməni yenidən yığmalısınız: digitalRead (2) -i digitalRead (13) ilə əvəz etmək kifayətdir.

Addım 3: Əlavə 1: Nəzarətçilərin Necə Yaradılması Haqqında Ətraflı Məlumat

Əlavə 1: Nəzarətçilərin Necə Yaradılması Haqqında Ətraflı Məlumat
Əlavə 1: Nəzarətçilərin Necə Yaradılması Haqqında Ətraflı Məlumat
Əlavə 1: Nəzarətçilərin Necə Yaradılması Haqqında Ətraflı Məlumat
Əlavə 1: Nəzarətçilərin Necə Yaradılması Haqqında Ətraflı Məlumat
Əlavə 1: Nəzarətçilərin Necə Yaradılması Haqqında Ətraflı Məlumat
Əlavə 1: Nəzarətçilərin Necə Yaradılması Haqqında Ətraflı Məlumat
Əlavə 1: Nəzarətçilərin Necə Yaradılması Haqqında Ətraflı Məlumat
Əlavə 1: Nəzarətçilərin Necə Yaradılması Haqqında Ətraflı Məlumat

Mövcud materialdan və zövqünüzdən asılı olaraq nəzarətçini müxtəlif yollarla həyata keçirə bilərsiniz.

Onları taxta qutularla həyata keçirməyi sevirəm (bu səhifədəki şəkillərə baxın). Arduino, VGA konnektoru və ilk oyunçu düymələri və potenziometr üçün əsas qutu; yalnız ikinci oyunçu düyməsi və təkəri üçün ikinci (daha kiçik) biri (Pong və rəsm oyuncağı üçün lazımdır). Başqa bir imkan hər şeyi daha böyük bir qutuya qoymaqdır.

Əvvəlcə VGA portunu bağlamağı məsləhət görürəm. Birinci və ikinci şəkillərdə bəzi detalları görə bilərsiniz: müvafiq olaraq 6 və 7 -ci pinlərə qoşulan Qırmızı və Yaşıl üçün iki 470 Ohm müqavimətinə və üfüqi və şaquli sinxronizasiya siqnalı üçün 3 və 9 pinlərinə 68 Ohm olan iki müqavimətə diqqət yetirin.

VGA DSUB15 konnektoruna bağladığınız pinlərdən asılı olaraq fərqli rəng birləşmələri seçə bilərsiniz, 1, 2 və 3 pinlər sırasıyla Qırmızı, Yaşıl, Mavi (RGB) simvoludur. 1 və 2 sancaqları bağladım, beləliklə aşağıdakı rəng birləşməsinə sahibəm: (0, 0) = qara; (1, 0) = qırmızı; (0, 1) = yaşıl; (1, 1) = sarı.

Bütün fərqli imkanlar üçün VGAx kitabxanalarını yüklədiyiniz səhifədəki detalları oxumağı təklif edirəm.

VGA konnektoru hazır olan kimi düymələr, təkərlər və dinamik üçün bütün digər kabelləri hazırlaya bilərsiniz (şəkil 2 -ə baxın).

İndi hər şeyi bir araya gətirin: unutmayın ki, hər bir düymə pimi 1 və ya 2 kOhm müqavimət vasitəsi ilə yerə bağlanmalıdır, əks halda düymə açıldıqda pin vəziyyəti müəyyən edilə bilməz. Bu o deməkdir ki, pin ayrılarsa, onu aktivləşdirə biləcək təsadüfi (statik) bir gərginliyə sahib ola bilərsiniz. Bu təlimatın ikinci addımında sxematik deteils üçün baxın.

Son addım hər şeyi yerindəcə düzəltməkdir. İsti yapışqan tabancasından istifadə etdim, amma istədiyiniz üsuldan istifadə edə bilərsiniz.

Addım 4: Əlavə 2: Yaddaş Limitləri Haqqında Bəzi Fikirlər

Sadə bir Arduinonun VGA siqnalı və bütün bu oyunları birlikdə yaratması heyrətləndiricidir. Əsl şüşə boyun SRAM olmamasıdır. AVR mikro nəzarətçisinin dəyişənləri saxlamaq və manipulyasiya etmək üçün yalnız 2048 baytı var və VGAx kitabxanası, hər pikselin 2 bitə (4 rəng) ehtiyacı olduğu 120x60 piksellik bir çərçivə buferində ekran dəyişənlərini saxlayır və cəmi 1800 baytdır. Bu o deməkdir ki, eskiz dəyişənləri üçün cəmi 248 bayt qalıb. Bundan əlavə, mənim təcrübəmə görə, qeyri -sabitliyin qarşısını almaq üçün ən azı 100 baytı boş buraxmalıyam. 1950 baytdan yuxarı dinamik yaddaşdan istifadə edərək mikro nəzarətçi qəribə və gözlənilməz davranışlar göstərməyə başlayır.

Bu o deməkdir ki, bütün dəyişənlər fərqli oyunlar arasında paylaşılmalıdır və bu, kodu olduqca oxunmaz hala gətirir və düzəlişləri çətinləşdirir. Əvvəlki eskizə "yeni bir oyun əlavə etmək" məsələsi deyil, bütün kod dərindən dəyişdirilməli və optimallaşdırılmalıdır.

Üstəlik, mümkün olan minimum dəyişən formatdan istifadə etməliydim: məsələn, bütün koordinatlar üçün "int" yerinə "bayt" istifadə etməli oldum və ya digər hallarda "float" yerinə "int" ə üstünlük verməli oldum.

Nəhayət, məlumatım VGAx kitabxanasının və möhtəşəm BitNinja oyununun yaradıcısı Sandro Maffiodo aka Smafferə gedir. Bu kitabxana olmasaydı, bu layihəni həyata keçirmək mümkün olmazdı.

Sadə, lakin gülməli oyun Stacker üçün Nikita Kurylevə də təşəkkür edirəm.

Tövsiyə: