Arduino Kodlamaya ve Söz Dizimine Giriş - Ders 1
Noktalı Virgül; / Tek satırlık yorumlar için çift eğik çizgi // / Süslü Parantezler { } / Tanaımlamalar / void setup ( )/ void loop ( )
Arduino programını açtığınızda, IDE'yi açmış olursunuz. Her şeyin olabildiğince basit ve anlaşılır olması için kasıtlı olarak sadeleştirilmiştir. Arduino'da bir dosya kaydettiğinizde, dosyaya " sketch" denir ; sketch, yazdığınız bilgisayar kodunu kaydettiğiniz yerdir.IDE, Entegre Geliştirme Ortamı anlamına gelir . Oldukça havalı geliyor ve her kullandığınızda kendinizi zeki hissetmenizi sağlamalı. IDE, Arduino kodu yazmanıza olanak tanıyan, metin editörüne benzer bir programdır.
Arduino'nun kullandığı kodlama dili, bilgisayar dünyasında yaygın bir dil olan C++'a ("see plus plus") çok benzer. Arduino için yazmayı öğrendiğiniz kod, diğer herhangi bir bilgisayar dilinde yazdığınız koda çok benzer olacaktır; tüm temel kavramlar aynı kalır; diğer programlama dillerini öğrenmek isterseniz, sadece yeni bir lehçe öğrenmeniz gerekir.
Geliştirme ortamı ile Arduino programları yazılıp, derlenerek kartlar üzerine yüklenebilir. Arduino programlamada C / C++ /Java temelli bir dil yapısı kullanılır. Kütüphaneler sayesinde donanım
seviyesine inmeye gerek yoktur, kod yazımında küçük büyük harf hassasiyeti vardır.
Yazdığınız kod "insan tarafından okunabilir"dir, yani (bazen) sizin için anlamlı olacak ve bir insanın takip edebileceği şekilde düzenlenmiştir. IDE'nin görevlerinden biri de insan tarafından okunabilir kodu alıp Arduino tarafından çalıştırılacak makine tarafından okunabilir koda çevirmektir. Bu işleme derleme denir .
Derleme işlemi kullanıcı için sorunsuz bir şekilde gerçekleşir. Tek yapmanız gereken bir düğmeye basmak. Bilgisayar kodunuzda hatalar varsa, derleyici IDE'nin alt kısmında bir hata mesajı gösterecek ve sorunlu görünen kod satırını vurgulayacaktır. Hata mesajı, neyi yanlış yapmış olabileceğinizi belirlemenize yardımcı olmak içindir – bazen mesaj çok açık olur, örneğin, "Hey – noktalı virgülü unuttunuz" der, bazen de hata mesajı belirsiz olur.
Noktalı Virgül;
Arduino programlama dilinde yazılan her ifadenin ardından noktalı virgül gelmelidir. Örneğin…"Neden noktalı virgülle ilgilenmeliyiz?" diye sorabilirsiniz. Noktalı virgül, Arduino dilinin sözdiziminin bir parçasıdır ; kodun nasıl yazılacağını yöneten kurallardır. Yazıdaki dilbilgisi gibidir. Örneğin, yazarken nokta kullanmasaydık, herkes cümlelerin nerede başlayıp nerede bittiğini anlamakta çok zorlanırdı.
Tek Satırlık Yorumlar İçin Çift Eğik Çizgi //
- // Çift ters eğik çizgi yazdığınızda, aynı satırda takip eden tüm metin gri renkte görünecektir.
- Yorumlar, koda açıklama eklemek için kullandığınız şeylerdir. İyi kod, iyi yorumlanmıştır.
- Yorumların amacı, size ve kodunuza rastlayabilecek herkese, onu yazarken ne düşündüğünüzü anlatmaktır.
- Program sayfası içerisinde herhangi bir yere yazılabilir ve derleyici, “// “ işaretinin olduğu satırı dikkate almaz.
- Sadece tek satırda kullanılır.
int LEDpin = 9
Derleyici yorumları dikkate almayacaktır, bu nedenle yorumlara istediğiniz her şeyi yazabilirsiniz. Açıklamanız gereken çok şey varsa, aşağıda gösterildiği gibi çok satırlı bir yorum kullanabilirsiniz…
/* Çok Satırlı Yorum */
- Tek bir ters eğik çizgi ve ardından bir yıldız işaretiyle başlar. Bundan sonra gelen her şey gri renkte gösterilir ve derleyici tarafından göz ardı edilir; ancak yorumu önce bir yıldız işareti ve ardından bir ters eğik çizgi kullanarak şu şekilde kapatırsanız durum değişir.
- Açıklama amacıyla kullanılan diğer bir yöntem ise “/*” ve “*/” işaretleridir. Program içerisinde istenilen yere “/*” işareti koyulduktan sonra gerekli notlar ya da açıklamalar yazılır. Sonrasında “*/” işareti konularak açıklama satırları bitirilir. Derleyici bu işaretler arasına yazılan hiçbir yazıyı dikkate almaz,
- Sadece kullanıcıya ait satırlardır. Birden fazla açıklama satırı yazmak için bu yöntem tercih edilir.
- Yorumlar, kodun dipnotları gibidir, ancak çok daha yaygındır ve sayfanın en altında yer almazlar.
burası ikinci,
burası üçüncü,
burası dördüncü
*/

