Minibloq İle Arduino Programlama
Maker dünyasının baş aktörlerinden bir tanesi olan Arduino platformuna yönelik çeşitli geliştirme araçları mevcut. Hele ki yeni başlayanlar için geliştirilen görsel programlama araçları güzel fırsatlar sunmaktadır. Sizlerle bu görsel geliştirme araçlarından bir tanesi olan miniBloq programlama aracını paylaşmak istedim. Amacım projeye odaklanmaktan ziyade bu geliştirme ortamını tanıtmak. Proje olarak potansiyometre ile SG90 servo motor süreceğiz.
Öncelikle bu yazı içinde kullandığım miniBloq v0.83 versiyonu olduğunu baştan belirtmek isterim. Ayrıca 3 boyutlu yazıcınız olmasa bile resimler üzerinden konuyu takip edebilirsiniz.
miniBloq projesine http://blog.minibloq.org/ adresi üzerinden ulaşabilirsiniz. İlgili sayfada yazdığı üzere açık kaynak kodlu ve bir sürü insanın emeğinin olduğu bir projedir. Yine sayfayı incelerseniz çeşitli örnekler, forum sayfası ve geliştirmeye yönelik öneriler olduğunu göreceksiniz. Programı başka dillere çevirme imkânı olsa da denemek isteyip indirirseniz, kodlama yapacağımız ortamın görsel ağırlıklı olduğunu göreceksiniz. Tasarım olarak kullanacağımız taşların işlevi, işaretler ile anlatılmak istenmiş. Kaynak kodlar ise https://github.com/miniBloq/v0.83 adresinde bulunmaktadır.
Örnek Proje: Gripper
Şimdi gelelim konumuza; miniBloq kullanımını anlamak için yapmak istediğimiz ilk proje bir gripper olsun. Gripper kelime anlamı olarak kıskaç yada tutucu demektir ve tahmin ettiğiniz üzere bir şeyleri tutmaya yarayacak mekanik bir düzenek kurmak istiyoruz. Kullanacağımız 3 boyutlu mekanik modeli https://www.thingiverse.com/thing:746128 adresi üzerinden indirebiliriz.
![]() |
| Bağlantı Noktaları |
miniBloq programını ilk açtığımız anda kart tipi ve kartımızın bağlı olduğu portu seçmeyi unutmayalım. Bizim örneğimizde Arduino Uno kartını kullandık ve aygıt yöneticisi üzerinden baktığımızda kartımız COM5 bağlantı noktası üzerindeydi.
![]() |
| Port ve Kart Seçimi |
Örnek projemizde Arduino UNO kartı üzerinden bir potansiyometre kullanarak, potansiyometre kolunu çevirdikçe gripper mekanizmamızın açılıp kapanmasını sağlayacağız. Mekanizmamızı bir adet SG90 servo motor ile süreceğiz. Potansiyometre için de 10k ohmluk bir pot kullandım.
Gripper İçin Örnek Devre
Kodlama kısmına geçmeden önce elektronik devremizi kuralım. Öncelikle bir adet 10k Ohm luk potansiyometremizin en dış bacakları 5V ve GND ye bağlı, orta bacağı da analog girişlerden A0 portuna bağlı olacak şekilde bağlantılarını yapalım. Aynı şekilde servo motorumuzun kırmızı – kahverengi ve sarı kablolarını sırasıyla 5V – GND ve digital 6 pinlerine bağlayalım.
![]() |
| Gripper Devremiz |
Mekanik montajda, parçaları ister vida somun yardımı ile isterseniz örnek resimdeki gibi ataşların boy boy kesilmesi ile oluşturulan metal çubuklar ile birleştirebilirsiniz. Eğer ataş kullanacaksanız deliklerden düşmemesi için uçlarını silikon tabancası yardımı ile sabitleyebilirsiniz.
![]() |
| Gripper Orjinal - Üst |
![]() |
| Gripper Orjinal - Alt |
![]() |
| Gripper |
Örnek Program
Şimdi sıra geldi kodlama bölümüne, öncelikle Arduino kartımızın sürekli yapmasını istediğimiz bir loop döngüsüne ihtiyacımız var. Bunun için “belli bir şart doğru olduğu sürece tekrarla” diye ifade edebileceğimiz “while” döngüsünü kullanabiliriz. Şart olarak da direk “Doğru” yada “True” şeklinde bir sabit girersek “while” döngüsü sürekli tekrar edecektir. Bu döngüyü oluşturmak için “Actions” kısmından soru işareti olan döngü sembolüne tıklıyoruz. Daha sonra döngünün şartlarını oluşturmak için kırmızı girdi kısmına tıklıyoruz. Karşımıza pin okuma, tik ve çarpı işareti ile belirtilmiş doğru yanlış ifadeleri ve çeşitli karşılaştırma ve mantıksal işlemleri seçebileceğimiz bir pencere açılacak. Biz döngünün sürekli olması için her zaman “True” ifadesi girmek istiyoruz, dolayısı ile tik işaretini seçiyoruz.
![]() |
| Ana Görünüm |
![]() |
| Sürekli Tekrarla - Loop |
Yaptığımız devrenin çalışıp çalışmadığını anlamak için, potansiyometre kolunun çevrilmesi ile elektriksel olarak bağlı olduğu A0 pininden gelen verilerin değişip değişmediğini inceleyebiliriz. Bunun için miniBloq üzerindeki “Terminal” özelliğini kullanabiliriz. Terminal ekranını açmak için View menüsü içinden Terminal seçeneğini işaretlememiz ya da araç çubuğu üzerinde Terminal simgesine tıklamamız gerekmektedir.
| Terminal İkonu |
Seri port üzerinden haberleşeceğimiz için önce “Actions” kısmından üzerinde USB işareti olan simgeye tıklıyoruz. Ekrana gelen blok üzerinde kırmızı üçgen şeklinde olan yan tarafındaki girdi bölümüne tıklıyoruz. Karşımıza “Serial Method” adında text ya da sayı seçenekleri olan bir pencere geliyor. Biz # işareti ile belirtilen sayı seçeneğini seçiyoruz. Daha sonra sayı bloğunun yan tarafında tekrar kırmızı üçgen şeklinde olan girdi seçeneğine basıyoruz. Karşımıza gelen yeni pencere üzerinde dalga şekli olan analog giriş seçeneğini seçiyoruz. Ve son olarak A0 pininden okuma yaptığımız için blok üzerinden sensor0 seçeneğini seçiyoruz. Bende sensor0 ifadesi seçili olarak geldi.
![]() |
| Serial Print |
Seri Konsol ve Programı Çalıştırma
Programımızı kartımıza yüklemek için “Component” menüsünden ya da araç çubuğu üzerinden “Run” butonuna tıklıyoruz.
![]() |
| Run |
Yükleme bittikten sonra Terminal penceresi üzerinde “Open” butonuna tıklayarak gelen verileri görebiliriz. Dikkat edersek potansiyometreyi çevirdikçe gelen sayılar 0 ile 100 arasında değişmektedir.
Buraya kadar gelmişseniz potansiyometrenin mekanik pozisyonunu Arduino ile algılayabiliyoruz demektir.
![]() |
| Terminal Çıktısı |
Şimdi bir tane “Eğer … ise …. Değilse…..” ya da ingilizce tabiri ile “If … Then … Else” kontrolüne ihtiyacımız var. Bunun nedeni kullandığımız servo motor üzerindeki dönme hareketinin, 3 boyutlu modelimizin mekanik olarak kapandığı anda son bulmasını istememizdendir. Ben 35 değerini seçtim, yani “A0 üzerinden 35 değerinin üzerinde bir değer geliyorsa hareket et” anlamında söylüyorum. Buradaki değer deneme yanılma ile ayarlanabilir. Başlangıçta iyi ayar yapmamışsak bu eğer kontrolü işimize yarayabilir, yoksa motor zorlanacaktır.
![]() |
| If...else... |
Önceki kodumuzda ana ekran üzerindeki USB taşını seçiyoruz sonra “Actions” kısmından soru işareti olan simgeyi tıklıyoruz. Böylelikle döngümüzün içinde “if … then … else” şeklinde bir kontrol oluşturuyoruz. Blokların kolay yerleşimi için şunu aklımızda tutabiliriz: Hangi blok seçili ise yeni eklenen hemen onun altına yerleştirilmektedir. Ancak daha sonradan yerlerini tabii ki de değiştirebiliriz. Tik işareti olan bölüm; eğer sunduğumuz şart doğru ise işlenecek, çarpı işareti olan bölüm ise şartımız yerine getirilemez ise işlenecek demektir.
![]() |
| Olması Gereken Kodlama |
"Eğer (...) İse .... Değilse ...." Koşulu
Daha önce de söylediğim gibi amacım A0 üzerinden gelen değer 35 üstü ise hareket vermek istiyorum. Dolayısı ile eğer bloğunun girdi seçeneklerinden, “büyüktür karşılaştırma operatörünü” seçmem gerekiyor. “Eğer sensor0 büyüktür 35” ifadesini oluşturmak istiyorsam bu sefer de büyüktür operatörü üzerindeki girdi parametrelerinden üsttekini, dalga şeklinde sembolleştirilen analog giriş seçici olarak seçmem gerekiyor.
![]() |
| Karşılaştırma |
Karşılaştırma bloğunun alt kısmındaki girdiyi de # işareti ile belirtilen sayı olarak seçmem gerekiyor. Seçimden sonra 35 sayısını elle girmeliyim.
![]() |
| Değer Seçimi |
Şimdi sıra geldi servo motorumuza hareket vermeye, “Actions” kısmından servo motor şeklinde bulunan taşa tıklıyoruz.
![]() |
| Servo Motor |
Servo motorumuzu dijital 6 pinine taktığımız için blok üzerinde servo0 seçeneğini seçiyoruz. Programda ana ekranda resmi incelerseniz 6. pin yanında servo0 yazdığını göreceksiniz. Hatırlamamız gereken bir nokta daha önce A0 dan gelen değerleri terminal penceresi üzerinden incelerken, gelen değerlerin 0 ile 100 arasında geldiğini gördük. Ancak servo motorum 0 ile 180 arasında değer alabiliyor. Dolayısı ile A0 yani sensor0 terimini servo motorumu sürmek için kullanacaksam, bir çarpma işlemine ihtiyacım var. Mekanik modeli de incelersek motorumu tam 180 derece çeviremeyeceğim. Deneyerek ben 1.2 değerinde karar kıldım. Maksimum gelen değer 100 olursa motorum maksimum 120 derece dönecektir. Yani potansiyometreyi bir uçtan diğerine çevirirken motorum 35 ile 120 derece arasında hareket edecektir.
![]() |
| Servo Kontrolü |
Programın Son Hali
Yazdığımız programın son hali aşağıdaki gibidir. Programımızı kartımıza yükledikten sonra potansiyometre ile orantısal hareket eden bir servo projemiz olacaktır. Bu yazımızdaki amaç miniBloq programını kısaca tanıtmak idi. Program içinde çok çeşitli fonksiyonlar bulunmaktadır. Hepinize keyifli çalışmalar.
Kaynağınız açık, malzemeniz bol olsun...
![]() |
| Kodlamanın Son Hali |



















Yorumlar
Yorum Gönder