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. 

 

 

Servo motorların modüllerinin “Kahverengi kablosu-GND, Kırmızı kablosu-5V, Turuncu kablosu-D0”a denk gelecek şekilde, modülleri ile bağlantılarını yapıyoruz.

 

 

 

 

 

 

 

 

 

 

 

 

Modülleri ve sensörü bağlantı kablosu yardımı ile pinoo kontrol kartına bağlıyoruz. LCD(I2C) modülünü 10 numaralı kırmızı/beyaz girişe bağlıyoruz. 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ı;

 

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.

 

 

 

 

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.

2.JPG
1.JPG
4.JPG
5.JPG
6.JPG
7.JPG
8.JPG
9.JPG
10.JPG
11.JPG
12.JPG
13.JPG
14.JPG
15.JPG
16.JPG
17.JPG
18.JPG
20.JPG
19.JPG
21.JPG
22.JPG
23.JPG
24.JPG
25.JPG
26.JPG
27.JPG
28.JPG
29.JPG
30.JPG
31.JPG
seri_port_480x480.jpg
KART_480x480.jpg
pinoo_uzanti_480x480.jpg
1_a8314da2-edff-4525-979d-b2d3ff93364b_large.png
pinooo_480x480 (2).jpg
aygit_yazilim_480x480.jpg
49.JPG
41.JPG
42.png
43.JPG
44.JPG
45.JPG
46.JPG
47.JPG
48.JPG
49.JPG
50.JPG
53.JPG
54.JPG
55.JPG
56.JPG
57.JPG
58.JPG
59.JPG
60.JPG
61.JPG
62.JPG
63.jpg
64.jpg