Süslü Parantezler { }
- Kod bloklarını ifade ederler.
- Süslü parantezler, bir fonksiyon tarafından gerçekleştirilen ek talimatları çevrelemek için kullanılır (fonksiyonları daha sonra ele alacağız).
- Her zaman bir açılış süslü parantezi ve bir kapanış süslü parantezi bulunur.
- Süslü parantezi kapatmayı unutursanız, derleyici bunu beğenmez ve bir hata kodu verir.
//Burada çok havalı bir program var
} //bu süslü parantez kapatır
Kullanım Örnekleri
{
//yapılacaklar
}
while () {
//yapılacaklar
}
do {
//yapılacaklar
}
for (x=0;x<=10;x++)
{
//yapılacaklar
}
Kodlama ile İlgili Bazı Kurallar
- Komutlar yan yana aynı satıra yazılabileceği gibi alt alta da yazılabilir. Ancak programın anlaşılabilirliği açısından alt alta yazmak faydalı olacaktır.
- Komutların sonuna (;) noktalı virgül konulur.
- Programın başında tanımlamalar kısmında kullanılacak kütüphaneler varsa #include komutu ile programa dâhil edilir.
- Türkçe karakter kullanılmamalıdır. Fakat açıklama satırları içerisinde (derleme işlemine dâhil edilmediğinden) kullanılabilir.
Arduino IDE programları 3 Ana bloktan oluşur.

