Pinoo ile Pinball
Projenin Amacı: Pinoo Kontrol Kartı, servo motor, hareket(pır) sensörü ve lcd ekran modülü kullanarak pinball oyunu yapmak.
Süre: 2 ders
Yaş Grubu: 7 yaş ve üzeri
Pinoo Set: Maker set ve Tam set.
Kazanımları:
- Pinoo kontrol kartını kodlamayı öğrenir.
- Servo motor kullanmayı öğrenir.
- Lcd ekran kullanmayı öğrenir.
- Hareket(pır) sensörü kullanmayı öğrenir.
- Algoritma kurma becerisi gelişir.
- Kodlama becerisi gelişir.
Kullanılması Gereken Malzemeler: Mblock 3 programı, pinoo kontrol kartı, servo motor, hareket(pır) sensörü, lcd ekran modülü, bağlantı kabloları.
Tasarım için Gereken Malzemeler: Dekota, maket bıçağı, silikon tabancası ve silikon.
Proje Yapılışı:
Projemiz için ilk önce tahta çubuklarımızı alıyoruz.
Dekota parçalarımızı resimdeki gibi silikon tabancası yardımı ile sabitliyoruz. Ardından topumuzun geçeceği şekilde ve servo motorun geçeceği şekilde maket bıçağı yardımı delik açıyoruz.
Daha sonra topu atacağımız yer için de topumuzun geçeceği yer kadar maket bıçağı yardımı ile kesiyoruz.
Oyun kutumuzun ön tarafında lcd ekran yeri için maket bıçağı ile kesik açıyoruz.
Hazırladığımız ön paneli kutumuza silikon tabancası yardımı ile sabitliyoruz.
Lcd ekranımızı fotoğraftaki gibi sabitliyoruz.
Servo motorumuzun fırçasına hazırladığımız dekota parçasına yapıştırıp servo için açtığımız yere servomuzu yapıştırıyoruz.
Topumuzun düşeceği yer için dekota parçalarını hesaplıyoruz.
Parçalarımızı fotoğraftaki gibi silikon tabancası yardımı ile sabitliyoruz.
Pır sensörümüzü sabitliyoruz.
Ardından pinball oyun kutumuzun altına deliklere gelecek şekilde ve 100 puan alacağımız yerin pır sensörünün olduğu yere denk getiriyoruz.
Pinoo kontrol kartımıza, servo motorumuzu 1 numaralı, pır sensörümüzü 2 numaralı ve lcd ekran modülümüzü 10 numaralı kapılara bağlantılarını gerçekleştiriyoruz. Bu şekilde tasarım aşamasını bitiriyoruz.
Pinoo uzantısı ekleme:
Uzantılar sekmesinden “Uzantıları Yönet” seçeneğine tıklıyoruz.
Açılan pencerede arama motoruna “Pinoo” yazıyoruz ve çıkan sonuca indir dememiz yeterli.
Bilgisayarımıza yüklendi.
Pinoo kontrol kartını bilgisayara bağlama:
Mblock 3’te sol üst taraftaki “Bağlan” sekmesine tıklıyoruz.
Açılan pencereden “Seri Port” kısmına tıklıyoruz ve açılan sayfadan “COM6” seçeneğini seçiyoruz.
NOT: Her bilgisayarın port girişleri farklı olduğundan COM yazısının yanındaki sayılar değişebilir.
Açılan pencereden Pinoo kontrol kartının kullandığı “Arduino Nano” kart seçeneğini seçiyoruz.
Uzantılar sekmesine tıklıyoruz. Açılan pencerede kullandığımız kontrol kartının uzantısı “Pinoo” seçiyoruz.
Bağlan sekmesine tıklıyoruz. Açılan pencereden “Aygıt Yazılımı Güncellemesi” tıklıyoruz.
Kodlama kısmı:
İlk önce lcd ekran modülümüzün çalışıp çalışmadığını kontrol etmek için ‘Pinoo Program’ kodu altında lcd ekran tanıtma kodumuzu yerleştiriyoruz. Ardından ‘Pinoo LCD Yazdır’ kodumuzu da yerleştirip arduinoya yükle diyoruz. Yükleme bittikten sonra lcd ekranımızda ‘Merhaba Dünya!’ yazısını görüyoruz. Bu şekilde lcd ekranımızın çalışma durumunu kontrol etmiş oluyoruz.
Hareket algılama sensörümüzün yeşil bayrağa tıklanınca kodu altında merhaba de kodu içerisine sensörü oku kodunu yerleştirerek kontrol ediyoruz.
Servo motorumuzun çalışıp çalışmadığını kontrol etmek için tuşu basılınca kodları altına servo motor çalıştır açı 0 ve 180 derece kodlarını ekleyerek çalışma durumunu kontrol ediyoruz.
Puanlarımızı tutması için Veri&Blok kısmından değişken oluşturuyoruz ve değişkenimizin adına ‘Skor’ diyoruz.
Pinoo Program olayı altında lcd ekran modülümüzü tanıtıyoruz. Ardından skor değişkenimize 0 değerini aktarıyoruz. Sürekli olarak ise servo motor açısını 3 saniye aralıklarla 0 ile 180 derece arasında hareket ettirmesini sağladık.
Ardından kodlarımızda karışıklık olmasın diye ikinci bir pinoo program kodu alıyoruz. İlk başta lcd ekranımıza PINBALL yazısını yazdırıyoruz. Adından Eğer hareket algılama sensörümüzün okuduğu değer 1 ise yani hareket varsa, skorumuz 1 artacak ve lcd ekranımızı temizleyen kodu ekliyoruz. Aynı şekilde 1. Satırda yazımızı yazdırıyoruz. 2. satırda ise ‘Skor’ metnimizin yanına skor değişkenimizin değerlerini aktaran kodu birleştir kodu yardımı ile yazdırıyoruz.
“Pinoo Program” komutu üzerine sağ tıklıyoruz ve açılan pencerede “Arduino’ya Yükle” seçeneğini seçiyoruz.
Açılan sayfada kırmızı ile seçili olan “Arduino’ya Yükle” butonuna tıklıyoruz.
Kodlarımız Pinoo kontrol kartımıza yükleniyor.
“Yükleme Bitti” yazısı geldikten sonra “Kapat” butonuna tıklıyoruz. Yükleme bittikten sonra pil yuvası takılır ve proje çalıştırılır.
Projenin Çalışma Hali:
Yan taraftaki bölmeden topumuzu atıyoruz ve 100 yazan delikten topumuzu geçirmeye çalışıyoruz. Geçirdiğimiz zaman lcd ekranımızda skor değerimiz her geçirdiğimiz zaman 100 puan artacak.
ARDUINO IDE KODLARI:
#include <LiquidCrystal_I2C.h>//Lcd ekran kütüphanesini ekledik. #include <Servo.h> // Servo kutuphanesi projeye dahil ettik. LiquidCrystal_I2C lcd(0x27,16,2); //Lcd ekranımızın hangi türde olduğunu ve kaç satır ve sütundan oluştuğunu belirttik. Servo servomotor; // Servo motor nesnesi oluşturduk. int pirPin = 3; //Hareket(pır) sensörünü takacağımız pini belirledik. int skor=0;//Puan değerlerimizi tutması için int türünde skor adında değeri 0 olan bir değişken tanımladık. int hareket;//Hareket sensörümüzden aldığımız değerleri tutmak için hareket adında int türünde bir değişken tanımladık. void setup() { lcd.init();// Lcd ekran modülümüzü başlattık. lcd.backlight();//Lcd ekranımızı aydınlatan ledleri yaktık. servomotor.attach(2);//Servo motorumuzun hangi pine taktığımızı belirttik. pinMode(pirPin, INPUT);///Hareket(pır) sensörümüzün pinimizi giriş birimi olarak ayarladık } void loop() { servomotor.write(0);//Servo motor açısını 0 dereceye getirdik. delay(3000);//3 saniye beklettik. servomotor.write(180);//Servo motor açısını 180 dereceye getirdik. delay(3000);//3 saniye beklettik. if(hareket==HIGH)//Eğer hareket var ise koşul bloğunu oluşturduk. { skor=skor+100;//Skor değişkenimizi 100 arttırdık. lcd.clear();//Lcd ekranımızda yazı var ise temizledik. lcd.setCursor(3,0);//Yazımızı lcd ekranımızda 1. satır 4. sütuna yazacağımızı belirttik. lcd.print("PINBALL");//Belirtilen konumda lcd ekranımızda yazımızı yazdırdık. lcd.setCursor(0,1);//Yazımızı lcd ekranımızda 2. satır 1. sütuna yazacağımızı belirttik. lcd.print("Skor : " + skor);//Belirtilen konumda lcd ekranımızda skorumuzu yazdırdık. } }