Arduino’nun altında ne var?

Arduino platformu son dönemdeki en popüler geliştirme ortamlarından. Programlamaya birçok kişi Arduino ile başlıyor desek yanlış söylemiş olmayız. Birçok teknik kişi ve mühendislik öğrencisi de çalışmalarına Arduino ile başlıyor. Açıkçası birbirinin aynısı, yüzlerce “Arduino ile LED yakıp söndürüyoruz “yazısı görmekten bize sıkıntı geldi. O yüzden biz de biraz Arduino’nun temellerini incelemeye çalışacağız. Bu alanda profesyonel olarak çalışmayı düşünen mühendislik öğrencisi arkadaşlara en azından işin temellerinin nerelere dayandığını da göstermek istiyoruz.

Arduino temel olarak rakibi olan Microchip firması tarafından geçtiğimiz sene satın alınan Atmel firmasının AVR serisi mikrodenetleyicilerine dayanıyor. Örneğin UNO modelinde Atmel Atmega328P mikrodenetleyicisi bulunuyor. AVR serisi için açık kaynaklı C kütüphanesi olan AVR-C lib Arduino’da kullanılan yazılım bileşenlerinden bir tanesi.

Arduino’nun geliştirme ortamı Processing adlı platforma dayanıyor. Processing de Java diliyle geliştirilen bir geliştirme ortamı (IDE) ve bir programlama platformu. Daha çok görsel programlamada kullanılıyor.

Arduino’da yazılan kodlarda C++ dili kullanılıyor. Yaygın olarak bilinenin aksine Arduino diye bir programlama dili bulunmuyor.  C ve C++ dillerine aşina olanlar bu dillerde main() adlı fonksiyonun bulunmasının zorunlu olduğunu bilirler. Arduino programlarında setup() ve loop() fonksiyonları bulunuyor. Peki main() yoksa nasıl C++’da kod yazılıyor diyoruz? Bunun için Arduino’nun arkasındaki kodlara bakmamız gerekiyor. Bunu yapmamız çok kolay çünkü Arduino açık kaynaklı (open source ) bir proje!

Arduino’nun kodlarını şu linkteki Github hesabından inceleyebilirsiniz. Burada Arduino ile ilgili tüm bileşenler yer alıyor. Biz öncelikle Arduino kodlarımızı yazarken kullanılan kaynak dosyalarına bakacağız.

int main(void)
{
	init();

	initVariant();

#if defined(USBCON)
	USBDevice.attach();
#endif
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}
        
	return 0;
}

Gördüğünüz gibi Arduino’da tipik bir C veya C++ programındaki gibi main() fonksiyonu yer alıyor. Başlangıçta başlangıç işlemleri (init, initVariant) gerçekleştiriliyor. Sonrasında varsa USB bağlantı işlemleri gerçekleştirildikten sonra kullanıcının yazdığı setup() fonksiyonu çağrıldıktan sonra sonsuz döngüye giriliyor. Sonsuz döngü içerisinde loop() fonksiyonu sürekli çağrılıyor. Ayrıca serialEventRun bayrağı kontrol edilerek seri haberleşme ile ilgili serialEventRun() fonksiyonu çağırılıyor.
Kodun sonunda return ifadesi bulunsa da bütün gömülü yazılımlarda olduğu gibi bu noktaya hiç gelinmiyor.

Gördüğünüz gibi Arduino AVR serisi mikrodenetleyiciler için yazılmış kütüphanelerden oluşuyor. İncelemelerimize sonraki yazılarımızda devam edeceğiz. Siz siz olun kullandığınız platformların nelerden oluştuğunu iyice anlamaya çalışın. Böylelikle ileri seviye çalışmalar yapmanız daha kolay olacaktır!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir