S4A – Kod Blokları İle Arduino Programlama İncelemesi

Son yıllarda ülkemizde “kodlama eğitimi” adı verilen bir sektör oluştuğunu görmekteyim. Yıllardan beri “programlama” üzerinden giderken birden “kodlama” diye tabir edilen bir kavram çıktı. Bu kodlamanın programlama ile aynı anlama gelmediğini uygulamaları incelediğimizde görmekteyiz. Üstelik bu sektörden ciddi gelir elde eden eğitimciler (!) de türlü vaatler ile bu eğitimleri pazarlamaktadır. Piyasadaki bu eğitimciler neden bir C programlamayı, algoritmayı, bilgisayar mimarisini, temel elektroniği ya da bilgisayar bilimine ait en temel ve gerekli kavramları öğretmez de “kodlama” dendiğinde hemen ortaya atılır ? Diğerleri önemli değil de iki kutucuğu birbirine bağlamaktan ibaret olan “kodlama” mı önemli ? Yoksa diğerlerinin mantığını anlatmak, öğrencinin ezberlemeden anlamasını sağlamak konusunda gerekli yeterliliğe sahip mi değiller?

Ben bir öğretmen adayı ve elektronik-bilişim alanında yeni olmayan biri olarak farklı bir bakış açısından bu “kodlama” işini inceleyeceğim. İlk çıktığı günden beri haz etmeyip ilgilenmesem de şimdi sizin için bunu inceleyip olumlu ve olumsuz yanlarını sizlere aktaracağım. Bu alanda olması gereken eğitimi ortaya koymak için Arduino Eğitim Kitabı’nı yazalı neredeyse 3 yıl olacak. O zaman kod blokları bu kadar gündemde değildi ve çocuklar C/C++ kodları ile de bir şeyler yapabiliyordu. Üstelik okuyucularım arasında ortaokul öğrencilerinin de olduğunu duymaktayım.

S4A yani açılımı Scratch 4 (For diye okunur) Arduino biraz kelime oyunu olsa da adından da anlaşılacağı üzere Scratch’ın Arduino’ya uyarlanmış halidir. Yalnız bu uyarlanmanın tam anlamıyla yerine getirildiğini ve Arduino’da yazılabilecek her kodu bununla yazabileceğimizi iddia etmek zor. Daha çok müfredatı önceden hazırlanmış belli saatlere bölünmüş bir kursa uygun fonksiyonları ve kodları içerdiğini görmekteyim. Bu şekilde kursta anlatılan her şeyi yapmanız mümkündür fakat önemli olan kurstan sonra ne yapabileceğinizdir. Programı ayrıntılı şekilde inceleyerek nasıl bir sistem üzerine kurulduğunu görelim. Öncelikle şu bağlantıdan programı indirip kuruyoruz.

http://s4a.cat/

Ama burada sadece programı kurmamız yetmiyor. Arduino’ya bu programı çalıştıracak yazılım (firmware) yüklememiz gerekli. Anlaşılan tek başına bir Arduino derleyicisi özelliğini taşımıyor ve Arduino kodu üretemiyor.

http://s4a.cat/downloads/S4AFirmware16.ino

Arduino’ya S4A’yı çalıştıracak yazılımı yüklemedikçe Arduino takılı olsa bile aygıtı görmemektedir.

Arduino programlamak için Arduino’ya özel bir kodun atılması gerektiği oldukça kuşku verici. Bu kodun üzerinde bunun eğitimini veren eğitmenler dursun eğitmen eğitimi verenlerin de duracağını tahmin etmediğim için kısaca bir inceleyeceğim. Sitemizi takip edenler önceden Arduino’nun kaynak kodun incelediğimiz yazılarımızı okumuş olmalılar. Arduino eğitimi veren birisinin de kaynak kodunu bilmesi pek beklenmez. Ama bilse ne olur ? İşte o zaman işi ezbere değil tüm ayrıntısıyla öğrenciye anlatabilecek bir eğitimci ortaya çıkar.

Şimdi konu parça parça inceleyelim. Zamanım olmadığı için satır satır incelemek istemiyorum. Aynı şekilde tamamını da incelemeyeceğim. Kod basit olduğu ve Arduino üzerinde yazıldığı için buna da gerek yoktur. Kitabımı ve derslerimi okuyan birisi rahatça anlayabilir.

İşte meseleyi burada anlıyoruz. Burada Arduino’ya yüklenen bir program yok! Arduino’daki program doğrudan seri port ile (UART) bilgisayara bağlanıyor ve bilgisayardan sürekli veri alıp ve bilgisayara sürekli veri yolluyor. Ortada programlama, derleme, yükleme diye bir şey yok!.

