back to top

PicoBricks ile Rengi Bil Projesi

PicoBricks ile Rengi Bil Oyunu

LED’ler elektronik sistemlerde sıklıkla kullanılan bileşenlerdir. Her butonun yanında ufak LED’ler bulunabilir. Tek bir LED’in farklı renklerde yanmasını sağlayarak birden fazla LED’in yapacağı işi tek bir LED ile yapmak mümkündür. Bu tipteki LED’lere RGB LED denir. Adını içerisinde bulunan ve kırmızı, yeşil ve mavi renkte yanan üç LED’den alır. En büyük avantajı ise bu 3 renk haricinde birçok rengin yanmasını sağlamasıdır.

Bu projemizde, her programlama dilinde bulunan rastgeleliği anlayacaksınız. PicoBricks modülünde bulunan RGB LED, OLED ekran ve buton ile eğlenceli bir oyun hazırlayacağız.

Detaylar ve Algoritma

Proje, kullanıcının renkleri doğru veya yanlış bilmesi üzerine kurgulanacak. PicoBricks üzerindeki RGB LED üzerinde kırmızı, yeşil, mavi veya beyaz renklerden bazıları rastgele yanacak ve bu dört renkten birinin adı rastgele şekilde ekranda yazacaktır. Kullanıcının cevap vermesi için 1.5 saniye içerisinde butona basması gerekecek. Oyun bu şekilde 10 kere tekrar edecek. LED rengi ve ekranda yazan renk eşleştiğinde butona basarsa veya eşleşmediğinde basmazsa kullanıcı 10 puan kazanacak. Aksi takdirde 10 puan kaybedecek. Oyun sonunda kullanıcının topladığı puan ekranda görüntülenecek.

Bileşenler

1x PicoBricks

Devre Şeması

Devre Şeması

MicroBlocks Kodları

MicroPython Kodları

Pico'daki donanıma erişmek için makine içe aktarma Pininden,I2C,ADC,PWM #
picobricks'ten importSSD1306_I2C #OLED Ekran Kitaplığı
kullanım süresini içe aktar
picobricks importWS2812 #ws8212 kütüphanesinden

#OLED Ekran Ayarları
GENİŞLİK=128YÜKSEK=64

sda=machine.Pin(4)
scl=machine.Pin(5)
#dijital pin 4 ve 5'iOLED İletişimi için ÇIKIŞ olarak başlat

i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)
neo =WS2812(pin_num=6, num_leds=1, parlaklık=0,3)#dijital pin 6'yı NeoPixel için bir ÇIKIŞ olarak başlat

oled =SSD1306_I2C(128,64, i2c)
ldr =ADC(Pin(27))#dijital pin 6'yı NeoPixel için bir ÇIKIŞ olarak başlat
düğme =Pin(10,Pin.IN,Pin.PULL_DOWN)#dijital pin 10'u düğme için bir INPUT olarak başlat
sesli uyarı =PWM(Pin(20, Pin.OUT))#dijital pin 20'yi sesli uyarı için bir ÇIKIŞ olarak başlat
buzzer.freq(1000)SİYAH=(0,0,0)BEYAZ=(255,255,255)
#RGB siyah beyaz renk kodu
oled.fill(0)
oled.show()

neo.pixels_fill(SİYAH)
neo.pixels_show()if ldr.read_u16()<4000:
    uyanma = Doğru
başka:
    uyanma = Yanlış

while Doğru:while up==Yanlış:
        oled.fill(0)
        oled.show()
        oled.text("İyi geceler",25,32)
        oled.show()
        #OLED'de göster ve "İyi geceler" yaz
        utime.sleep(1)if ldr.read_u16()40000:
        uyanma= Yanlış

    utime.sleep(1)
    #bir saniye bekle

Arduino C Kodları

makineden içe aktarma Pininden,I2Cpicobricks'ten importSSD1306_I2Cimport utime
urandom'u içe aktar
_thread'i içe aktar
picobricks'ten importWS2812WIDTH=128HEIGHT=64
sda=machine.Pin(4)
scl=machine.Pin(5)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)
ws =WS2812(pin_num=6, num_leds=1, parlaklık=0,3)

oled =SSD1306_I2C(GENİŞLİK, YÜKSEKLİK, i2c)

düğme =Pin(10,Pin.IN,Pin.PULL_DOWN)KIRMIZI=(255,0,0)YEŞİL=(0,255,0)MAVİ=(0,0,255)BEYAZ=(255,255,255)SİYAH=(0,0,0 )

oled.fill(0)
oled.show()

ws.pixels_fill(SİYAH)
ws.pixels_show()

küresel Button_pressed
puan=0
Button_pressed = Yanlış

def random_rgb():
    küresel ledrenk
    ledcolor=int(urandom.uniform(1,4))if ledcolor ==1:
        ws.pixels_fill(KIRMIZI)
        ws.pixels_show()
    elif led rengi ==2:
        ws.pixels_fill(YEŞİL)
        ws.pixels_show()
    elif led rengi ==3:
        ws.pixels_fill(MAVİ)
        ws.pixels_show()
    elif led rengi ==4:
        ws.pixels_fill(BEYAZ)
        ws.pixels_show()

def rastgele_metin():
    küresel oledtext
    oledtext=int(urandom.uniform(1,4))if oledtext ==1:
        oled.fill(0)
        oled.show()
        oled.text("KIRMIZI",45,32)
        oled.show()
    elif oledmetin ==2:
        oled.fill(0)
        oled.show()
        oled.text("YEŞİL",45,32)
        oled.show()
    elif oledmetin ==3:
        oled.fill(0)
        oled.show()
        oled.text("MAVİ",45,32)
        oled.show()
    elif oledmetin ==4:
        oled.fill(0)
        oled.show()
        oled.text("BEYAZ",45,32)
        oled.show()

def Button_reader_thread():while True:
        küresel Button_pressed
        if butonu_basıldı == Yanlış:if butonu.değer()==1:
                Button_pressed = Doğru
                küresel puan
                küresel oledtext
                küresel ledrenk
                if ledrenk == oledmetin:
                    puan +=10diğer:
                    puan -=10
        utime.sleep(0,01)

_thread.start_new_thread(button_reader_thread,())

oled.text("Oyun Başlıyor",0,10)
oled.show()
utime.sleep(2)for i inrange(10):for j inrange(10):random_text()random_rgb()
    Button_pressed=Yanlış
    utime.sleep(1.5)
    oled.fill(0)
    oled.show()
    ws.pixels_fill(SİYAH)
    ws.pixels_show()
utime.sleep(1.5)
oled.fill(0)
oled.show()
oled.text("Toplam puanınız:",0,20)
oled.text(str(puan),30,40)
oled.show()

Son Çıkan Yazılar

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz