Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Raspberry Pico ile Simon Oyunu Nasıl Yapılır?
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Raspberry Pico ile Simon Oyunu Nasıl Yapılır?

Liste

Raspberry Pico ile Simon Oyunu Nasıl Yapılır?

teknomers
Son güncelleme: 24 Ocak 2022 10:19
teknomers
Paylaş
Paylaş


Contents
  • Bu proje için ihtiyacınız olacak
  • Raspberry Pi Pico ile Simon Oyunu Oluşturma
  • CircuitPython ve kitaplıkları yükleyin
  • Raspberry Pi Pico’da Simon Oyununun Kodunu Yazma
  • Raspberry Pico’da Simon Oyunu için Komple Kod Listesi

Simon diyor ki, Mutlu Yıllar Ahududu Pi Pico! 21 Ocak 2021’de yayınlandı, Raspberry Pi’nin ilk yongası olan RP2040, 2021 için sahip olunması gereken mikro denetleyici oldu. 0,70 dolarlık yonga dünya çapındaki projelere güç veriyor. Basit yanıp sönen LED’lerden RP2040, 3D yazıcı kontrol kartlarına çok yönlü bir çiptir. aracılığıyla duyurulur Ahududu Pi PicoModern Arduino kartlarında kullanılan DIL paketine benzeyen 4 dolarlık bir mikrodenetleyici geliştirme kartı olan Pico, düşük maliyetli, birinci ve üçüncü taraf desteğiyle birinci taraf donanımıdır.

Pico’yu seviyoruz, birçok üreticinin istediği düşük maliyet ve kullanım kolaylığının doğru karışımı. Yeniden kullanma yeteneği Raspberry Pi eklentileri ve genel elektronik bileşenler dışarı çıkıp daha fazla aksesuar almamız gerekmediği anlamına geliyor. Pico’nun bu bölümde eksik olduğundan değil. Pimoroni, Adafruit ve Kitronik gibi şirketler, Pico deneyiminizi geliştirmek için tasarlanmış harika aksesuarları piyasaya sürdü.

Raspberry Pi Pico’nun ilk doğum gününü kutlamak için bir oyun yaptık. Yine de bu herhangi bir oyun değil, 1970’lerin sonlarında meşhur olan hafıza oyunu Simon’ın kendi versiyonumuz. Oyunun amacı rastgele seçilen renk dizisini eşleştirmektir. Doğru anlarsak, bir ışık gösterisi yaparız. Ama yanlış anlayın ve kırmızıyı göreceğiz.

Bu proje için yapılan donanım, Raspberry Pi Pico’nun sağladığı basitliğe bir selam olarak, tamamen breadboard tabanlıdır. Kablolama basittir: bir çıkışımız, sekiz LED NeoPixel çubuğumuz ve renk kodlu düğmeler biçiminde dört girişimiz var. Pico, Adafruit’in kullanımı kolay donanım kitaplıklarına sahip mükemmel MicroPython çatalı CircuitPython kullanılarak programlanmıştır.

O zaman bu partiyi başlatalım!

Bu proje için ihtiyacınız olacak

Raspberry Pi Pico ile Simon Oyunu Oluşturma

Yapının iki bölümü vardır. Dört basma düğmesi kullanıcı arabirimini oluşturur ve NeoPixel çubuğu bizim çıktımızdır.

(İmaj kredisi: Tom’un Donanımı)

NeoPixel, veri için GPIO 28’e ( CircuitPython’da GP28) bağlanır ve doğrudan USB veri yolundan güç sağlamak için 5V (VBUS) pinini kullanır. GND, Pico’daki herhangi bir GND’ye bağlanır.

Raspberry Pi Pico ile Simon Oyunu

(İmaj kredisi: Tom’un Donanımı)

Dört düğme Pico’daki dört GPIO pinine bağlanır.

Düğme rengiAhududu Pi Pico GPIO
kırmızı27
YeşilGPIO 26
Mavi22
SarıGPIO 21

Ve buton devre tahtasındaki negatif rayı (- ile işaretli) kullanarak Pico’dan bir GND bağlantısı (Siyah tel) alıp bir GND rayı oluşturuyoruz. Oradan, düğmelere dört GND bağlantısı sağlıyoruz. Bu, düğmelerimizin basıldığında GND’ye (Toprak) çekeceği anlamına gelir.

