Bizim kullanacağımız klasik Servo motorlar data pininden verdiğimiz değerle dönme açısını ayarlıyoruz. 3 kablo var ortadaki kablo +5v’a, sarı kabloyu bizim belirlediğimiz dijital pinlerin birine diğer kabloyu da GND (-) bağlıyoruz. Burada motora 180 derecelik açı ile dönüş sağlıyoruz. (90 ile -90 arasında)
Devremizin taslağını FritZing programıyla oluşturalım. Programda Breadboard kullanımına göre yapmış olsamda uygulamada direk kabloları arduino üzerineki pinlere taktım.
Kodlamada iki yöntemi kullanabiliriz.
Birinci yöntem 12 nolu pine bağlı servo motorun açısını (A) 1 Analog pininden okunan değeri direk 6 ya bölmek. Bölme işleminin bloğunu işlemlerden ekleyebilirsiniz.
İkinci yöntem biraz karışık gibi görünebilir. Ancak programlamada tercih edilen yöntemdir.Derece diye bir veri oluşturup program başladığında bu değeri 0 yaparız. Sürekli tekrarla bloğunda (A) 1 Analog pininden okunan değeri direk 6 ya bölerek derece değişkenine aktarıyoruz. Sonra 12 nolu dijital pine bağlı servo pini açısını da derece yapıyoruz. Yani bir üst satırda yaptığımız işlem sonucunu Derece değişkenine aktardıktan sonra artık potansiyometreden gelen değer derece değişkenin de olduğu için 12 nolu pindeki servo motorun açısıda o değerde dönecektir.
Devremizin taslağını FritZing programıyla oluşturalım. Programda Breadboard kullanımına göre yapmış olsamda uygulamada direk kabloları arduino üzerineki pinlere taktım.
Buradaki Amacımız Açıyı direk 180 veya 0 yapıp hızlı hareket etmesini engellemek. Dereceyi yavaş yavaş değiştirerek motorun kolunu yavaş hareket etmesini sağlamak.
Burada 13 nolu dijital pine servo motor data pinini bağladık.
Burada ilk defa kullandığımız bir kod bloğu var. Önceden hep sabit değerlerle çalıştık. Ancak Burada Veri Bloğundan Derece diye bir değişken oluşturalım. Çünkü derece değişkenini bir artırarak 0 dereceden 180 dereceye kadar açı değeri oluşturuyoruz.
]]>Potansiyometrenin ayarını sağa sola çevirdikçe değer 0-1023 arasında değişiyor. Bu değişikliklere bağlı olarak. 0-200 arasında birinci LED, 200-400 değeri arasında ikinci LED, 400-600 arasında Üçüncü LED, 600-800 arasında da dördüncü LED, 800-1023 arasında da beşinci LED yanacak. Ancak Değer 0 veya 1023 ise Yanan Tüm LED’leri söndüreceğiz.
Kodalamada daha önce döngüleri ve belli sayıda döngüleri kullandık. Şimdi de Eğer şartını kullanacağız. Burada Eğer Şartının amacı belli şart sağlandığında yapmasını istediğimiz işlemleri de Eğer bloğunun içinde yazdık. Örneğin A0 Analog Pini okuyup değeri 800den büyük ve A0 Analog Pini okuyup değeri 1023 den küçük ise 3 sayısal pini yüksek yapıyoruz.
]]>Sahnemiz aşağıdaki gibi oluşturularak top başlangıç noktasına sürüklenir. Daha sonra sürükle bırak yöntemi ile kodlar oluşturulur.
İlk olarak topun başlangıç noktasını belirlemek için “x:199, y:-95 noktasına git” kodu kullanılır. Başlangıç noktasını belirlemek için önce top ilgili yere sahne üzerinden sürüklenirse ve sonra hareket kodu alınırsa koordinat değerleri otomatik olarak yazılı gelir. Bu kod oyun her başladığında topu başlangıç noktasına koymak için gereklidir. Aşağıdaki süzülme kodları içinse topun nereye gideceği belirler. Önce sahne üzerinden sürüklenir. Sonra kod olarak eklenir. Böylelikle gerekli koordinatlar otomatik koda yazılı olarak gelir.
]]>Görüldüğü gibi potansiyometremizi Arduino’nun GND,5V ve A0 pinine bağlıyoruz. Burada sinyal ölçmek için potansiyometrenin orta bacağından A0 pinine gidiyoruz. Analog pinler 0 ile 1023 arasında değer alır. Sensörlerde daha hasas değerlere ulaşmak için Analog pin kullanılır.
Direncimizi LED’in uzun bacağına yani + bacağına bağlıyoruz ve Jumper kablo yardımı ile Arduino üzerindeki 3 numaralı pine bağlıyoruz.
Sonra ise LED’in – ucunu Breadboard üzerindeki – hattına bağlıyoruz.
Devre kurulumunu aşağıdaki devre şemasına göre kuralım.
Not: Arduino üzerinde 0,1,2,3…12,13 olarak adlandırılan dijital pinler bulunur. Arduino üzerinde bulunan dijital pinlerden bazılarının yanında tilda işareti (~) bulunur. Bu tilda işareti olan dijital pinler diğer pinler gibi kapalı, açık olarak kullanılabileceği gibi aynı zamanda PWN özellikli olarak da kullanılabilir. Dijital pinler sadece 0 ve 1 değeri alabilirken, PWN pinler 0’dan 255’e kadar değer alabilirler. PWN pinlerin daha fazla değer aralığına sahip olmaları bizim için voltaj kontrolü sağlar. Dijital pinlerde 0 ile ledi kapatıp 1 ile ledi açabiliyorken, PWN pinlerde 0 ile kapatıp, 100 ile az parlak, 255 ile en parlak şekilde ledi yakabiliriz. Uygulamayı yaptığınızda ne demek istediğimizi daha iyi anlayabileceksiniz.
]]>Etkinliğimizde sahne dekorunu Kordinat Sistemi seçiyoruz. Yıldız kuklasını sahnenin ve Kordinat sisteminin tam ortası olan 0,0 noktasına getiriyoruz. Sonrasında öğrencilere Kordinat Sisteminin iki sayı doğrusundan oluştuğunu söyleyerek X ve Y doğrularını anlatıyoruz. Öğrencilere yıldız kuklasının sırasıyla 1,2,3 ve 4 üncü bölgelere gitmesini sağlayacak rakamları sorarak onlardan gelen sayılarla süzülme kodu ile yıldız kuklamızın ilgili yerlere gitmesini sağlıyoruz.
İleride
Algılama menüsünü anlattığımızda bu etkinlikte kuklanın farklı norktalardaki meyveleri yemesini sağlayacak bir oyun yaparak Kordinat sistemini ve sahne düzenin kullanımını pekistireceğiz.
Arduino’muzu şemadaki gibi kuralım. Kurduğumuz zaman panda’mız her konuştuğunda LED’imiz yanacaktır. Kod Bloklarını aşağıdaki kısımda görebilirsiniz.
Kodumuz sorunsuz çalıştığı zaman Pandamız aşağıda görüntülendiği gibi konuşacaktır.
]]>