Arduino ile buton kullanmak için öncelikle bağlantı ve kodlama şekillerini öğrenmek gerekir.
Arduino ile butonları iki bacaklı şekilde seri olarak bağlanırlar. Analog input ve dijital input olarak kodlanır ve çalıştırılabilirler.
Dijital input olarak kullanıldığı zaman switch gibi çalışır ve sadece 0-1 olarak değer alınır. Ya butona basılmıştır yada basılmamıştır sorgusu üzerinden işlen yapılır.
Analog inputtan kullanıldığı zaman bir arduino uno r3 için A0 pinine 0-1023 arasında değerler alınabilir. Bu sayede bir pine onlarca hatta yüzlerce buton bağlanılabilir.
Arduinoya buton bağlanıldığı zaman çevresel faktörler ve kirli sinyal diye adlandırılan elektronik gürültülerden girişin etkilenmemesi ve butona basılmadığı zaman basılmış gibi algılanmaması için kodlama esnasında pin tanımlaması yaparken INPUT PULLUP diye tanımlama yapılabilir bu çoğu zaman işe yarasa da kesin çözüm için PullUp/PullDown direnci kullanmak daha iyi olacaktır.
Aşağıdaki şemada bağlantının nasıl yapılacağı gösterilmiştir.
Butonlar ile bir çok projeyi daha kullanışlı hale getirebilmekteyiz. Dışarıdan arduinoya manuel olarak müdahlemizi butonlar sayesinde yapabilmekteyiz.
Videoyu İzlemek İçin TıklayınızÖRNEK-1
//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı butonlar ve buton - kullanımı örnek Kodları
#define led 13
#define buton_1 3
boolean btn_durum;
boolean onceki_btn = 0;
boolean led_durum = 0;
void setup() {
Serial.begin(9600);
pinMode(led,OUTPUT);
pinMode(buton_1,INPUT);
}
void loop() {
btn_durum =(digitalRead(buton_1));
if(btn_durum == 1&& onceki_btn==0)
{
Serial.println("burası ifin icerisi");
led_durum = !led_durum;
onceki_btn = 1;
}
else
{
onceki_btn=btn_durum;
Serial.println("burası elsenin icerisi");
}
{
digitalWrite(led,led_durum);
Serial.print("ledin durumu :");
Serial.println(led_durum);
}
}
ÖRNEK-2
//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı butonlar ve buton - kullanımı örnek Kodları
#define led 13
#define buton_arti 3
#define buton_eksi 4
int sayac;
boolean arti;
boolean eksi;
void setup() {
Serial.begin(9600);
pinMode(buton_arti,INPUT);
pinMode(buton_eksi,INPUT);
}
void loop() {
Serial.println(sayac);
arti=digitalRead(buton_arti);
eksi=digitalRead(buton_eksi);
if (arti ==1 )
{
sayac++;
delay(10);
}
while(arti == 1)
{
arti=digitalRead(buton_arti);
Serial.println(sayac);
}
if (eksi ==1 )
{
sayac--;
delay(10);
}
while(eksi == 1)
{
eksi=digitalRead(buton_eksi);
Serial.println(sayac);
}
}
ÖRNEK-3
//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı butonlar ve buton - kullanımı örnek Kodları
#define buton A0
int btn_sayisi;
void setup() {
Serial.begin(9600);
pinMode(buton, INPUT);
}
void loop() {
btn_sayisi = analogRead(buton);
// Serial.println(btn_sayisi);
if (btn_sayisi>1000)
{
Serial.println("Buton 1 e basıldı");
}
else if(btn_sayisi<999 && btn_sayisi>989)
{
Serial.println("Buton 2 e basıldı");
}
else if(btn_sayisi<987 && btn_sayisi>955)
{
Serial.println("Buton 3 e basıldı");
}
else if(btn_sayisi<950 && btn_sayisi>10)
{
Serial.println("Buton 4 e basıldı");
}
}