R­a­s­p­b­e­r­r­y­ ­P­i­c­o­ ­i­l­e­ ­S­i­m­o­n­ ­O­y­u­n­u­ ­N­a­s­ı­l­ ­Y­a­p­ı­l­ı­r­?­

R­a­s­p­b­e­r­r­y­ ­P­i­c­o­ ­i­l­e­ ­S­i­m­o­n­ ­O­y­u­n­u­ ­N­a­s­ı­l­ ­Y­a­p­ı­l­ı­r­?­

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!

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.

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.

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

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.

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

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’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.

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.

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.

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.

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).

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.

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.

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

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

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.

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

12. Mavi için tekrar edin.

13. Sarı için tekrarlayın.

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.

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.

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

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.

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.

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

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.

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.

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.

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.

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

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.

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.

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

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.

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

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

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.

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.

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.

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.

Popular Articles

Latest Articles