Bu yazımızda Arduino’da Buton ile Led Yakmak için program kodlayıp devre kurulumunu yapacağız. Bu yazıyı Arduino buton bağlantısı yapmak ve Arduino buton ile led yakmak isteyenler için hazırladım.
*Gerekli Malzemelerden Başlayalım.
- Breadboard (Devre Tahtası)
- LED
- 330 Ω Direnç
- 10kΩ Direnç
- Push Buton
- Jumper Kablo
- Arduino
Breadboard, led, direnç, arduino, buton, jumper kablo konularında yeterince bilgi sahibi değilseniz, öncelikle o konularla ilgili yazılarımızı okumanızı tavsiye ederim.
1 Butonla 1 Led Yakma Devresi ve Programı
Şimdi öncelikle devremizi kuralım.
Led’in eksi(katot yada kısa bacak) bacağına 330ohm’luk direnci bağlayalım ve direcin diğer bacağını GND’ye bağlayalım. Led’in artı(anot yada uzun bacak) bacağını ise Arduino’nun 2 nolu dijital pinine bağlayalım.
Devrede benim kullandığım 4 bacaklı push buton. Burada devrenin kararlı çalışması için yapmamız gereken 10kohm’luk direnci pull-down olarak kullanmak.
Arduino’da dijital pinler sadece HIGH(1) yada LOW(0) değerini okuyabilir. Eğer giriş pini boşta kalırsa yani doğrudan 0 yada 1 olmazsa kararsızlığa neden olabilir. Bu durumu engellemek için Pull-up veya Pull-down dirençler eklenir.
Pull-up direnç giriş pinini VCC’ye (5V) bağlı tutar.
Pull-down direnç giriş pinini GND’ye bağlı tutar.
Butonun bir bacağına 5V, diğer bacağına ise Pull-down direnç üzerinden geçen GND bağlantısını yapalım. Direnç ile GND arasından Arduino’nun 3 nolu dijital pinine bağlayalım.
Pull-down direnç sayesinde butona basılmadığı durumda 3 no’lu pine LOW(0) bilgisi gidecektir. Butona basıldığında ise HIGH(1) bilgisi gidecektir.
#define ledim 2 //ledin bağlı olduğu 2 nolu pin "ledim" olarak isimlendirildi.
#define butonum 3 //butonun bağlı olduğu 3 nolu pin "butonum" olarak isimlendirildi.
void setup()
{
pinMode(butonum, INPUT); //butonum isimli pin yani 3 nolu pin giriş sinyali alacak
pinMode(ledim, OUTPUT);//ledim isimli pin yani 2 nolu pin çıkış sinyali üretecek
}
void loop()
{
if (digitalRead(butonum) = = 1) //Eğer butona basılırsa, aşağıdaki işlem yapılacak
{
digitalWrite(ledim,HIGH); //ledi yak
}
else
{
digitalWrite(ledim,LOW);// ledi söndür
}
}Sıra geldi kodlamaya. Detaylı şekilde kodları anlatacağım.
PROGRAM ADIMLARI
ADIM 1:
#define ledim 2 //ledin bağlı olduğu 2 nolu pin "ledim" olarak isimlendirildi.
#define butonum 3 //butonun bağlı olduğu 3 nolu pin "butonum" olarak isimlendirildi.Bu örnekte Arduino’nun 2. dijital pinini led yakmak için, 3. dijital pinini ise butonuna basılma durumunu kontrol etmek için seçtim.(İsterseniz 2,3,4,5,6,7,8,9,10,11,12,13 nolu pinlerden herhangi ikisini kullanabilirsiniz).
#define ledim 2 Burada yapılan işlem Led’i bağlayacağımız pini isimlendirmek. Daha sonra karışıklığa neden olmamak adına 2 numaralı pine ledim ismini verdim.
#define butonum 3 Burada ise 3 numaralı pine butonum ismini veriyorum. Bu işlemden sonra 2 numaralı pin artık ledim isminde, 3 numaralı pin ise butonum isminde kullanılacak.
ADIM 2:
void setup()
{
pinMode(butonum, INPUT); //butonum isimli pin yani 3 nolu pin giriş sinyali alacak
pinMode(ledim, OUTPUT);//ledim isimli pin yani 2 nolu pin çıkış sinyali üretecek
}void setup() Arduino çalışmaya başladığında ilk olarak bu fonksiyonunu okur ve ön ayarları yapar.
pinMode() komutu ile butonum pinini INPUT(Sinyal girişi) olarak ayarladık. Çünkü butonum pini(3 no’lu pin) giriş sinyali dinleyecek. Butona basıldığını bu şekilde takip edeceğiz.
Yine pinMode() komutu ledim pinini OUTPUT(Sinyal çıkışı) yapacak şekilde ayarladık. Çünkü bu pinin göndereceği sinyal ledi yakacak.
ADIM 3:
void loop()
{
if (digitalRead(butonum) = = 1) //Eğer butona basılırsa, aşağıdaki işlem yapılacak
{
digitalWrite(ledim,HIGH); //ledi yak
}
else
{
digitalWrite(ledim,LOW);// ledi söndür
}
}Loop() fonksiyonu Arduino çalıştığı sürece, içerisindeki komutları sürekli olarak tekrar eder.
if (digitalRead(butonum) = = 1)
if bir kontrol deyimidir. Belirli koşula göre programın akışını yönlendirmek için kullanılır. Burada digitalRead(butonum) komutu butonum pininin değerini okur. Okunan değer 0 ya da 1 olabilir(Dijital pin olduğu için). Bu pinden okunan değeri == operatörü ile 1’e yani 5v(HIGH) değerine eşit mi diye kontrol ediyoruz. Eşitse butona basılmıştır anlamına gelir. Farklı şekilde ifade edecek olursak butona basıldığında digitalRead(butonum) komutu 1 değeri gösterir.
if (digitalRead(butonum) = = 1) Bu komut satırı ile eğer butona basıldıysa kontrolü yapmış oluyoruz. if kullanımında şart sağlandığı durumda if ‘in süslü parantez içerisindeki komutları Arduino tarafından işleme alınır. Şart sağlanmazsa ELSE kısmı işleme alınır.
digitalWrite(ledim,HIGH); Şart sağlandığında yani butona basıldığında ledim pini HIGH yapılıyor yani ledimiz yanıyor.
else İf içerisinde yazılan şart sağlanmazsa, yani butona basılmazsa ELSE kısmı çalışıyor.
digitalWrite(ledim,LOW); Şart sağlanmadığında yani butona basılı değilken ledim pini LOW yapılıyor yani ledimiz sönüyor.


Reply