Raspberry Pi Pico ile Simon Oyunu

(İmaj kredisi: Tom’un Donanımı)

Son devre yukarıdaki gibi görünüyor. Devam etmeden önce kablolamanızı kontrol edin.

CircuitPython ve kitaplıkları yükleyin

CircuitPython’u kurmak son derece basittir ve Adafruit’in bunun nasıl yapılacağına dair harika bir kılavuzu vardır. Takip et Adafruit’in talimatları En son sürümü yüklemek için.

Raspberry Pi Pico ile Simon Oyunu

(İmaj kredisi: Tom’un Donanımı)

Raspberry Pi Pico’muz artık dosya yöneticisinde bir sürücü olarak görünüyor. Sürücüye CIRCUTPY adı verilir ve orada bir dizi dosya ve klasör buluruz. Şu anda, odaklanmamız gerekiyor kitap Kitaplıklarla dolu bir ZIP dosyası indirmemiz ve projelerimiz için doğru dosyaları yüklememiz gerekiyor.

1. En son kitaplık paketini indirin CircuitPython sitesinden.

Raspberry Pi Pico ile Simon Oyunu

(İmaj kredisi: Tom’un Donanımı)

2. Dosyaları ayıklayın Masaüstünüze.

3. adafruit_pixelbuf.mpy ve neopixel.mpy’yi kopyalayın çıkarılan dosyalardan lib klasörüne DEVRE sürücünüzde.

Raspberry Pi Pico ile Simon Oyunu

(İmaj kredisi: Tom’un Donanımı)

Raspberry Pi Pico’da Simon Oyununun Kodunu Yazma

1. code.py dosyasını açın tercih ettiğiniz düzenleyicide CIRCUTPY sürücüsünün kökünde bulunur.

2. Herhangi bir kodu sil dosyanın içinde.

3. Oyunun hızını kontrol etmek ve GPIO’ya erişim için kitaplıkları içe aktarın. Time ve Board, yaygın CircuitPython kitaplıklarını kullanır. Zaman, kodu duraklatmak için işlevler içerirken, Board temel GPIO erişimi sağlar.

import time
import board

4. NeoPixels’in gelişmiş kontrolü için iki kitaplık daha içe aktarın. Colorwheel, gökkuşağı döngüsü efekti oluşturmak için kullanacağımız bir animasyon aracıdır. NeoPixel, sekiz RGB LED’i kontrol etmek için kullanılan kütüphanedir.

from rainbowio import colorwheel
import neopixel

5. İki son kitaplığı içe aktarın. Rastgele içe aktarma seçiminden ve üniforma ve digitailio’dan DigitalInOut, Direction ve Pull’u içe aktarın giriş/çıkış, pin yönü ve yukarı çekme dirençlerini desteklemek için. Rastgele’nin birçok işlevi vardır, ancak seçim, listelerden, demetlerden, sözlüklerden vb. “rastgele” seçim yapmamızı sağlar. Tekdüzen, kayan sayılar için rastgele bir sayı üretecidir. DigitalIO, GPIO’yu nasıl kullandığımıza ince ayar yapmak için Board kitaplığıyla birlikte çalışır. Bu durumda girişleri (düğmeleri) kullanmak ve GPIO pinlerinin dahili direncini yukarı çekecek şekilde ayarlamak istiyoruz (3,3V).

from random import choice, uniform
from digitalio import DigitalInOut, Direction, Pull

6. GPIO 28’i NeoPiksellerimizi kontrol etmek için kullanılan pin olarak ayarlayın, sonra num_pixels adında bir değişken oluşturun NeoPixel LED’lerinin sayısını saklamak için.

pixel_pin = board.GP28
num_pixels = 8

7. Bir nesne, “pikseller” oluşturun ve GPIO pinini ve piksel sayısını tanımlayan iki değişkeni kullanarak NeoPiksellere bağlanmak için kullanın. Ayrıca göz yorgunluğunu azaltmak için parlaklığı 0,3’e (%30) ayarladık.

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False)

8. GPIO 27’ye bağlı kırmızı düğmeyi temsil eden kırmızı bir nesne oluşturun.

