Mikrodenetleyici programalama ile Arduino programlamanın karıştırılmaması gerektiğini vurgulamak isterim. Arduino, üzerinde bir mikrodenetleyici bulunduran geliştirme kartıdır.

Neden Mikrodenetleyici Programlamayı Öğrenmeliyiz ?
Yukarıda da bahsettiğimiz gibi Arduino üzerinde bir mikrodenetleyici barındırıyor. Arduino sunduğu kütüphanelerin çok çeşitli ve kolay kullanılabilir olmasıyla, çok kolay kullanıma sahip olan IDE’si ile ve aynı zamanda dünya genelinde oluşmuş popülerliğinde kaynaklı ekosistemi ile projelerimizi çok hızlı bir şekilde ayağa kaldırmamızı sağlıyor. Fakat tüm bu avantajların yanında getirdiği dezavantajları da göz ardı etmemiz mümkün değil.
Arduino firmasının bir çok geliştirme kartı vardır ve birbirinden tamamı ile farklı olabilen bu kartların hemen hepsi aynı arayüzden aynı kütüphaneler ile programlanabilmektedir. 8 bitlik AVR tabanlı bir arduino kartı ile 32 bitlik ARM tabanlı bir mikrodenetleyici barındıran kartlar aynı fonksiyonlarla çalışabilmektedir.Kullanıcılar donanımdan habersiz tamamı ile donanımdan soyutlanarak verilen kütüphaneleri kullanmayı öğrenmektedir ve bu kütüphaneler her zaman istenilen performansta çalışmayabilir.Bir sorunla karşılaştığımızda müdahale imkanlarımız çok kısıtlı olacaktır.
Konuya daha önemli bir açıdan bakmak gerekirse bence en önemlisi de budurki, biz üretmeyi hedeflerken kolaya kaçarak tüketici olmamalıyız. A firmasının ürettiği mikrodenetleyiciyi alıp, bir geliştirme kartı üreten Arduino firmasındanda kartı alınca her iki firmanında müşterisi olmuş oluyoruz üretmeyi hedeflerken tüketici konumuna düşmüş oluyoruz. Bunu yapmamızın tek bir nedeni var oda kolaya kaçmak, Arduino firmasının bizim yerimize zor olan kısmı halletmesi.
Şimdi bakış açımızı birazda teknik kısma çevirelim. Arduino programlarken genelde mikrodenetleyicilerle ilgili bir çok kavramdan uzak kalırız. Kesmeler, Zamanlayıcılar, Analog to Digital Dönüştürücüler gibi bir çok çevre birimi hakkında çok fazla bir şey duymayız. Bunları öğrenmekten mahrum kalarak mikrodenetleyici programladığımızı düşünürüz.
Farklı bir firmanın bir mikrodenetleyicisini programlamak istediğimizde hemen Arduino bootloaderını yüklemenin araştırmasını yapmak zorunda kalacağız. Ama özünde bir mikrodenetleyici programlamanın mantığını öğrendiğimizde birçok farklı mikrodenetleyicide olayın aynı temeller üzerine kurulu olduğunu görmüş olacağız.
(Bende böyleydim :))
Arduino kütüphanelerinin birden fazla kart için hazırlanmış kütüphaneler olduğundan bahsettik şimdi de bu kolaylığın getirdiği performans sorunlarından bahsedelim.

Yukarıda aynı işi yapan bir Arduino kodu ile mikrodenetleyicinin yazmaçları ile yazılmış kodun flash hafızada kapladığı yeri görüyoruz, neredeyse 9 katı. Tabi ki bu mikroişlemcimizin 9 katı kadar kod çalıştıracağı anlamına gelmemektedir ama daha fazla satır kod çalıştıracağı çok açık. Daha fazla kod çalıştırması daha fazla zaman kaybı olarak yorumlanabilir.
Arduino, Gömülü Sistemler’e yeni başlayan elektronik ve mikrodenetleyicileri yeni öğrenmek isteyen adaylar için gayet mantıklı bir başlangıç olacaktır. Bu yazımda anlatmak istediğim bu işi hobi seviyesinde bırakmak istemeyenlere hitap etmektedir.
Kendi yorumumla bir mühendis adayının neden Arduino ile sınırlı kalmaması gerektiğini anlatmak istedim. Konu ile ilgili yorumdan ziyade bilgi oranı daha fazla yazılar okumanızı tavsiye ederim.