Arduino buton ve anahtar kullanımı (Arduino button and switch operation)

Arduino buton ve anahtar kullanımı derken akla direk buton veya bir anahtar gelmemelidir.
Bilinmelidir ki bu tür deneysel platformlarda buton veya anahtarlar giriş aygıtlarını,led ler ise çıkış aygıtlarını temsil ederler.
Örneğin bir çamaşır makinesi veya çamaşır makinesi gibi çalışacak bir cihazı ele alırsak,burada anahtar; çamaşır makinesinin kapağını veya su seviye sensörünü, buton; ekran arayüzündeki başlatma,sıkma,boşaltma gibi buton fonksiyonlarını temsil eder.Led ise motorlar veya su alma ventillerini temsil eder.
Şekildeki devrede buton da pull up direnci,anahtarda ise pull down direnci kullanılmıştır.
Çünkü Arduino I/O pinlerine digital veri sağlayan buton,switch,sensör,düğme v.b aygıtlardan gelen digital verileri okumak için girişin bilgi yokken yani butona basılmamışken yada anahtar kapatılmamışken sabit “1” yada “0” olması ve sadece bilgi geldiğinde yani butona basıldığında yada anahtar kapatıldığında durum değiştirmesi gerekir,bunun için şekildeki gibi yardımcı direnç kullanılır.Bu direnç kullanılmadığında sensör,buton,switch,düğme v.b aygıtlar boşta iken Arduino girişleri, kablolar ve sensörlerde oluşan manyetik harmonikleri digital veya analog bilgi gibi algılayabilir ve bu durum kodun kararsız çalışmasına neden olur.Bu nedenle direnç kullanılarak butona basılmadığı durumlarda giriş seviyesinin sabit “1” yada “0” olması ve sadece butona basıldığı veya anahtar kapatıldığında durum değiştirmesi sağlanmıştır.
Kod yazarken çalismasi belli bir şarta,butona basılmasına veya anahtarın kapatılmasına (örneğin çamaşır makinesinin kapağı veya su seviye sensörü) bağlı olan kodlar yazılırken “if” fonksiyonu kullanılır.
Yukarıda şeması ve aşağıda kodu verilen devrede, anahtar kapalı iken butona basıldığında led birer saniye aralıklarla yanıp söner,anahtar açıkken butona basıldığında ise devre herhangi bir tepki vermez.
Arduino buton ve anahtar kullanımı örnek kodu:
int led=3;
int buton= 4;
int buton_deger = 0;
int anahtar=5;
int anahtar_deger = 0;
void setup()
{
pinMode(led,OUTPUT);
pinMode(buton,INPUT);
}
void loop()
{
buton_deger = digitalRead(buton);
anahtar_deger = digitalRead(anahtar);
if (anahtar_deger == HIGH)
if (buton_deger == LOW)
{
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}
else
digitalWrite(led, LOW);
}