red = DigitalInOut(board.GP27)

9. Kırmızı düğme için GPIO pinini giriş olarak ayarlayın.

red.direction = Direction.INPUT

10. Kırmızı düğmenin GPIO pinini yüksek çekecek şekilde ayarlayın. Bir yukarı çekme direnci kullanarak GPIO 27’yi 3.3V’a çekiyoruz. Düğmeyi Pico’ya bağlama şeklimiz kırmızı düğmeye basıldığında bu pimi GND’ye (düşük) çekecektir.

red.pull = Pull.UP

11. Yeşil düğme için işlemi tekrarlayın.

green = DigitalInOut(board.GP26)
green.direction = Direction.INPUT
green.pull = Pull.UP

12. Mavi için tekrar edin.

blue = DigitalInOut(board.GP22)
blue.direction = Direction.INPUT
blue.pull = Pull.UP

13. Sarı için tekrarlayın.

yellow = DigitalInOut(board.GP21)
yellow.direction = Direction.INPUT
yellow.pull = Pull.UP

14. Düğmeler için RGB renk değerlerini depolamak için beş grup (veri depolama nesneleri) oluşturun ve LED’leri kapatmak için.

RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 150, 0)
OFF = (0, 0, 0)

15. Bir gökkuşağı efekti görüntüleyen tüm NeoPikseller arasında geçiş yapacak olan Rainbow_cycle adlı bir işlev oluşturun. Bu işlev, Adafruit’in standart “iplik testi” demosunun bir parçasıdır.

def rainbow_cycle(wait):
   for j in range(255):
       for i in range(num_pixels):
           rc_index = (i * 256 // num_pixels) + j
           pixels[i] = colorwheel(rc_index & 255)
       pixels.show()
       time.sleep(wait)

16. “Renkler” adında bir liste oluşturun ve bunu renk gruplarını saklamak için kullanın. daha önce oluşturduk.

colors = [RED, GREEN, BLUE, YELLOW]

17. 10 kez tekrar edecek bir for döngüsü oluşturun. Döngü her yinelendiğinde, oyun başladığında bir ışık gösterisi oluşturmak için Rainbow_cycle işlevini kullanır.

for i in range(10):
   rainbow_cycle(0)

18. Projenin ana gövdesi, oyun kodunu çalıştıracak olan while True’dur. Bir while True döngüsü oluşturun ve piksel nesnesini çağırın LED’leri kapatmak için.

while True:
   pixels.fill(OFF)
   pixels.show()

19. Rastgele seçilen renk dizisini saklamak için iki boş liste oluşturun, ve Oyuncuların tahminlerini saklamak için.

   rnd_colors = []
   player = []

20. Oyunun başlamasını tetiklemek için bir if koşullu testi oluşturun. Oyuna başlamak için yeşil düğmeye basmalıyız. Bu pin bir pull-up direnci kullanılarak yukarı çekildiğinden, pin düşük (Yanlış) olduğunda oyunu başlatmak için tetiklememiz gerekiyor. Düğmeler, yukarı çekilen GPIO pinlerine ve GND’ye bağlanır. Yani düğmeye basıldığında pimler aşağı çekilir.

   if green.value == False:

21. 0,3 ile 1,0 arasında rastgele seçilen bir kayan nokta değerini saklamak için bir “gecikme” değişkeni oluşturun. Çıktıyı bir ondalık basamağa biçimlendirmek için round() işlevini bunun etrafına sarın. Hata ayıklama için çıktıyı Python kabuğuna yazdırın. Bu, oynatıcıya gösterilen renk dizisi arasında bir duraklama oluşturmak için kullanılan 0,3 ile 1 arasında rastgele bir sayı üretecektir.

       delay = round(uniform(0.3,1.0),1)
       print(delay)

22. rnd_colors listesine rastgele seçilmiş dört renk eklemek için bir for döngüsü kullanın ve bunları hata ayıklama için Python kabuğuna yazdırın. Bunlar oyuncunun tahmin etmesi gereken renkler olacak.

       for i in range(4):
           rnd_colors.append(choice(colors))
           print(rnd_colors)

23. Oynatıcıya renk sırasını gösterin. Bu for döngüsü, rnd_colors listesinde depolanan dört renk üzerinde yinelenir. Döngü her yinelendiğinde RGB değeri, o rengi göstermek için piksel.fill() ile birlikte kullanılır.

       for color in rnd_colors:
           print(color)
           pixels.fill(color)
           pixels.show()

24. Rengi göstermek için rastgele seçilen gecikmeyi kullanın, ardından aynı gecikmeyi kullanarak LED’leri kapatın.

           time.sleep(delay)
           pixels.fill(OFF)
           pixels.show()
           time.sleep(delay)

25. Oyuncu listesinin uzunluğunu kontrol etmek için bir süre döngüsü kullanın ve bu döngüye çift tuşa basma olasılığını azaltmak için 0,3 saniyelik bir gecikme ekleyin (geri dönme) Girintili kod, yalnızca oyuncu tarafından dörtten az tahmin olduğunda çalışacaktır.

       while len(player) <4:
           time.sleep(0

26. Her düğmenin durumunu okumak için bir if ifadesi oluşturun, basılan rengi saklayın ve hata ayıklama değerini gösterin. Birincisi kırmızı buton. Basıldığında, RGB renk değerini oynatıcı listesine ekleyecektir. Ardından, hata ayıklama için değeri Python kabuğuna yazdırın.

           if red.value == False:
               player.append((255,0,0))
               print(player)

27. Oyuncuya geri bildirim vermek için, pikselleri kapatmadan önce NeoPikselleri 0,1 saniye boyunca seçtikleri renge ayarlayın.

               time.sleep(0.1)
               pixels.fill(OFF)
               pixels.show()

28. Yeşil düğme için işlemi tekrarlayın. Bu koşulun doğru olup olmadığını kontrol etmek için bir elif (else if) kullanın.

          elif green.value == False:
               player.append((0,255,0))
               print(player)
               pixels.fill(GREEN)
               pixels.show()
               time.sleep(0.1)
               pixels.fill(OFF)
               pixels.show()

29. Mavi düğme için tekrarlayın.

           elif blue.value == False:
               player.append((0,0,255))
               print(player)
               pixels.fill(BLUE)
               pixels.show()
               time.sleep(0.1)
               pixels.fill(OFF)
               pixels.show()

30. Sarı düğme için tekrar edin.

           elif yellow.value == False:
               player.append((255, 150, 0))
               print(player)
               pixels.fill(YELLOW)
               pixels.show()
               time.sleep(0.1)
               pixels.fill(OFF)
               pixels.show()

31. Oyuncuların rastgele seçilen değerlere karşı tahminlerini kontrol etmek için bir if koşullu testi kullanın. Oyuncu dört tahminini girdikten sonra, oyunun başında seçilen değerlerle karşılaştırılır.

       if player == rnd_colors:

32. Bir for döngüsü kullanın ve Rainbow_cycle() işlevini çalıştırmak için 10 kez yinelenecek şekilde ayarlayın oyuncunun kazandığını gösterir.

           for i in range(10):
               rainbow_cycle(0)

33. NeoPixels’i üç kez yanıp sönecek başka bir koşul oluşturun. Oyuncu, yanlış tahminde bulunursa NeoPixels’in kırmızı renkte yanıp söndüğünü görecektir.

       else:
           for i in range(3):
               pixels.fill(RED)
               pixels.show()
               time.sleep(0.2)
               pixels.fill(OFF)
               pixels.show()
               time.sleep(0.1)

34. Kodu Raspberry Pi Pico’nuza code.py olarak kaydedin ve oyun Rainbow_cycle() işlevini çalıştırarak başlayacaktır.

35. Yeşil tuşa basarak oyuna başlayın.

Raspberry Pico’da Simon Oyunu için Komple Kod Listesi

import time
import board
from rainbowio import colorwheel
import neopixel
from random import choice, uniform
from digitalio import DigitalInOut, Direction, Pull

#NeoPixel setup
pixel_pin = board.GP28
num_pixels = 8
pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False)
#Button Setup
red = DigitalInOut(board.GP27)
red.direction = Direction.INPUT
red.pull = Pull.UP

green = DigitalInOut(board.GP26)
green.direction = Direction.INPUT
green.pull = Pull.UP

blue = DigitalInOut(board.GP22)
blue.direction = Direction.INPUT
blue.pull = Pull.UP

yellow = DigitalInOut(board.GP21)
yellow.direction = Direction.INPUT
yellow.pull = Pull.UP

# RGB Color Codes
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 150, 0)
OFF = (0, 0, 0)

