LED'ler genellikle elektronik sistemlerde kullanılır. Her düğmenin yanında her seçeneğin yanında küçük LED'ler bulunabilir. Tek bir LED'in farklı renklerde yanmasını sağlayarak birden fazla LED'in işini tek bir LED ile yapmak mümkündür. Bu tipte çalışan LED'lere RGB LED denir. Adını Kırmızı, Yeşil, Mavi renk isimlerinin baş harflerinden alır. Bu LED'in bir diğer avantajı da 3 ana rengin karışımıyla ışık verebilmesidir. Mor, turkuaz, turuncu…
Bu projede her programlama dilinde kullanılan rastgeleliği öğreneceksiniz. ile keyifli bir oyun hazırlayacağız. RGB LED'i, OLED ekran ve düğme Picobricks modülü.
Bu projemizde Picobricks'teki ışık sensörünü kullanarak gün ışığına göre ayarlanan zamanlayıcı alarm oluşturacağız.
Ayrıntılar ve Algoritma
Projede kuracağımız oyun kullanıcının renkleri doğru ya da yanlış bilmesi üzerine kurgulanacak. Picobricks üzerindeki RGB LED üzerinde kırmızı, yeşil, mavi ve beyaz renklerden biri rastgele yanacak ve bu dört renkten birinin adı rastgele olarak ekranın üzerine yazılacaktır. OLED ekran aynı zamanda. Kullanıcının cevap hakkını kullanabilmesi için 1,5 saniye içerisinde Picobricks butonuna basması gerekmektedir. Oyun 10 kez tekrarlanacak, renkler eşleştiğinde kullanıcı düğmeye basarsa veya eşleşmediğinde düğmeye basmazsa her tekrar 10 puan alacaktır. Kullanıcı renkler eşleşmediği halde butona basarsa 10 puan kaybedecektir. On tekrardan sonra kullanıcının puanı OLED ekranında görüntülenecektir. Kullanıcı dilerse butona basmayarak cevap hakkını kullanamaz.
Bileşenler
1X PicoBrick
Bağlantı şeması
Picobricks modüllerini kablolama olmadan kodlayabilir ve çalıştırabilirsiniz. Modülleri panodan ayırarak kullanacaksanız modül bağlantılarını grove kablolarla yapmalısınız.
PicoBricks'in MicroBlock Kodları
Mikrobloklar Çalıştır sekmesine görseli sürükleyerek veya butonuna tıklayarak projenin Mikroblok kodlarına ulaşabilirsiniz.
PicoBricks'in 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
PicoBricks'in 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()