Günlük hayatımızda bir çok yerde birden çok buton kullanılmaktadır. Lambayı açarken, bilgisayarı açarken, bazı arabları çalıştırırken vb. butonlar kullanılabilmektedir.
Buton arasında az bir boşluk olan bir tel gibi düşünülebilir. Butona bastığınızda bu boşluk kapanır ve buton elektriği iletir hale gelir.
Arduino daki dijigotal pinler (bazen analog da kullanılabilir) bir butona bağlanabilir. Butona bağladığımız pin i giriş pini olarak ayarlarız (INPUT)




Benzer bir örnek daha

Arduino ya bir buton bağladığımız zaman arduino ya HIGH(5V) veya LOW(0V) değeri gelmelidir.
Herhangi bir kararsızlık durumu olmaması gerekmektedir.
Normalde butona bastığımızda arduino ya 5V elektrik gider. Peki butona basmadığımızda ne olur? İşte bu durumda kararsızlık olmaktadır. Bu kararsızlığı önlemek için butonun arduino ya bağlı olan ayağına 10KOhm direnç bağlanmaktadır.
Bu direnç bağlantısına pull-up veya pull-down direnç bağlantısı denmektedir.


pull-up direnç bağlantısında butona basıldığında arduino nun giriş pini toprağa(GND) ulaşmakta, basılmadığında 5V düzeyinde olmaktadır.
pull-down direnç bağlantısında tam tersi bir durum vardır. Butona basıldığında arduinonun giriş pini 5V’ a, butona basılmadığında toprağa(GND) ye ulaşmaktadır.
ÖRNEK BAĞLANTILAR
Pull Down Direnç Bağlantısı
Malzemeler:
- 1 Adet Arduino UNO
- 1 Adet 4 bacaklı push buton
- 1 adet 10kOhm direnç
- 1 adet breadboard
- Yeterli sayıda kablo

void setup() { pinMode(7, INPUT); //7 numaralı pin giriş olarak ayarlandı Serial.begin(9600); //Seri port 9600 hızında başlatıldı } void loop() { if(digitalRead(7)==1){ //eğer 7 numaralı pine elektrik gelmişse Serial.println("butona basıldı"); //seri porta butona basıldı yaz } }
Serial.begin() seri portu başlatmak için gerekli olan komuttur.
digitalRead(7) dijital pinlerden okuma yapmak için kullanılır. Buradaki kodumuzu 7 numaralı dijital pin den okuma yapmaktadır.
Serial.println(“butona basıldı”); // Seri port ekranına yazı yazmak için kullanılır. Her yazılanı yeni satıra ekler.
Serial.print(“butona basıldı”); olarak yazsaydık yazılanları yan yana yazardı.
Arduino’ da seri port ekranını açmak için

Seri portu açmadan önce arduino yu bilgisayara bağlamayı unutmayalım!
if-else ile Karar Yapısı
if Türkçede eğer anlamına gelmektedir. if ile herhangi bir koşulun sağlanıp sağlanmadığını kontrol ederiz.
else ise if ile belirttiğimiz koşul sağlanmaz ise çalışmasını istediğimiz kodların olduğu bölümdür.
İfade | Anlamı |
---|---|
x==y | Eğer x ve y birbirine eşitse (matematiksel olarak) doğrudur, değilse yanlıştır. |
x<y | Eğer x, y’den küçükse doğrudur; değilse yanlıştır. |
x<=y | Eğer x, y’den küçük ya da eşitse doğrudur; değilse yanlıştır. |
x>y | Eğer x, y’den büyükse doğrudur; değilse yanlıştır. |
x>=y | Eğer x, y’den büyük ya da eşitse doğrudur; değilse yanlıştır. |
x!=y | Eğer x, y’den farklı ise (büyük ya da küçük) doğrudur; değilse yanlıştır. |
Mantıksal İfadeler | Açıklama |
---|---|
&& | Mantıksal VE anlamına gelir(AND) |
|| | Mantıksal VEYA anlamına gelir (OR) |
! | mANTIKSAL DEĞİL anlamına gelir (NOT) |
BUTON KULLANARAK LED YAKMA UYGULAMASI
Malzemeler
Yukarıdaki malzemelere ilaveten
- 1 adet led
- 1 adet 330Ohm direnç

void setup() { pinMode(7, INPUT); //7 numaralı pin giriş olarak ayarlandı pinMode(3,OUTPUT); Serial.begin(9600); //Seri port 9600 hızında başlatıldı } void loop() { if(digitalRead(7)==1){ //eğer 7 numaralı pine elektrik gelmişse digitalWrite(3,HIGH); }else{ digitalWrite(3,LOW); } }
Pull Up Direnç Bağlantısı
Devremizi aşağıdaki şekilde değiştiriyoruz.

Bu durumda butona basıldığında arduino’ ya 0V, ancak butona basılmadığında 5V gitmektedir. Yani butona basılmadığı zaman LED yanmaktadır. Bu durumu düzeltmek için
void setup() { pinMode(7, INPUT); //7 numaralı pin giriş olarak ayarlandı pinMode(3,OUTPUT); Serial.begin(9600); //Seri port 9600 hızında başlatıldı } void loop() { if(digitalRead(7)==0){ //eğer 7 numaralı pine elektrik gelmemişse. Yani lojik 0 digitalWrite(3,HIGH); }else{ digitalWrite(3,LOW); } }
Burada kodumuzu if(digitalRead(7)==0) olarak değiştirdik.
Dahili Pull-Up Direnci
Birçok arduino modelinde dahili pull-up direnci vardır. Dahili pull-up dirençleri sayesinde buton kullanırken ekstra direnç kullanmamıza gerek kalmaz.
Bunun için aşağıdaki kod yazılır.
pinMode(7,INPUT_PULLUP);
Arduino’ da sadece pull-up direnci vardır pull-down direnci yoktur.
Bunun için devre ve kodlarımızı şu şekilde değiştirmemiz gerekmektedir.

Görüldüğü gibi buton için herhangi bir direnç kullanmadık.
void setup() { pinMode(7, INPUT_PULLUP); //7 numaralı pin PULLUP olarak ayarlandı pinMode(3,OUTPUT); Serial.begin(9600); //Seri port 9600 hızında başlatıldı } void loop() { if(digitalRead(7)==0){ //eğer 7 numaralı pine elektrik gelmemişse. Yani lojik 0 digitalWrite(3,HIGH); }else{ digitalWrite(3,LOW); } }
Kodlarımızda pinMode(7, INPUT_PULLUP); kısmına dikkat edelim.
Son olarak daha önceki konularda öğrendiğimiz gibi kodlarımızın daha düzenli ve kontrol edilebilir olması için gerekli alanları değişkenlere aktaralım.
byte buton1=7; byte led1=3; void setup() { pinMode(buton1, INPUT_PULLUP); //7 numaralı pin PULLUP olarak ayarlandı pinMode(led1,OUTPUT); Serial.begin(9600); //Seri port 9600 hızında başlatıldı } void loop() { if(digitalRead(buton1)==LOW){ //eğer 7 numaralı pine elektrik gelmemişse. Yani lojik 0 digitalWrite(led1,HIGH); }else{ digitalWrite(led1,LOW); } }
Butonlar konusunun da sonuna geldik. İyi kodlamalar 🙂