PIC18F4520 İle Tetris Oyunu

| Haziran 15, 2023 Tarihinde güncellendi
PIC18F4520 İle Tetris Oyunu

Tetris oynamak için masrafli bir devre fakat işin yazılım ve donanım kısmı ilgili kişiler için faydalı olabilir feyz verebilir devre PIC18F4520 mikrodenetleyici üzerine kurulu display üzerinde grafik oluşturma matrix transform, x y koordinatlar, piksel hesaplamaları vb. detaylıca anlatılmış..

PICtris

PIC Tetris oyunu (PICtris), RetroBrad tarafından forumda yakın zamanda sorulan bir sorudan doğdu. LED’leri nasıl değiştireceğini ve 2D grafikleri nasıl çizeceğini bilmek istedi. Ben daha pratik bir adamım ve geçmişte grafikler hiçbir zaman endişe konusu olmadı. İşlerin nasıl yürüdüğünü öğrenmek için 2D dünyasına dalmak ilgimi çekti.

64 LED ve dört düğme, tek bir PIC (18LF4520) ve iki adet AA pil ile kontrol edilir. Kaynak kodu çok verimli çalışır ve program son derece duyarlıdır. Önceden tanımlanmış sabitlere kıyasla algoritma tabanlı grafik döndürmeleri kullanmaya kararlı olduğum için ikincisi için endişelendim. Buradan başka etkileşimli oyunlar oluşturmak için benzer bir yaklaşım kullanabilirim!

NOT: Tetris, Swordfish Basic için geliştirilmiştir; kaynak kodu, ücretsiz Swordfish Special Edition sürümü altında derlenecektir.

Her zaman olduğu gibi, yeni özellikler bir zorunluluktur! Yukarıdaki videodan bu yana aşağıdakileri ekledim:

Oyun başladığında “TETRIS” yazan bir açılış ekranı.
Yüksek puanlar – çabalarınız EEPROM’a kaydedilir.
Ekranı aydınlatmak için yüksek güçlü darlington sürücüsü.

Yukarıdaki özelliklerin tümü kaynak koduna dahil edilmiştir (aşağıda bulunur). Ayrıca, oyunun yakın zamanda tamamlanmış bir versiyonu da burada – sesli! (Bu proje videosu için Digital DIY’den DomS’a çok teşekkürler)

Enrico Castellani ayrıca PICTris kartının bir versiyonunu yaptı ve Eagle PCB yerleşim dosyalarını paylaşma nezaketini gösterdi. Dosyaları ve video gösterimini aşağıdaki yorumlarda bulabilirsiniz.

2D Grafik Oluşturma

Tetris oyununda grafikler 8×16 piksel nesneler olarak ele alınır. Grafik tasarımın yükünü hafifletmek için tüm zor işi sizin yerinize yapan bir Excel elektronik tablosu yaptım.

Nesnenin her bloğu için bir “x” yerleştirebileceğiniz 8×16’lık bir alan var. “X” içeren herhangi bir blok, aşağıdaki gibi görünecek şekilde biçimlendirilecektir (bu yaklaşımın, dağınık x’lere kıyasla yorumlanmasını daha kolay buldum). Elektronik tablo, grafik için gereken Swordfish kodunu hesaplayacak ve görüntüleyecektir! Basit. İşte bir ekran görüntüsü:


Metin Oluştur ve Görüntüle

Elektronik tablo, metin de dahil olmak üzere herhangi bir nesne oluşturmak için kullanılabilir. Geçenlerde küçük bir özellik eklemek istedim – açılış ekranı. Grafik tasarımcıyı kullanmak, yapmayı son derece kolaylaştırdı.

8×16 ekranda TETRIS kelimesini oluşturacak tüm noktalara “x” koydum. Biraz yaratıcı olmalı ve kelimeyi sağda gösterildiği gibi iki sütuna ayırmalıydım.

Nesneyi metin olarak nasıl kullandığıma bakmak isterseniz – kaynak koduna göz atın (aşağıda listelenmiştir), orada “SplashScreen” adında bir rutin olacaktır.

PIC üzerindeki grafikler

2B grafiklerle çalışırken izlenecek birkaç yol vardır. İki yaklaşımın arkasındaki matematiği araştırdım: trigonometri (dönen Kartezyen koordinatlar) ve 2B afin matris dönüşümü. Uygulamada gerçekten oldukça basit olmalarına rağmen, her ikisini de anlamak için bir üniversite diplomasına ihtiyacınız var gibi geliyor. Başlangıçta nesneleri döndürmek için trigonometri kullandım, ancak afin matris dönüşümü çok daha basit ve daha da önemlisi daha hızlıydı.