Tanımlamalar
Bu kısımda değişkenler tanımlanabilir, kütüphaneler programa dâhil edilebilir veya pinlere isim verme gibi işlemler yapılabilir. Örneğin; program içerisinde sürekli olarak kullanılan bir pin için, 13. pin şeklinde kullanmak yerine; 13. pine LED bağlanmış ise “LED-13” kullanılarak istenildiğinde kolaylıkla değiştirilebilir.
#define mavi 5
#define yesil 3
int buton = 3; // butonu 3. pine tanımladık
int ifade=0;
int led=0;
void setup()
{
}
void setup() {}
Arduino’ya enerji verildiğinde veya yeniden başlatıldığında bu bölüme yazılan kodları program 1 kere okur. Mesela pinlerin giriş mi yoksa çıkış mı olacağı bir kere buraya yazılır ve hafızada tutulur bir daha o kodun yazılmasına gerek kalmaz.
Adından da anlaşılacağı gibi, `setup()` fonksiyonu Arduino kartını kurmak için kullanılır. Arduino, `setup()` fonksiyonunun süslü parantezleri arasında yer alan tüm kodu yalnızca bir kez çalıştırır. `setup()` fonksiyonunda tipik olarak gerçekleşen işlemler arasında pinlerin modlarının ayarlanması, başlatma yer alır.
Fonksiyonun setup() fonksiyonundan önce void'in ne anlama geldiğini merak ediyor olabilirsiniz. Void, fonksiyonun bilgi döndürmediği anlamına gelir.
Bazı fonksiyonlar değer döndürür; analogRead() fonksiyonu 0-1023 arasında bir tamsayı değeri döndürür. Bu şu an biraz garip geliyorsa endişelenmeyin, kursa devam ederken her yaygın Arduino fonksiyonunu ayrıntılı olarak ele alacağız.
Şimdi setup() fonksiyonu hakkında bilmeniz gereken birkaç şeye göz atalım…
- setup() fonksiyonu yalnızca bir kez çalışır.
- `setup()` fonksiyonu Arduino kodunuzun ilk fonksiyonu olmalıdır.
- setup() fonksiyonu açılış ve kapanış süslü parantezleriyle başlamalıdır.
void loop() {}
Bu bölüme yazılan kodlar sürekli okunur ve kodlara göre pinlere çıkış verir yada sensör değerleri okunur. Setup() fonksiyonumuz tamamlandıktan sonra loop fonksiyonumuza geçer ve burada sonsuz döngü içinde yazdığımız programı çalıştırır.Arduino geliştiricilerini sevmemek mümkün değil çünkü fonksiyon isimleri çok açıklayıcı. Adından da anlaşılacağı gibi, loop() fonksiyonundaki süslü parantezler arasındaki tüm kod tekrar tekrar, yani bir döngü içinde tekrarlanır. Programınızın gövdesi loop() fonksiyonunun içinde yer alır.
setup() fonksiyonunda olduğu gibi, loop() fonksiyonu da herhangi bir değer döndürmez, bu nedenle önüne void kelimesi gelir.Örneğin, Arduino'nuza bağlı bir sıcaklık sensörünüz varsa, sıcaklık önceden tanımlanmış bir eşiğe ulaştığında bir fan devreye girebilir. Döngüsel kod, fanı tetiklemek için sürekli olarak sıcaklığı kontrol eder. Bu nedenle, kod tekrar tekrar döngü yapsa bile, kodun her parçası döngünün her yinelemesinde yürütülmeyecektir.
Kodlarda bulduğunuz aşağıdaki söz dizimi ve işlevleri belirleyin:
- ; noktalı virgüller
- // tek satırlık yorumlar
- /* */ çok satırlı yorumlar
- { } açma ve kapama süslü parantezleri
- ( ) parantez
- void setup() – açılış ve kapanış süslü parantezlerini tanımlayın
- void loop() – açılış ve kapanış süslü parantezlerini belirleyin
- ÇIKTI veya GİRİŞ gibi bazı mavi anahtar kelimeler
Örnek
{
pinMode(2, OUTPUT);
}
void loop()
{
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
Yukarıdaki Kodlamada Kullanılan komutlar;
void Setup(): Arduino programında donanımsal ayarların yapıldığı bölümdür. Giriş çıkışların ayarlanması, varsa haberleşme ayarları bu bölümde yazılır. Program çalıştırıldığında sadece bir defa
çalışır.
pinMode(pinNo,[INPUT,OUTPUT,INPUT_PULLUP]):
pinNo ile numarası belirtilen dijital pinin giriş veya çıkış olarak ayarlanmasını sağlar. Pin numarasından sonra OUTPUT yazılırsa pin çıkış olarak ayarlanır. INPUT seçilirse pin giriş olarak ayarlanır.
void loop():
Arduino programında ana program bloğudur. Bu blok sürekli tekrar eden bloktur. Arduino programında sürekli tekrarlanan görevler bu blok içerisinde tanımlanır.
digitalWrite(pinNo, [HIGH,LOW]): Önceden çıkış olarak tanımlanan ve pinNo ile belirtilen dijital pini HIGH seçeneği ile 5 volt, LOW ile 0 Volt seviyesine çekilmiş olur. Bu programda HIGH ile LED
ışık verir, LOW ile kırmızı led söner. Arduino dijital pinleri 5 volt ve 40 mili amper çıkış akımı verebilir.
Bunun üzerindeki değerlerde zarar görebilir. Bu uygulamada devreye bağladığımız kırmızı LED 2 volt seviyesinde bir voltaj ile çalıştığı için arduino ile LED arasına veya LED ile Arduino GND bağlantı
noktası arasına bir direnç (220 ohm) bağlanmaktadır.
delay(süremilisaniye): Verilen süre kadar programın beklemesini sağlar. Burada 1000 yazarak ledin 1 saniye yanıp, 1 saniye sönmesi sağlanır.
Örnek
void setup() {
Serial.begin(9600); // seri haberleşme
pinMode(buton, INPUT); // 3. pin giriş oldu
}
void loop(){
if (digitalRead(buttonPin) == HIGH)
Serial.write('Basıldı'); // Seri ekrana yaz
else
Serial.write('Basıldı');
delay(1000);
}
Kaynaklar
- Uğur DEMİR / xl2pfu@gmail.com
- MEB Öğretmen Yetiştirme Robotik Kodlama Kitabı