Bu kod setup fonksiyonunun yukarısında yer alsa da anlamak için sonraca bakmak daha isabetli olur. Buradan baktığımızda değer yapılarının oluşturulduğunu görmekteyiz. Normalde kütüphanelerde yer alması gereken bu yapılar mecburen programın içerisinde yer almış. Bu yapıların hepsi RAM bellekte saklanacak ve UART protokolünden gelen verilerle dolacak. Burada ne kodlama ne programlama var aslında. Bir programın konfigürasyonundan ibaret görünüyor mesele.

Loop fonksiyonu ise bundan ibaret. Fonksiyonlardan gördüğümüz kadarıyla belli bir süre aralığında motorlara veri yollanıyor, algılayıcılar (sensörler) okunuyor ve seri port ekranı okunuyor. Arduino’nun referans kısmına, kütüphanelerine baktığımızda Arduino’nun bundan ibaret olmadığını çok rahat görebiliriz.

Diğer fonksiyonlara baktığımızda ise yine programda yer alan bir avuç işi yürütmeye yönelik fonksiyonlar olduğunu görüyoruz. Şimdi program arayüzüne bakalım ve neler yapabileceğimizi görelim. Program sonunda kartımızı görüyor ve belli değerleri ekranda yazdırıyor. Ben sadece orjinal UNO kartı ile denediğim için olumlu sonuç aldım. CH341 ve türevlerini içeren klon kartlarda nasıl bir sonuç alınacağı konusunda bilgimiz yoktur.

Doğrudan Scratch’dan alındığı için burası aslında bir çizim tahtası olarak görev yapıyor. Scratch’da olduğu gibi çizim yapabiliyorsunuz. Bu ise Arduino’yla alakalı bir durum değil. Arduino’yu çizim değil proje ve gömülü sistemlere giriş için kullandığımızı hesaba katarsak pek dikkate değer bir mesele olarak görünmüyor.

Grafikle alakalı konuları göz ardı ederse programlamaya dair tüm fonksiyonlar şu başlıklar altında yer almaktadır.

Burada görünüm, ses, kalem gibi başlıklar scratch programındaki ses ve görüntü özellikleri için fonksiyonları içerdiği görülmekte. Bunu anlamak için bin lira civarı para verip “eğitmen eğitimi” almaya hiç gerek yok. Programlamadan az çok anlayan ve bilgisayar okur-yazarı olan çoğu kişi rahatça anlayabilir.

Hareket yapısına baktığımızda Arduino programının bu fonksiyonları çalıştırmak için yazıldığını görmekteyiz. Yani bu fonksiyonların bir derleyici için bir kod üretmesi ya da mikrodenetleyiciye program atması söz konusu değil.

Şimdi ise gerçekten Arduino programlamak isteyenlerin öğrenmesi gereken fonksiyonları görelim. Bu fonksiyonların yanında servo, lcd, uart gibi birimler için de kütüphane fonksiyonları mevcuttur. Bunları da bunun yanında öğrenmek gereklidir. Aşağıda Arduino’nun en temel fonksiyonlarının yer aldığı referans sayfasını görebilirsiniz.

Öğrenilecek ne çok şey varmış değil mi ? 2 günlük kurs ile anlatılacak bir mesele değil. Tam anlamıyla öğrendim diyebilmek için bunların en az %95ini bilmek gerekli.

Burada ise Scratch’a ait olan kontrol yapılarını görmekteyiz. Bir insan programcı olmak istiyorsa bu kutucukları değil ilk öncelikle C dilindeki if..else, do..while, for gibi yapıları bilmesi gereklidir. Yine de bu kod bloklarının “belli bir yaş seviyesinde” faydasının olacağını düşünmekteyim. Bu “yaş seviyesinde” eğitim öyle güzel olmalıdır ki ileride C, C++ gibi dilleri öğrenmeye başladığında burada öğrendiği algoritma mantığını ve dil yapılarını diğer dillere çok rahat uyarlayabilip anlamalıdır. Anlamadan ezbere lego yapar gibi birbirine birleştirmek öğrenciye hiçbir şey katmaz. Bakarak 3 yaşındaki çocuk da yapar ama ne kadar “yaptı” diyebiliriz o tartışılır.

Bunun mantığını bilecek ve işin arka planından haberi olan ve bunu çocukların anlayacağı seviyede anlatabilen bir eğitmen söz konusu olduğunda yani “kaliteli bir eğitmen” ile kod blokları çocukları bilgisayar bilimlerine ve gömülü sistemlere hazırlayabilir. Bunun için doğru yazılım da çok gereklidir. İşe yarayan fonksiyonları içeren ve kütüphaneleri olan bir yazılım ile bu eğitim çok daha verimli olabilir. İncelediğim kadarıyla mblock biraz daha iyi bir seviyede duruyor. Yalnız onun ayrı bir incelemeye tabi tutulması gereklidir. O yüzden bu yazıyı burada bırakıp yeri geldiğinde bu “kodlama” işini farklı yönleriyle inceleyeceğim.

 

Kapak Resmi, https://weeklysqueak.files.wordpress.com/2013/10/s4a.png

UYARI!!

 

 

 

 

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.