Pinoo ile Taş Kağıt Makas
Projenin Amacı: Pinoo Kontrol Kartını kullanarak servo motor modülü, joystick modülü, lcd modülü ve mesafe sensörü ile taş-kağıt-makas oyunu oluşturmak.
Süre: 2 ders
Yaş Grubu: 7 yaş ve üzeri
Pinoo Set: Maker Set, Tam Set.
Kazanımları:
- Pinoo kontrol kartını kodlamayı öğrenir.
- Mesafe sensörünü kodlamayı öğrenir.
- Servo Motor modülünü kodlamayı öğrenir.
- Joystick modülünü kodlamayı öğrenir.
- LCD modülünü kodlamayı öğrenir.
- Algoritma kurma becerisi gelişir.
- Kodlama becerisi gelişir.
- Tasarım becerisi gelişir.
- Kendi oyununu tasarlar ve oynar.
Kullanılması Gereken Malzemeler: Mblock 3 programı, pinoo kontrol kartı, mesafe sensörü, 3 adet servo motor modülü, bağlantı kabloları, joystick modülü, lcd modülü
Tasarım için Gereken Malzemeler: Dekota, renkli mukavva, farklı renklerde karton, eva, silikon tabancası ve silikon, kalem, tornavida, makas, falçata, cetvel
Proje Yapılışı:
- Renkli mukavvaya taş,kağıt,makas oyununun el şekillerini çiziyoruz ve makas yardımı ile kesiyoruz.
- Cetvel ve kalem kullanarak dekotanın üzerine 36x30cm boyutunda iki adet dikdörtgen çiziyoruz. Falçata yardımı ile dikdörtgenleri kesiyoruz.
- Cetvel ve kalem kullanarak dekotanın üzerine 10x36cm boyutunda iki adet dikdörtgen çiziyoruz ve falçata yardımıyla kesiyoruz.
- Tekrar cetvel ve kalem kullanarak dekotanın üzerine 10x30cm boyutunda iki adet dikdörtgen çiziyoruz ve falçata yardımı ile kesiyoruz.
- Silikon tabancası yardımı ile dekotadan kestiğimiz parçaları şekildeki gibi yapıştırıp kutu oluşturuyoruz.
Not: Kutunu üst kısmını yapıştırmıyoruz, kodlarımız bittikten sonra yapıştıracağız.
- Oluşturduğumuz kutunun arka kısmına denk gelecek şekilde, pinoo kontrol kartının geçebileceği kadar dikdörtgen delik açıyoruz.
- Kutunun üst kısmı için kestiğimiz parçayı alıyoruz. Üzerine kullanacağımız sensör ve modülleri yerleştirerek, konumlarını belirliyoruz.
Not: Elleri, birbirine ve sensörlere çarpmayacak şekilde ayarlıyoruz.
- Ellerin en sağ kısmına denk gelecek şekilde, servo motor modüllerinin geçebileceği kadar dikdörtgen çiziyoruz ve falçata yardımı ile kesiyoruz.
- Mesafe sensörünü yerleştirmek için ayarladığımız bölüme, sensörün gözlerini çiziyoruz ve falçata yardımı ile kesiyoruz.
- LCD(I2C)’li modülünü yerleştirmek için ayarladığımız bölüme modülün geçebileceği kadar dikdörtgen çiziyoruz ve falçata yardımı ile kesiyoruz.
- Joystick modülünü yerleştirmek için ayırdığımız bölüme modülün geçebileceği kadar kare çiziyoruz ve falçata yardımı ile kesiyoruz.
- Silikon tabancası yardımı ile servo motor modüllerini ve mesafe sensörünü, açtığımız deliklere şekildeki gibi monte ediyoruz.
- Servo motorların pervanelerini, uçları sağa ve sola bakacak şekilde yatay olarak modüle takıyoruz. Sağlam olması için tornavida kullanarak vidalarını sabitliyoruz.
NOT: Servo motorların pervanelerini, sabitlemeden önce mutlaka kodlayarak 180 dereceye getiriyoruz!
- Tasarımın en başında yaptığımız taş,kağıt,makas çizimlerini, silikon tabancası yardımı ile servo motor modüllerinin pervanelerine şekildeki gibi monte ediyoruz.
- Joystick modülünü açtığımız kare deliğe silikon tabancası yardımı ile monte ediyoruz.
- LCD(I2C) modülünü GND kısımları birbirine denk gelecek şekilde çeviricisine bağlıyoruz. Ardından açtığımız dikdörtgen deliğe silikon tabancası yardımı ile monte ediyoruz.
Joystick modülünü 9 numaralı kırmızı/sarı girişe bağlıyoruz.
Mesafe sensörünü 5 numaralı mor/yeşil girişe bağlıyoruz.
Servo motor modüllerini dekotayı ters çevirdiğimizde soldan başlayacak şekilde sırasıyla 2,3,4 numaralı mor girişlere bağlıyoruz. (makas-2.giriş, kağıt-3.giriş, taş-4.giriş)
- Renkli kartonlara tekrar taş,kağıt,makas oyununun el şekillerini çiziyoruz ve makas yardımı ile kesiyoruz.
- Kutumuzun üst kısmını silikon tabancası yardımı ile şekildeki gibi monte ediyoruz. Ardından evalarla ve çizdiğimiz el şekilleriyle istediğimiz gibi süslüyoruz.
NOT: Kutunun üst kısmını kodlamalar bittikten sonra monte etmeniz daha sağlıklı olacaktır.
- Bağlantıları ve tasarımı tamamladık şimdi kodlama kısmına geçiyoruz. Bunun için mblock-3 uygulamasını kullanacağız.
- Pinoo Kontrol Kartımızı bağlantı kablosu yardımıyla bilgisayara bağlıyoruz ve Mblock3 uygulamasına giriş yapıyoruz. Daha sonra Pinoo Kontrol Kartımızı bilgisayar ile tanıştırıyoruz. Bunun için öncelikle Bağlan sekmesinden seri port seçeneğine tıklıyoruz. Daha sonra COM3’ü seçiyoruz.(Bilgisayara ve porta göre rakam farklılık gösterebilir.)
- Seri port bağlantısını yaptıktan sonra Kartlar sekmesinden kullanacağımız kartı seçiyoruz. Biz Arduino’nun Nano modeli ile çalışıyoruz.
- Pinoo uzantısını bilgisayarımıza ekleyebilmek için 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.
- Tekrar Uzantılar sekmesine gelip Pinoo seçeneğine tıklıyoruz. Pinoo uzantısı ile kodlarımızı yazacağız.
- Tekrar Bağlan sekmesine gelip Aygıt Yazılımı Güncellemesi seçeneğine tıklıyoruz. Yükleme bitti dedikten sonra Kapat butonuna basıyoruz.
- Kodlama kısmında; uygulamanın başlaması için Olaylar menüsünden Yeşil Bayrağa tıklanınca kodunu alıyoruz.
- Robotlar menüsünden servo motor modülleri ile ilgili kodu alıyoruz ve pin girişlerini sırasıyla değiştirerek hepsini 180 derece konumuna ayarlıyoruz.
- Tekrar olaylar menüsünden Yeşil bayrak tıklandığında komutunu alıyoruz. Mesafe sensörünün okuduğu değeri öğrenebilmek için kukladan yardım alıyoruz. Bunun için görünüm sekmesinden “merhaba de” komutunu alıyoruz. Merhaba ifadesinin yerine robotlar sekmesinden mesafe sensörü ile ilgili kod bloğunu alıyoruz. Pin girişini bağlantı yaptığımız Pinoo5 olarak değiştiriyoruz.
Okuma işlemini bir kez değil sürekli olarak yapmasını istediğimiz için kontrol sekmesinden sürekli tekrarla bloğunun içerine tüm kodlarımızı alıyoruz.
- Yeşil bayrağa tıklıyoruz ve mesafe sensörüne elimizi yakınlaştırıp uzaklaştırıyoruz. Biz burada elimizi yaklaştırdığımızda 10’dan az değer okuduğunu referans alacağız.
- Joystick modülünün x ve y konumlarında aldığı değerleri görebilmek için değişken tanımlamamız gerekiyor. Bunun için Veri&Blok menüsüne geliyoruz ve bir değişken oluştur diyoruz.
- Karşımıza gelen ekrana değişken ismi yazıyoruz.
- X ve Y konumları için ayrı ayrı değişken tanımlıyoruz.
- Olaylardan boşluk tuşu basılınca komutunu alıyoruz. Değerleri sürekli olarak okutacağımız için kontrol menüsünden sürekli tekrar komutunu alıyoruz. Veri&blok menüsünden “x 0 olsun, y 0 olsun” kodlarını alıp sürekli tekrarla komutunun içine atıyoruz.
- Tanımladığımız konumlarla joystick modülünün konumlarını birbirine eşitliyoruz.
- Boşluk tuşuna basıyoruz ve joystick modülünün değerlerini gözlemliyoruz. Joystick modülü hareket ettirilmediğinde 500 civarı değer almaktadır. Yukarı çektiğimizde y konumu 0’a, aşağı çektiğimizde 1022’e doğru yaklaşmaktadır. Sağa çektiğimizde x konumu 1022’e, sola çektiğimizde ise 0’a doğru yaklaşmaktadır.
- LCD(I2C) modülünü kullanabilmek için kütüphaneye ihtiyacımız vardır. ( Alt tarafta bulunan linkteki drive klasöründen kütüphaneye ulaşabilirsiniz. ) LCD modülünün kütüphanesini, bilgisayarımızdan program dosyaları- mblock- Arduino-libraries adımlarını takip ederek libraries’e taşıyoruz.
https://drive.google.com/drive/folders/1oDHzYkPM2Ixq27_7zqERTvYsVpfqCRw2?usp=sharing
- LCD modülünün çalışıp çalışmadığını kontrol ediyoruz. LCD modülünü olaylardaki kodlar ile kullanamıyoruz. Kullanabilmek için arduino kartının içine yükleme yapmamız gerekmektedir.
Bunun için robotlar sekmesinden pinoo program kodunu alıyoruz. Ardından LCD modülümüzün modelini tanımlıyoruz. (Genellikle kullanılanlar 0x27 ve 0x3F’tir. Siz kendi modelinizi seçmelisiniz.) LCD modülümüz 2 satır ve 16 sütundan oluşmaktadır. Yazımızı hangi satırdan ve hangi sütundan yazma yazdırmaya başlayacağımızı seçiyoruz. Ardından Oyuna Hoşgeldiniz.. yazıyoruz.
- Koda sağ tıklayarak Arduino’ya yükle seçeneğine tıklıyoruz. (Kart olarak arduino ile çalışıyoruz.)
- Açılan pencerede tekrar Arduinoya yükle butonuna tıklıyoruz.
- Kodlarımız karta yüklenirken bekliyoruz. Yükleme bitti dedikten sonra kapat butonuna tıklıyoruz. Ve ekranda bizim yazdığımız yazının gözüküp gözükmediğine bakıyoruz.
- Kartın içine yükleme yaptığımız için bağlantımız kopuyor. Kod yazmak için tekrar Bağlan-Seri port-Com seçiyoruz ve aygıt yazılımı güncellemesi yapıyoruz.
- Oyunun skorlarını takip etmek için robot ve rakip diye iki adet değişken tanımlıyoruz. Ve servo motorları 180 derece yaptığımız yeşil bayrağın hemen altına oyun ilk başladığında(yani yeşil bayrak tıklandığında) skorlar 0 olsun diyoruz.
- Joystick modülünü yukarı doğru çektiğimizde ve mesafe sensörü 10’dan küçük olduğunda (elimizi yaklaştırdığımızda) oyun başlasın istiyoruz. Bunun için eğer ise şart komutlarını kullanıyoruz. Y ekseni 300’den küçükse diyoruz çünkü yukarı doğru çektiğimizde değer 0’a doğru yaklaşıyordu.
- Joystick modülünü yukarı çektiğimizde ve mesafe 10’dan küçük olduğunda servo motor modülleri, 3 kere 135 ve 180 derece açılarında yukarı aşağı hareket etsinler diyoruz.
- Eğer joystick modülü yukarı çekilmediyse ve mesafe 10’dan büyükse Servo motor modülleri 180 derece konumunda kalsın diyoruz.
- Eğer Joystick modülü yukarıda ve mesafe 10’dan küçükse kodlarına eklemeler yapıyoruz. Eğer şartlar sağlanıyorsa 1 ile 3 arasında sayı diyoruz. (taş,kağıt,makas için 3 ihtimal var) Ve tuttuğu sayı 1’e eşitse LCD ekranı temizle diyoruz. (Temizlemezse yazılar üst üste gelir.)
Ardından 2. Girişteki servo motor modülü (yani taş) 90 derece olsun yukarı kalksın diyoruz. Ve diğerleri 180 derece konumunda kalsın diyoruz. Daha sonra LCD modülüne Robot tas seçti yazdırıyoruz.
-
Aynı mantıkla tuttuğu sayının 2 ve 3’e eşit olma durumlarını da kodluyoruz.
- Robotun seçtiği işaretle bizim yaptığımız işaret aynı ise iki tarafta puan kazanamasın istiyoruz. Bunun içinde joystick modülünü aşağı çektiğimizde beraberlik olarak tanımlayacağız. Eğer joystick modülü aşağı çekildiyse LCD modülünün ekranı temizlenecek. 1.satıra robotun skorunu, 2.satıra rakibin skorunu yazdırıyoruz. Ve elleri eski konumuna geri getiriyoruz.
- Eğer bizim yaptığımız işaret robotun yaptığı işareti yeniyorsa rakip 1 puan kazansın istiyoruz. Bunun için de joystick modülünü sağa çektiğimizde rakip kazanacak olarak belirliyoruz. Ve eğer rakibin skoru 3’e eşit olduysa ekranda galibiyet rakibin yazsın diyoruz. Ve skorları sıfırlayarak oyunu bitiriyoruz.
- Aynı mantıkla joystick modülünü sola çektiğimizde robotun kazanmasını sağlayacak kodları yazıyoruz.
- Yeşil Bayrak butonuna tıklıyoruz ve projemizi kontrol ediyoruz. (LCD modülleri kartın içine yükleme yaptıktan sonra çalışacaktır.) Projemizin çalışmasında herhangi bir sorun yoksa projemizi bilgisayardan bağımsız olarak bir güç kaynağı ile de çalıştırmak için yazmış olduğumuz kodları kartımızın içine yüklememiz gerekiyor.
Bunun için başlangıçta kullandığımız yeşil bayrağa tıklandığında kodunu siliyoruz. Ve LCD modülünü kontrol etmek için kullandığımız kodlar ile birleştiriyoruz.
- Ardından kartın içine yükleme yapma işlemlerini tekrarlıyoruz.
- Herhangi bir problem yoksa güç kablomuzu bilgisayardan çıkartıyoruz. Pinoo Kontrol kartımıza 9v pil ve pil şapkası yardımıyla güç veriyoruz. Pil girişinin hemen yanında bulunan açma kapama tuşunu da on konumuna getiriyoruz.
- Projenin Çalışma Hali:
Joystick modülü yukarı çekilmediğinde ve mesafe sensörünün ölçtüğü değer 10’dan küçük olmadığında, servo motor modülleri hareket etmeyecek ve 180 derece konumunda duracaktır.
Joystick modülü yukarı çekildiğinde ve mesafe sensörünün önüne elimizi koyduğumuzda servo motor modülleri 3 kere yukarı aşağı hareket edecek ve sonrasında rastgele bir hareket yapacaktır.