#Rainbow Animation
def rainbow_cycle(wait):
    for j in range(255):
        for i in range(num_pixels):
            rc_index = (i * 256 // num_pixels) + j
            pixels[i] = colorwheel(rc_index & 255)
        pixels.show()
        time.sleep(wait)
#List of colors
colors = [RED, GREEN, BLUE, YELLOW]
#The "attract sequence to entice people to play
for i in range(10):
    rainbow_cycle(0)

while True:
    pixels.fill(OFF)
    pixels.show()
    rnd_colors = []
    player = []
#Wait for the green button start the game
    if green.value == False:
        delay = round(uniform(0.3,1.0),1)
        print(delay)
        for i in range(4):
            rnd_colors.append(choice(colors))
            print(rnd_colors)
        for color in rnd_colors:
            print(color)
            pixels.fill(color)
            pixels.show()
            time.sleep(delay)
            pixels.fill(OFF)
            pixels.show()
            time.sleep(delay)
#Player has four guesses, each guess saves the color choice to player list
        while len(player) <4:
            time.sleep(0.3)
            if red.value == False:
                player.append((255,0,0))
                print(player)
                pixels.fill(RED)
                pixels.show()
                time.sleep(0.1)
                pixels.fill(OFF)
                pixels.show()
            elif green.value == False:
                player.append((0,255,0))
                print(player)
                pixels.fill(GREEN)
                pixels.show()
                time.sleep(0.1)
                pixels.fill(OFF)
                pixels.show()
            elif blue.value == False:
                player.append((0,0,255))
                print(player)
                pixels.fill(BLUE)
                pixels.show()
                time.sleep(0.1)
                pixels.fill(OFF)
                pixels.show()
            elif yellow.value == False:
                player.append((255, 150, 0))
                print(player)
                pixels.fill(YELLOW)
                pixels.show()
                time.sleep(0.1)
                pixels.fill(OFF)
                pixels.show()
#If the player guesses correctly they get a nice rainbow
        if player == rnd_colors:
            for i in range(10):
                rainbow_cycle(0)
#If you lose, you see red!
        else:
            for i in range(3):
                pixels.fill(RED)
                pixels.show()
                time.sleep(0.2)
                pixels.fill(OFF)
                pixels.show()
                time.sleep(0.1)



genel-21

OnePlus 11 Amazon Almanya’da!
Sequoia 2020 fonunu %25 artırdı
Oh Hey, İşte JUICE Sondası Jüpiter’e doğru ilerliyor
Bu Ahududu Pi-Powered, 4G Linux Telefonu Yapabilirsiniz
Beşinci Duvar’dan VC Brendan Wallace, meta veri deposuna yatırım yapmaya pek hazır değil
ETİKETLENDİ:ilenasılOyunuPicoRaspberrySimonYapılır
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Kripto Para Birimleri Artık Brezilya Fintech Dock’ta Uluslararası Havaleler İçin Kullanılabilir
Sonraki Makale NASA, ISS’ye ilk uzay turizmi misyonunun başlatılmasını erteledi
Yorum yapılmamış

Bir yanıt yazın Yanıtı iptal et

Yorum yapabilmek için oturum açmalısınız.

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Hyte Y50 şasesi, kablo seti ve Nexus 3.0 güncellemeleriyle tanıtıldı
Donanım
Path of Exile 2 Yenilikçi Bir Başarıya Hazırlanıyor
Oyun
Oura Ring 5 Daha İnce, Daha Hafif ve Daha İyi Neler Sunuyor?
Genel
Yapay Zeka Liderlerinden Biyolojik Silahlara Karşı Daha Sert Önlemler Çağrısı
Liste
Kamuya Açık Bir SaaS Motoru Geliştirmek: Faturalama Sürecini Değil, Faturalama Arayüzünü Yayınlamak
Yazılım
Cisco, Kritik Unified CM Açığına Dikkat Çekiyor: Hızla Önlem Alın!
Siber Güvenlik
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?