
Temel Matematiksel İfadeler:
Tüm yazılım dillerinde olduğu gibi Arduino’da da matematiksel ifadeler vardır. Bunlar toplama, çıkarma, çarpma, bölme ve mod almadır. Mod alma bir bölme işleminin kalanını bulmadır.
Toplama: Bir değişkenin veya sayının değerini arttırmak için veya ona başka bir değer daha eklemek için kullanılır.
Değişken ismi + eklenecek değer;
Eğer değişken sadece 1 arttırılmak istenirse:
Değişken ismi++;
Çıkarma: Bir değişkenin veya sayının değerini azaltmak için kullanılır.
Değişken ismi – azaltılacak değer;
Eğer değişken sadece 1 azaltılmak istenirse:
Değişken ismi–;
Çarpma: Bir değişkeni veya değeri başka bir değer veya değişken ile çarpmak için kullanılır..
Değişken ismi * çarpılacak değer;
Bölme: Bir değişkeni veya değeri başka bir değer veya değişken ile bölmek için kullanılır.
Değişken ismi / bölünecek değer;
Mod alma: Bir sayıyının başka bir sayıya bölümünden kalanı bulmak için kullanılır. (8 % 5 = 3)
Değişken ismi % modu alınacak değer;
Bağlantı Şeması:
Bu şemada devremize bir RGB LED bağladık. RGB LED’ler ortak anot veya ortak katot olmak üzere ikiye ayrılmıştır. Ortak anot olanların içindeki kırmızı, mavi ve yeşil LED’lerin artı kutupları birbirlerine bağlanmıştır. Kontrol eksi uçlar ile sağlanır. Ortak uca artı verip diğerlerinden herhangi birini de toprak hattına bağlayınca ışığın yandığını görebilirsiniz. Ortak katot LED’lerde ise LED’lerin eksi kutupları birbirleri ile ortaktır ve kontrol artı kutup ile yapılır. Ortak uca eksi, diğer uçlardan herhangi birine de artı verilince LED’in yandığı görülür. Benim elimdeki LED ortak katot bir LED. Siz de bunun testini yukarıda bahsettiğim gibi yapabilirsiniz fakat bağlantınızda direnç kullanmayı unutmayın.
Kodlar:
NOT: Lütfen bu kodlara göz gezdirip kendiniz yazmaya çalışın. Kendinize güvenmeyebilirsiniz fakat emin olun sanıldığı kadar zor değil.
Burada sadece sayaç adlı bir değişken ekledim ve değer olarak 0 atadım. Bunun dışında LED pinlerime ait değişkenleri oluşturdum ve pin modlarını çıkış olarak ayarladım. Buton için ise bir buton durumunu saklayacak değişken oluşturdum ve butonun pin modunu giriş olarak ayarladım.
Buraya kadar pek bir farklılık yok. Asıl olay loop fonksiyonunda başlayacak.
Bu kod dizisi size karışık gelebilir fakat anladıktan sonra aslında çok basit olduğunu anlayacaksınız.
İlk olarak her zamanki gibi buton_deger değişkenine butondan okuduğumuz değeri yazdık. Hemen sonrasında eğer butona basılmışsa sayaç değişkenini 1 arttıracak ve 250 milisaniye bekleyecek bir if döngüsü koyduk. Sayaç konusuna birazdan değineceğim. Buradaki 250 milisaniyelik beklemenin sebebi kodlarımızın çok hızlı çalışması. Biz bekleme komutunu koymasaydık butona bastığımızda Arduino bu kodları çoktan 100 kere tekrarlamış olacak ve kodumuz sağlıklı çalışmayacaktı. Bu gecikme ile elimizi butondan kaldırma süresini ortalama olarak 250 milisaniye olarak alırsak butona 1 kere bastığımızda döngü 1 kere çalışmış olacak.
Bu döngüde aynı zamanda butona basıldığında sayaç değişkenini 1 arttırdık. Bu sayede alttaki if döngüleri de bir anlam kazanmış olacak.
İkinci if döngüsünde eğer sayaç değişkeninin değeri 1’e eşit ise Arduino’dan kırmızı LED’i yakmasını ve diğerlerini söndürmesini istedik. Yani butona 1 kere bastığımızda sayaç 1 arttırılacağından içindeki değer 1 olacak ve buna karşılık olarak kırmızı LED yanacak. Eğer butona tekrar basılırsa sayaç tekrar 1 arttırılacak ve bu sefer içindeki değer 2 olacak. Buna karşılık da 3. if döngüsü çalışacak ve yeşil LED yanacak. Son olarak butona bir kere daha basıldığında sayaç değişkeni 3 olacak ve buna karşılık mavi LED yanacak.
Eğer butona sayaç 3 olduktan sonra tekrar basılırsa sayaç 1 artıp 4 değerini alacak. Bu sefer de sayaç değişkeni 1, 2 veya 3’e eşit olmadığından en sondaki else döngüsü çalışacak ve sayaç değişkenine 1 değeri atanıp döngü başa sarılacak.
Buradaki else if komutuna else ile if komutlarının birleşimi diyebiliriz (Evet cidden J). Kendisinden önceki if koşulu sağlanmamış ise kendisine parametre olarak girilen argümanın doğruluğunu kontrol eder. Eğer argüman doğru ise çalışır, değilse çalışmaz.
Bundan sonraki dersimizde do-while döngüsüne giriş yapacağız.