Şimdi dikkat ve refleksleri geliştiren bir oyun hazırlayacağız. Hızlı hareket etmek ve uzun süre dikkatini verebilmek çocukların önemli gelişimsel özelliklerindendir. Okul öncesi ve ilkokul çağındaki çocuklar, ebeveynlerinin ve öğretmenlerinin hoşuna gittiği için dikkat sürelerini ve reflekslerini artırıcı aktiviteler yaparlar. Hazırlayacağımız elektronik sistem dikkati artırıcı, refleksleri geliştiren bir oyun olacak. Projeyi bitirdikten sonra arkadaşlarınızla yarışabilirsiniz.
Bu projede her programlama dilinde kullanılan rastgeleliği öğreneceksiniz. Picobricks ile OLED ekran kullanan elektronik sistem geliştireceğiz, Düğme-LED ve Buzzer modülü.
<
Ayrıntılar ve Algoritma
Picobricks açılır açılmaz bir zamanlayıcı çalışmaya başlar. Bu zamanlayıcı ile saniyenin binde 1'ini ölçebiliyoruz. Saniyenin binde birine milisaniye denir. Zamanlayıcılar günlük hayatta birçok elektronik sistemde kullanılmaktadır. Zamanlı aydınlatma, fırınlar, ütüler, mutfak robotları…
Projemiz çalışmaya başladığında, ekranda bir hoş geldiniz mesajı görüntüleyeceğiz. OLED ekran. Daha sonra kullanıcının oyuna başlamak için ne yapması gerektiğini ekrana yazdıracağız. Oyuna başlamak için butona bastıktan sonra ekranda beliren oyuncudan 3'ten geriye doğru sayarak hazırlanmasını isteyeceğiz. Geri sayımın bitiminden sonra kırmızı LED 2-10 saniye arasında rastgele bir sürede yanacaktır. Kırmızı LED yandıktan hemen sonra zamanlayıcıyı sıfırlayacağız. Düğmeye tekrar basıldığında zamanlayıcıyı ölçeceğiz. Alacağımız bu değer milisaniye cinsinden olacaktır. Bu değeri oyuncunun tepki süresi olarak ekranda göstereceğiz.
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ı
Projenin Microblocks kodlarına, Microblocks Run sekmesine görseli sürükleyerek veya butonuna tıklayarak ulaşabilirsiniz.
PicoBricks'in MicroPython Kodları
makineden içe aktarma Pin, I2C, Zamanlayıcı
picobricks'ten SSD1306_I2C'yi içe aktar
kullanım süresini içe aktar
urandom'u içe aktar
#kütüphaneyi tanımla
GENİŞLİK=128
YÜKSEKLİK=64
#genişlik ve yükseklik değerlerini tanımlayın
sda=machine.Pin(4)
scl=machine.Pin(5)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=2000000)
oled= SSD1306_I2C(GENİŞLİK, YÜKSEKLİK, i2c)
düğme = Pin(10,Pin.IN,Pin.PULL_DOWN)
led=Pin(7,Pin.ÇIKIŞ)
#giriş ve çıkış pinlerimizi tanımlayın
Doğruyken:
led.değer(0)
oled.fill(0)
oled.text("düğmeye basın",0,10)
oled.text("Başlamak İçin!",25,25)
oled.show()
#print "Düğmeye basın" ve "BAŞLAMAK İÇİN!" OLED ekranda
while butonu.değer()==0:
geçmek
oled.fill(0)
oled.text("LED'i Bekleyin",15,30)
oled.show()
#butona basıldığında ekrana "bekle LED'i" yaz
utime.sleep(urandom.uniform(1,5))
led.değer(1)
timer_start=utime.ticks_ms()
#rastgele bir saniye bekle ve ledi aç
while butonu.değer()==0:
geçmek
timer_reaction=utime.ticks_diff(utime.ticks_ms(), timer_start)
basılı=Doğru
oled.fill(0)
oled.text("Zamanınız",25,25)
oled.text(str(timer_reaksiyon),50,50)
oled.show()
led.değer(0)
utime.sleep(1.5)
#düğmeye basıldığında skoru ve "Süreniz"i ekrana yazdırın.
PicoBricks'in Arduino C Kodları
#katmak
#include "ACROBOTIC_SSD1306.h"//kitaplığı tanımla
int buzzer=20;
int düğme=10;
int led=7;
int La=440;
int eski_zaman=0;
int şimdi_zaman=0;
int puanı=0;
String string_score;//tamsayımızı ve dize veriablesvoidsetup()'ımızı tanımlayın{// bir kez çalışacak şekilde kurulum kodunuzu buraya koyun:
Wire.begin();
oled.init();
oled.clearDisplay();pinMode(led,OUTPUT);pinMode(zil,OUTPUT);pinMode(button,INPUT);
Serial.begin(9600);//giriş ve çıkış pinlerini tanımlayın}voidloop(){// tekrar tekrar çalışacak şekilde ana kodunuzu buraya koyun:
oled.setTextXY(3,0);
oled.putString("Düğmeye basın");
oled.setTextXY(5,4);
oled.putString("Başlamak İçin");if(digitalRead(button)==1){for(int i=3; i>0; i--){
String string_i=Dize(i);
oled.clearDisplay();
oled.setTextXY(4,8);
oled.putString(string_i);delay(1000);}//üçten geriye doğru say
oled.clearDisplay();
oled.setTextXY(4,6);
oled.putString("GO!!!");//"GO!!" yazdır OLED'de x=4 y=6'da
int random_wait=random(1000,5000);delay(random_wait);//1 ile 5 arasında rastgele bir saniye bekleyindigitalWrite(led,HIGH);
old_time=millis();//LED'i açınwhile(!(digitalRead(button)==1)){
now_time=millis();
puan=now_time-old_time;
string_score=String(score);//düğmeye basıldığında skoru string olarak kaydet}digitalWrite(led,HIGH);tone(zil, La);delay(200);noTone(zil);//LED'i ve zili aç
oled.clearDisplay();
oled.setTextXY(1,4);
oled.putString("Basın");//OLED üzerinde x=1 Y=4'te "Basın" yazdır
oled.setTextXY(2,3);
oled.putString("RESET DÜĞMESİ");//OLED üzerinde X=1 Y=4'te "RESET DÜĞMESİ" yazdırın
oled.setTextXY(3,3);
oled.putString("Tekrarlanacak!");//print "Tekrarlanacak!" OLED'de X=3 Y=3'te
oled.setTextXY(6,3);
oled.putString("Puan: ");
oled.setTextXY(6,9);
oled.putString(string_score);
oled.setTextXY(6,13);
oled.putString("ms");
Serial.println(score);//puan değerini screendelay(10000)'e yazdır;
oled.clearDisplay();//on saniye bekleyip ekranı temizleyin}}
GitHub Sayfası