Merhaba arkadaşlar. Bugün sizlere if(){} ve else{} komutunu konuşacağız ve bunu butonla led kontrolü uygulamasıyla pekiştireceğiz.
if(){} komutu parantez () içerisinde yazılan şart sağlandığı taktirde süslü parantez{} içerisinde yazan komutların gerçekleştirilmesini sağlar. Parantez () içindeki şartı karşılaştırma operatörleri(büyüktür, küçüktür, eşittir vb.) ve mantık operatörleri(ve, veya) kullanarak yazarız.
Karşılartırma Operatörleri:
a == b // a eşittir b
a != b // a eşit değildir b ye
a < b // a değeri b değerinden küçük
a > b // a değeri b değerinden büyük
a <= b // a değeri b değerinden eşit veya küçük
a >= b // a değeri b değerinden eşit veya büyük
Mantık Operatörleri:
a == x && b == y // Şartın sağlanması için hem a=x hem de b=y olmak zorundadır.
a == x || b == y // Şartın sağlanması için a=x veya b=y şartından birinin olması yeterlidir.
Buton kullanımında if(){} komutundan faydalanıyoruz. Komutun şart kısmını parantez() içine yazarken o butonun bağlı oldu pinin okunmasını ve 5v gerilim varsa işlem yapmasını istiyoruz. Pinin değerinin okunmasını yeni kodumuz digitalRead(pin numarası) kodu ile yapıyoruz. Bu kod pinin okumasını yapıyor. Sonra koşul belirtmek için de karşılaştırma operatörlerinden eşittiri == kullanacağız. Yani kodumuz if(digitalRead(pin numarası) == HIGH){} şeklinde olacak. Süslü parantez içine de butona basıldıktan sonra gerçekleşmesini istediğimiz komutları yazıyoruz. Eğer 2 nolu pine bir buton, 3 nolu pine bir led bağlayıp yakmak isteseydik kodumuz
if(digitalRead(2) == HIGH) {digitalWrite(3, HIGH);}
şeklinde olurdu.
Bu şekilde butona basılmadığı zaman ne yapılmasını gerektiğini belirtmezsek butona bastığımızda led yanar, buton bırakıldıktan sonra da yanmaya devam eder. Butona bastığımızda ledin yanmasını, elimizi çektiğimizde sönmesini isteseydik bu durum için de kod yazmamız gerekirdi. Bunu iki şekilde yapabiliriz. Birincisi else{} komutu ile bir önceki if komutundaki şartların gerçekleşmediğinde ne yapılması gerektiğini belirtmektir. Bu durumda kodumuz
if(digitalRead(2) == HIGH) {digitalWrite(3, HIGH);}
else{digitalWrite(3, LOW);}
şeklinde olurdu. İkinci yöntem ise else komutu yerine, "eğer buton durumu kapalı ise led durumu kapalı olsun" şeklinde ikinci bir şart yazmak olacaktır. Bu durumda kodumuz
if(digitalRead(2) == HIGH) {digitalWrite(3, HIGH);}
else if(digitalRead(2) == LOW) {digitalWrite(3, LOW;}
şeklinde olacaktır.
Kodlarımızı anlattıktan sonra Buton Bağlantısı ve PULL DOWN dirençlemeden bahsetmek istiyorum. Buton bağlantısı led bağlantısından farklıdır. Led bağlantısında enerji arduinodan lede aktarılacak şekilde bağlanırken, buton bağlantısında dışarından enerji arduinonun okuma yapılacak pinine aktarılacak şekilde bağlanır. Butonun bir ayağı sistemin 5v hattına(5v Arduino üzerindeki vcc pininden de alınabilir) diğer ayağı arduinonun input olarak kullanacağımız bacağa bağlanır. Böylece butona basıldığı zaman enerji arduinoya aktarılır ve okunur. Butona basılmadığı zaman ise arduinoya elektrik gitmez. Fakat arduinonun bacağı okumaya devam eder. Elektriksel gürültü(Analog Veri okuma dersinde bunu görüntüleyeceğiz.) dediğimiz anakart üzerindeki oluşan küçük elektromanyetizma yüzünden buton basılmasa da değişik değerler okur ve sistemin yanlış çalışmasına neden olur. Bunu önlemek için arduinoya giden bacak ayrıca GND hattına bağlanır. Böylece buton basılmadığı durumda GND hattını okur yani sıfır değeri okuyarak gürültü toprak hattına aktarılmış olur. İşte bu noktada bir sorun oluşmaktadır. Butona basıldığı zaman akım için gideceği iki yol oluşur. Birisi GND hattı, diğeri arduinonun input pinidir. Akım her zaman direnç olmayan hattı seçeceği için arduinoya gitmeden direkt GND hattına giderek kısa devre oluşturur. Bunu önlemek için butonu GND hattına bağlamadan önce 10K ohm direnç bağlarız. Bu direnç bağlama sistemine PULL DOWN direnç denilmektedir.
Biraz uzun anlattım kusura bakmayın fakat elektriğe yeni başlamış arkadaşlar için zor anlaşılan bir konudur. Elimden geldiğince açıklayıcı olmaya çalıştım.
Yazılarımı beğendiyseniz ve eleştirmek isterseniz yorumlarınızı bekliyorum. İlerleyen derslerde görüşmek üzere...
if(){} komutu parantez () içerisinde yazılan şart sağlandığı taktirde süslü parantez{} içerisinde yazan komutların gerçekleştirilmesini sağlar. Parantez () içindeki şartı karşılaştırma operatörleri(büyüktür, küçüktür, eşittir vb.) ve mantık operatörleri(ve, veya) kullanarak yazarız.
Karşılartırma Operatörleri:
a == b // a eşittir b
a != b // a eşit değildir b ye
a < b // a değeri b değerinden küçük
a > b // a değeri b değerinden büyük
a <= b // a değeri b değerinden eşit veya küçük
a >= b // a değeri b değerinden eşit veya büyük
Mantık Operatörleri:
a == x && b == y // Şartın sağlanması için hem a=x hem de b=y olmak zorundadır.
a == x || b == y // Şartın sağlanması için a=x veya b=y şartından birinin olması yeterlidir.
Buton kullanımında if(){} komutundan faydalanıyoruz. Komutun şart kısmını parantez() içine yazarken o butonun bağlı oldu pinin okunmasını ve 5v gerilim varsa işlem yapmasını istiyoruz. Pinin değerinin okunmasını yeni kodumuz digitalRead(pin numarası) kodu ile yapıyoruz. Bu kod pinin okumasını yapıyor. Sonra koşul belirtmek için de karşılaştırma operatörlerinden eşittiri == kullanacağız. Yani kodumuz if(digitalRead(pin numarası) == HIGH){} şeklinde olacak. Süslü parantez içine de butona basıldıktan sonra gerçekleşmesini istediğimiz komutları yazıyoruz. Eğer 2 nolu pine bir buton, 3 nolu pine bir led bağlayıp yakmak isteseydik kodumuz
if(digitalRead(2) == HIGH) {digitalWrite(3, HIGH);}
şeklinde olurdu.
Bu şekilde butona basılmadığı zaman ne yapılmasını gerektiğini belirtmezsek butona bastığımızda led yanar, buton bırakıldıktan sonra da yanmaya devam eder. Butona bastığımızda ledin yanmasını, elimizi çektiğimizde sönmesini isteseydik bu durum için de kod yazmamız gerekirdi. Bunu iki şekilde yapabiliriz. Birincisi else{} komutu ile bir önceki if komutundaki şartların gerçekleşmediğinde ne yapılması gerektiğini belirtmektir. Bu durumda kodumuz
if(digitalRead(2) == HIGH) {digitalWrite(3, HIGH);}
else{digitalWrite(3, LOW);}
şeklinde olurdu. İkinci yöntem ise else komutu yerine, "eğer buton durumu kapalı ise led durumu kapalı olsun" şeklinde ikinci bir şart yazmak olacaktır. Bu durumda kodumuz
if(digitalRead(2) == HIGH) {digitalWrite(3, HIGH);}
else if(digitalRead(2) == LOW) {digitalWrite(3, LOW;}
şeklinde olacaktır.
Kodlarımızı anlattıktan sonra Buton Bağlantısı ve PULL DOWN dirençlemeden bahsetmek istiyorum. Buton bağlantısı led bağlantısından farklıdır. Led bağlantısında enerji arduinodan lede aktarılacak şekilde bağlanırken, buton bağlantısında dışarından enerji arduinonun okuma yapılacak pinine aktarılacak şekilde bağlanır. Butonun bir ayağı sistemin 5v hattına(5v Arduino üzerindeki vcc pininden de alınabilir) diğer ayağı arduinonun input olarak kullanacağımız bacağa bağlanır. Böylece butona basıldığı zaman enerji arduinoya aktarılır ve okunur. Butona basılmadığı zaman ise arduinoya elektrik gitmez. Fakat arduinonun bacağı okumaya devam eder. Elektriksel gürültü(Analog Veri okuma dersinde bunu görüntüleyeceğiz.) dediğimiz anakart üzerindeki oluşan küçük elektromanyetizma yüzünden buton basılmasa da değişik değerler okur ve sistemin yanlış çalışmasına neden olur. Bunu önlemek için arduinoya giden bacak ayrıca GND hattına bağlanır. Böylece buton basılmadığı durumda GND hattını okur yani sıfır değeri okuyarak gürültü toprak hattına aktarılmış olur. İşte bu noktada bir sorun oluşmaktadır. Butona basıldığı zaman akım için gideceği iki yol oluşur. Birisi GND hattı, diğeri arduinonun input pinidir. Akım her zaman direnç olmayan hattı seçeceği için arduinoya gitmeden direkt GND hattına giderek kısa devre oluşturur. Bunu önlemek için butonu GND hattına bağlamadan önce 10K ohm direnç bağlarız. Bu direnç bağlama sistemine PULL DOWN direnç denilmektedir.
Biraz uzun anlattım kusura bakmayın fakat elektriğe yeni başlamış arkadaşlar için zor anlaşılan bir konudur. Elimden geldiğince açıklayıcı olmaya çalıştım.
Yazılarımı beğendiyseniz ve eleştirmek isterseniz yorumlarınızı bekliyorum. İlerleyen derslerde görüşmek üzere...
COMMENTS