Arduino giriş/çıkış portlarından oluşan yapısında Atmel marka mikrodenetleyici bulunduran programlama platformudur. Arduino basit yapısıyla ve hazır kütüphaneleriyle tercih sebebidir.
Yeni başlayanlar için basit bazı projeleri sizler için derledim.
1-Buton ile led kontrol
Bu uygulamada bir buton ile led kontol edeceğiz. Butona basıldığında led yanacak ve buton bırakıldığında ise led sönecektir.
Malzemeler
- Arduino uno
- Breadboard
- Led
- 220 ohm direnç ,10 k lık direnç(buton için)
- Buton
- Jumper kablo
Devre şeması şekildeki gibidir.
Buton-Led uygulamasının kodları basitçe aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | int ledPin=7; // değişken tanımlamarı yapıldı. int buttonPin=10; int kontrol=0; void setup() { pinMode(ledPin,OUTPUT); // led pini çıkış , buton pini giriş olarak ayarlandı. pinMode(buttonPin,INPUT); } void loop() { kontrol=digitalRead(buttonPin); // butondan okunan değer kontrol değişkenine atandı. if(kontrol==HIGH) // eğer butona basılmış ise digitalWrite(ledPin,HIGH); // led pinini HIGH yap yani ledi yak. else // değilse digitalWrite(ledPin,LOW); // ledi söndür. } |
Programın çalışma mantığı şöyledir.
Programlamada yazılan kod işlemci tarafından ilk satırdan başlanılarak okunur ve bunu çok hızlı bir şekilde yapar.Bizde ilk satırdan başlayıp neler yazmışız bir bakalım.
1.Satırda: Arduino uno’nun 7 numaralı pinine led bağladığımız için integer tipinde bir değişken tanımladık.( int ledPin=7 );
2.Satırda: 10. Pine buton bağladığımızı bildiriyoruz.
3.Satırda: butona basılıp basılmadığını kontrol etmek için bir değişken tanımlıyoruz ben bu değişkene kontrol ismi verdim.
4.Satırda:void setup adında bir fonksiyon açıyoruz. Bu fonksiyon ile arduino da giriş/çıkış vb. tanımlamaları yapılır.
6. ve 8. Satırda: led in çıkış ,butonun ise giriş olarak kullanılacağını tanımladık.
10. Satırda: Sonsuz döngü açıyoruz(loop). Kod derlenip arduino’ya yüklendikten sonra sürekli olarak bu loop’un yani döngünün içindeki kodlar sırasıyla çalıştırılır. Buton okuma işlemleri genellikle bu tip sonsuz döngülerde veya kesmelerde (interrupt) yapılır ki butona basılıp basılmadığı anlık olarak kontrol edilebilsin.
12. Satırda: buton pininden okunan değeri kontrol değişkenine atıyoruz. Bu değer ya HIGH yada LOW olacaktır.
14. Satırda: if şartıyla butun durumu kontrol edilir. Eğer kontrol=HIGH ise yani butona basılmışsa “if” şartının süslü parantezleri içindeki kodlar çalıştırılır. NOT: eğer “if” şartından sonra tek satırlık bir kod yazılacak ise süslü parantez koymaya gerek yoktur yukarıdaki kodlarda görüldüğü gibi.
15. Satırda: ledi yak diye komut veriyoruz. Bu işlem arduino’da “digitalWrite(pin,durum)” ile yapılır.
16.Satırda: “else” yani butona basılmamış ise led sönük kalsın diyoruz.
Ve programı bitiriyoruz.
2- 10 Ledli karaşimşek devresi
Karaşimşek dizisini izleyenleriniz vardır .Dizideki arabanın önünde kırmızı bir ışık vardı sağa sola gidip gelen. Bu devrede o ışığın sağa sola kaydırılması işlemi yapılmaktadır.
Malzemeler:
- Breadboard
- 10 adet 220 ohm direnç
- 10 adet led
- Arduino uno
- Jumper kablo
Devre şeması aşağıdaki gibidir.
Devreden de görüldüğü gibi 10 adet LED yan yana dizilmiştir. Bunları önce sağdan başlayıp sola doğru 100 ms aralıklarla teker teker yakıp söndüreceğiz ve aynı işlemi sağ tarafa doğru tekrarlayacağız. Böylece karaşimşekteki gibi bir animasyon oluşacaktır.
Arduino için yazdığımız kod aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int ledPin[]={0,1,2,3,4,5,6,7,8,9};// ledlerin bağlandığı pinler bir dizinin elemanları olarak tanımlandı. void setup(){ for(int i=0;i<10;i++) pinMode(ledPin[i],OUTPUT); // 9 adet led for döngüsü ile çıkış olarak ayarlandı. } void loop() { for(int i=0;i<10;i++) // ledleri sırası ile sağa doğru yakıp söndürdük. { digitalWrite(ledPin[i],HIGH); delay(100); digitalWrite(ledPin[i],LOW); } for(int i=9;i>=0;i--) //ledleri sırası ile sağa doğru yakıp söndürdük. { digitalWrite(ledPin[i],HIGH); delay(100); digitalWrite(ledPin[i],LOW); } } |
Kodlar çok basittir. For döngüleri gözünüzü korkutmasın. For döngülerini led’leri sırayla yakmak için ve led pinlerini çıkış olarak tanıtmak için kullandık.
loop fonksiyonun içindeki ilk for döngüsünde sağdan sola 10 ledi yakıp söndürüyoruz. İkinci de ise soldan sağa yakıp söndürüyoruz. 100 ms’yi siz kendinize göre ayarlayabilirsiniz.Bu sayıyı arttırdıkça ledler daha yavaş yanıp sönecektir eğer azaltırsanız tam tersi daha hızlı yanıp sönecektir.
3- Ultrasonik sensör ile mesafe ölçme devresi
Öncelikle devrede kullanacağımız ultrasonik mesafe sensörünün çalışma mantığından bahsedelim.
Bu sensörler kulağımızın duyamayacağı frekansta ses dalgaları yollarlar ve eğer önünde bir engel var ise ses dalgası geri döner.Geri dönen ses dalgasını yine aynı sensör algılar. Ses dalgasının geri dönme süresine göre uzaklık hesaplaması yapılır.
Biz de aşağıdaki devrede sensörün önüne 20 cm den yakın bir engel koyacak ve bununla bir ledi kontrol edeceğiz.
Malzemeler:
- Arduino uno
- Breadboard
- Led 1 adet
- 220 ohm direnç 1 adet
- HC-SR06 mesafe sensörü
- Jumper kablo
Devre şeması:
Arduino için yazılan ultrasonik sensör kodları:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | int tPin = 4;//sensörün trig pini tanımlandı int ePin = 3;//sensörün echo pini tanımlandı. long olcme; long cm; void setup(){ pinMode(tPin,OUTPUT); pinMode(ePin,INPUT); pinMode(10,OUTPUT);// 10. pine bir led bağladık. Serial.begin(9600);// sensörden okuduğumuz değeri seri port ekranında görmek için seri port ayarı yapıldı. } void loop(){ digitalWrite(tPin,LOW);// sensörün ilk başta ses dalgası göndermesini önledik. delayMicroseconds(5); digitalWrite(tPin,HIGH);//ses dalgası gönderildi. delayMicroseconds(tPin,LOW); olcme = pulseIn(ePin,HIGH)// pulseIn()fonksiyonu ile echo pini HIGH olana kadar geçen süre hesaplanıyor. cm = olcme/29.1/2;//ölçüm değerini zamandan cm ye çevirdik. Serial.println(cm);//sonucu seri monitörden görmek için bilgisayara gönderdik. if(cm<20) digitalWrite(10,HIGH);//aradaki mesafe 20 cm'den küçükse led yanıcak. else digitalWrite(10iLOW); |
4-LCD’ye yazı yazma
Bu devrede kullanacağımız lcd 16×2 dir. Yani 2 satır 16 karakterden oluşan bir ekranı vardır.
Malzemeler:
- Arduino uno
- Breadboard
- 16×2 lcd
- 10k potansiyometre
- Jumper kablo
Devre şeması:
LCD ekran için Arduino kodları:
1 2 3 4 5 6 7 8 9 10 11 | #include <LiquidCrystal.h> // lcd kütüphansei çağırıldı. LiquidCrystal lcd(12,11,5,4,3,2); // lcd'nin bağlı olduğu pinler tanımlandı. void setup(){ lcd.begin(16,2);// kullanılacak lcd'nin satır ve sütun sayısı belirtildi. lcd.setCursor(0,0); lcd.print("arduino"); lcd.setCursor(0,1); lcd.print("arduino lcd örneği"); } void loop(){ // yazı seri monitöre 1 defa yazılacak ve sonra hiç bir işlem yapmadan döngünün içinde dönecek. } |
Kodu yazarken dikkat etmemiz gereken en önemli nokta lcd kütüphanesini çağırmaktır.Bunu programın en başına “#include<LiquidCrystal.h>” kodunu yazarak yapıyoruz.
İkinci satırda lcd yi hangi pinlere bağladığımızı tanıtıyoruz.
Void setup fonksiyonun içerisindeki Lcd.setCursor(0,0); komutu sıfırıncı satır sıfırıncı karakterden itibaren yazmaya başlar.
Yazma işleminide Lcd.print(“arduino”); komutu ile yazıyoruz.
Yukarıda sizlere arduinoya yeni başlayanlar için 4 tane basit örnek verdik. Sizlerde kendinizi geliştirmek için bu programların üzerinde oynayabilirsiniz . Mesala lcd de kayan yazı yapabilirsiniz veya ultrasonik sensör ile karaşimşek devresini birleştirebilir ve önüne sizin belirlediğiniz mesafeden daha yakın bir engel konulduğunda 10 tane ledi sırasıyla yakıp söndürebilirsiniz. Yani kısacası herşey sizin hayal gücünüze bağlı.
İyi çalışmalar…….