pic-tetris-circuit-schematic

The PIC Tetris game (PICtris) spawned from a recent question by RetroBrad in the forum. He wanted to know how to manipulate LEDs and draw 2D graphics. I’m more of a practical kind of guy and in the past, graphics were never an area of concern. I was intrigued to delve into the world of 2D to find out how things tick.

The 64 LEDs and four buttons are controlled by a single PIC (18LF4520) and two AA batteries. The source code operates very efficiently, and the program is extremely responsive. I was worried about the latter as I was determined to use algorithm based graphic rotations as compared to predefined constants. From here I could use a similar approach to create other interactive games!

NOTE: Tetris was developed for Swordfish Basic; the source code will compile under the free Swordfish Special Edition version.

Before I press on, here is a video of the completed Tetris game

As always, new features are a must! Since the above video, I have added the following:

A splash screen that displays “TETRIS” when the game starts.
High scores – your efforts are recorded in the EEPROM.
High power darlington driver to brighten up the display.

All of the above features are incorporated in the source code (found below). Also, here is a recently completed version of the game – with audio! (Big thanks to DomS from Digital DIY for this project video) Enrico Castellani also made a version of the PICTris board, and has been kind enough to share the Eagle PCB layout files. You can find the files and a video demonstration in the comments below.

Creating 2D Graphics In the Tetris game, graphics are treated as 8×16 pixel objects. To ease the overhead of graphic design, I made an Excel spreadsheet that does all of the hard work for you.

There’s an 8×16 field where you can place an “x” for each block of the object. Any block with a “x” will be formatted to look as it does below (I found that approach easier to interpret compared to scattered x’s). The spreadsheet will calculate and display the Swordfish code required for the graphic! Simple. Here’s a screen shot:

Create & Display Text The spreadsheet can be used to create any object, including text. I recently wanted to add a small feature – a splash-screen. Using the graphic designer made it extremely easy to do. I put an “x” in all the spots that would make up the word TETRIS on the 8×16 display. I had to get a little creative and split the word into two columns as shown on the right. If you’d like to look at how I used the object as a text – browse through the source code (listed below), there will be a routine there called “SplashScreen”.

Graphics on a PIC There are several avenues to take when working with 2D graphics. I explored the mathematics behind two approaches: trigonometry (rotating Cartesian coordinates) and 2D affine matrix transformation. Both of them sound like you need a university degree to understand, though they are really quite simple in application. I originally used trigonometry to rotate the objects, though affine matrix transformation was much simpler and more importantly, faster.

Kaynak: digital-diy.com/swordfish-project/213-tetris-on-a-pic-micro.html

pic18f4520-ile-tetris-oyunu

Şifre-Pass: 320volt.com

Yayım tarihi: 2012/08/27 Etiketler: , , ,



12 Yorum “PIC18F4520 İle Tetris Oyunu

  1. mstkmstk

    ben bu projeyi yapmak istiyorum fakat programlama aşamasını anlayamadım hex dosyası varmı? yada “source” prgramını nasıl .hex uzantılı yapabilirim ? teşekürler

    CEVAPLA
  2. düzcelidüzceli

    bu devreyi 877 entegresine uygun hale getirebilen varmı…

    CEVAPLA
  3. MhmtMhmt

    Merhaba,acaba bu devrenin hex dosyasını ve ares çizimini paylaşma şansın varmı.Özellikle kodları paylaşırsan sevinirim.

    CEVAPLA
  4. fatih özcanfatih özcan

    Selamun aleyküm bıze bunun hex dosyası ısıs ve ares dosyaları lazım. akdeniz üniversitesinde ögrencıyız.bu bizim okul bitirme projemiz olucak lutfen bıze yardımcı olurmusunuz

    CEVAPLA
  5. İbrahimİbrahim

    selamün aleyküm biz bunun dot matris(8×8) ares kütüphanesini bulamadık yardımcı olabilir misiniz lütfen

    CEVAPLA
  6. YsmnYsmn

    Bu kodu PIC C Compiler programindan derleyince hata veriyo. Hata kaynagini bulamiyoruz yardim edebilecek olan var mi?

    CEVAPLA

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir