Bu çalışmamızı Arduino kodlarına internetten bakıp anlamakta zorlanan arkadaşlar için bir yaptık. Temel Arduino kodları ve programlamayla ilgili temel bilgileri bulabilirsiniz.
Tamamının Pdf dosyasını indirmek için tıklayınız.
https://drive.google.com/file/d/1FU93JUq36yQ-3lMN-wMzhoXILwecSNbJ/view?usp=sharing
Kütüphane ekleme
Setup ve Loop fonksiyonları
PinMode
DigitalWrite:
AnalogWrite:
Düğme Kullanımı
Tamamının Pdf dosyasını indirmek için tıklayınız.
https://drive.google.com/file/d/1FU93JUq36yQ-3lMN-wMzhoXILwecSNbJ/view?usp=sharing
Temel Arduino Fonksiyonları
Kütüphane ekleme
Yeni bir kütüphane eklemek için kütüphane dosyalarını Arduino
programını kurduğunuz dizinin altında bulunan 'libraries' klasörüne
taşıyın.
#include
<kutuphaneadi.h>
Setup ve Loop fonksiyonları
void setup(){
/*
Burası sadece bir kere çalışır
Genel ayarlar buradan yapılır
*/
}
void loop(){
/*
Bu fonksiyon sonsuza kadar çalışır
Arduino'nun yapması gereken işlemler buraya yazılır
*/
}
PinMode
Arduino kartı üzerinde bulunan pinleri
çıkış veya giriş olarak tanımlayabilirsiniz. Giriş olarak tanımlanmış pinler
düğme gibi elemanlar için kullanılırken, çıkış olarak tanımlanmış pinler ise
LED gibi elemanlar için kullanılır. Programın en başında (Setup içerisinde),
kullanılacak pinler ayarlanmalıdır. Bunun için aşağıdaki kod kullanılır:
pinMode(13,OUTPUT);
Böylece 13. Pin çıkış olarak tanımlanır. Giriş olarak
tanımlanması için OUTPUT yerine INPUT yazılması gerekir.
DigitalWrite:
Çıkış olarak
tanımlanmış pinlerden enerji vermek için veya enerji vermeyi durdurmak için
kullanılır. Örneğin:
digitalWrite(13,HIGH);
Böylece, daha önce
çıkış olarak tanımlanmış 13 numaralı pinden enerji çıkışı sağlanır. Enerji
çıkışı durdurulmak istenildiğinde HIGH yerine LOW yazılması yeterlidir.
AnalogWrite:
Seçilen pinde PWM
sinyalinin üretilmesini sağlar. PWM sinyalinin görev zamanı (Duty cycle)
fonksiyona verilen değer ile belirlenir. Örneğin bu pine bağlanan bir LED
ışığının parlaklığı verilen PWM sinyali ile ayarlanabilir.
analogWrite(LEDPin,
175);
DigitalRead
durum = digitalRead(13);
13 numaralı pindeki gerilim 5 volta yakın ise 'durum' değişkeni
1 (HIGH), 0 volta yakın ise 0 (LOW) olmuştur.
AnalogRead
Bir önceki fonksiyon ile 13
numaralı pindeki gerilimin 5 veya 0 olmasını ölçtük. digitalRead fonksiyonu, 0
ve 5 volt arasındaki gerilimlerin tam değerini ölçemez. 0 ve 5 volt arasındaki
gerilimin tam değerinin ölçülmesi için analogRead fonksiyonu kullanılmalıdır.
Fakat bu fonksiyon, tüm pinler için kullanılamaz. Bu fonksiyonun
kullanılabileceği özel pinler vardır. Bunlara analog pinler denir ve genellikle
A harfi ile başlarlar: A0, A1, A2… gibi. Kullanılan Arduino türüne göre bu
pinlerin sayısı değişiklik gösterir.
Arduino Uno'da 6, Arduino
Mega'da 16 tane analog giriş bulunur. Kullanılacak analog pin, öncelikle giriş
olarak tanımlanmalıdır:
pinMode(A0,INPUT)
Örneğin A0'daki değeri
'analogDeger' değişkenine kaydedelim. A0'daki gerilim 10 bit olarak
kaydedilecektir. Bu durumu ilerleyen bölümlerde daha detaylı olarak göreceğiz.
analogDeger = AnalogRead(A0);
Delay
İki kod arasında bir süre
beklenmesi istenirse, delay fonksiyonu kullanılır.
delay(500);
Serial.begin(9600)
Bu fonksiyon ile
iletişim hızını ayarlaıyoruz. Seri haberleşmede iletişim hızı “baud” adı
verilen bir değerle ifade edilir. Bu değer saniyede gönderilen bit sayısını
ifade eder (bits per second). Serial monitor’ün sağ alt köşesindeki değerle
programımızdaki değerin aynı olduğuna dikkat edin. Arduino’dan gönderdiğimiz
verileri düzgün görüntüleyebilmek için bu değerler aynı olmalıdır.
Serial.print()
ve Serial.println()
Serial.print("Seri haberlesme: ");
Serial.println(sayac);
Bu fonksiyonlar ile
string’leri doğrudan ekrana yollayabiliyoruz. İki fonksiyon arasındaki tek
fark println() fonksiyonunun string sonuna bir de satır sonu karakteri
eklemesidir. Böylelikle veriler Serial monitor ile alt alta görüntülenebilir.
Bu fonksiyonlara string parametreler verilebildiği gibi int, float türünde
sayılar da verilebilir.
Düğme Kullanımı
Bu uygulamayı yapmak
için ihtiyacınız olan malzemeler:
- 1 x Arduino
- 1 x düğme
- 1 x 10K ohm direnç
- 1 x LED
- 1 x 220 ohm direnç
- 1 x breadboard (gofret)
Bu devredeki düğmenin amacı
LED'i kontrol etmek olacaktır. Kullanıcı düğmeye bastığında LED yanıyorsa
sönecek, sönük ise de yanacaktır. Burada bilmemiz gereken bir diğer nokta ARK
olaylarıdır. Düğmeye basıldığı anda oluşan atlamalardan dolayı Arduino çok kısa
zamanda yüzlerce kere düğmeye basıldığını sanmaktadır. Bu istenmeyen durumdan
kurtulmak için basıldığı anda Arduino'yu biraz bekleteceğiz (delay fonksiyonu
ile). Böylece devremiz, düğmeye basıldığında oluşan istenmeyen dalgalanmalardan
korunmuş olacaktır. Delay fonksiyonuna yazılan bekleme zamanı insanın fark
edemeyeceği kadar kısa bir süredir.
Düğmeye her basıldığında
yeni bir işlem yapılmasını istiyoruz. Bunu sağlamak için düğmeye basıldığında
yapılması gereken işlem yapıldıktan sonra, kişinin düğmeden elini çekmesi
beklenmelidir. Eğer bunu yapmazsak kişi, düğmeye bastığında LED'i sürekli yanıp
sönecektir. Bu işlem o kadar hızlı olacaktır ki insan gözü bunu algılayamaz.
Düğmenin durumu digitalRead
fonksiyonu ile kontrol edilecektir. Okunan düğme değeri 'dugmeDurumu'
değişkenine yüklenecektir. Eğer düğmeye basılmışsa LED'in durumunu
değiştireceğiz. LED'in düğmeye her basıldığında konumunun değişmesi için, LED
durumu bir değişkene atanır ve LED'in eski durumuna göre LED farklı konuma
getirilir
const int Dugme = 6; /* düğmenin bağlı olduğu pin */
const int LED = 5; /*
LEDin bağlı olduğu pin */
int dugmeDurumu = 0; /* düğmenin durumu */
int LEDDurumu = 0; /* birinci yöntem için LED durumu */
void setup() {
pinMode(LED, OUTPUT); /* LED pini çıkış olarak ayarlandı */
pinMode(Dugme, INPUT); /* düğme pini giriş olarak ayarlandı */
}
void loop(){
dugmeDurumu = digitalRead(Dugme); /* düğmenin durumu okundu ve değişkene
aktarıldı */
if(dugmeDurumu == HIGH) { /* düğmeye basılmış ise */
delay(10); /*
dalgalanmalar için biraz bekleyelim */
if(LEDDurumu == 0){ /* LED
yanmıyorsa */
digitalWrite(LED, HIGH); /* LEDi yak */
LEDDurumu = 1;
}else { /* LED yanıyorsa */
digitalWrite(LED, LOW); /* LEDi sondur */
LEDDurumu = 0;
}
while(dugmeDurumu == HIGH){ /* düğmeye basili olduğu surece bekle */
dugmeDurumu = digitalRead(Dugme); /* düğmenin durumunu kontrol et */
}
delay(10); /*
dalgalanmalar için biraz bekleyelim */
}
}
Hazırlayan:
Sinan KARDAŞ
Bu
notlar “ https://gelecegiyazanlar.turkcell.com.tr/konu/arduino/egitim/101”
adresinden derlenmiştir.
Yorumlar
Yorum Gönder
Yorumlarımızda genel ahlak kurallarınının dışına çıkmayalım, lütfen.