Arduino ile buton nasıl kullanılır ?
Dijital pinlerin bir giriş olarak kullanımını göstermek için , Arduino'nun dijital giriş / çıkış pinlerine bağlı iki LED'i kontrol etmek için buton kullanılır.
Arduino'nun Dijital Girişlerini Okuma
Dijital girişi okumak için Arduino'nun GPIO pinlerini kullanmak için Arduino'nun pinMode () fonksiyonunu kullanıyoruz. PinMode () rutini, GPIO pinlerini aşağıdaki gibi bir dijital çıkış pini olarak tanımlamak için kullanılır:
pinMode(GPIO_Pin,INPUT);
Örneğin, Arduino'nun GPIO_0'ını bir dijital giriş pini olarak ilan etmek istiyorsanız, yukarıdaki işlevi şu şekilde kullanın:
pinMode(0,INPUT);
GPIO pinini dijital çıkış pini olarak yapılandırdıktan sonra, digitalWrite () işlevini kullanarak giriş pininin durumunu okuyabiliriz:
int state;
state = digitalRead(GPIO_Pin);
Bu digitalWrite (), durumunu bilmek istediğiniz pin numarası olan bir giriş argümanını kabul eder. Bu işlev, dijital giriş pininin durumuna bağlı olarak mantık yüksek veya düşük döndürür.
Arduino kartının 1 ve 2 numaralı pinlerine iki LED bağlanır. basma düğmesi Arduino kartının 0 numaralı pinine bağlıdır.
Basma Düğmesi Arayüzü
Basma düğmesi temel olarak iki LED'i kontrol etmek veya iki LED'i açmak / kapatmak için kullanılır. basma düğmesine basıldığında. Her iki LED de yanıyor ve bir düğmeye basılmadığında LED'ler sönük kalıyor. Akım sınırlama direnci olarak her iki LED ile iki direnç seri olarak bağlanmıştır.
Aşağı Çekme Direnci
Butonun bir tarafı 5 voltluk kaynak ile bağlanır ve diğer tarafı 10k ohm direnç ile toprağa bağlanır. Basma düğmesine basılmadığında, pin 0 için giriş olarak bir mantık düşük kullanılır ve basma düğmesine basıldığında, mantık yüksek pin 0 girişi olarak kullanılır.
Not: Basma düğmeli 10k Ohm direnç, aşağı çekme direnci olarak kullanılır. Basmalı düğmeyi bırakır bırakmaz dijital giriş mantığının durumunu düşük hale getirecektir, aksi takdirde dijital giriş sıfırda kayan bir durum görünecektir.Arduino ayrıca dahili bir aşağı çekme direncine sahiptir. Bu eğitimin sonraki bölümünde, Arduino'nun dahili çekme direncini kullanarak basma düğmesinin nasıl kullanılacağını göreceğiz. Harici direnç ihtiyacını ortadan kaldıracaktır.
Her iki durumun devre şemaları, basma düğmesine basılmadığında aşağıda Simülasyon şeması gösterilmektedir :
Bu şema, basma düğmesine basıldığında çıkışı gösterir. Gördüğünüz gibi her iki LED de yanıyor.
Yukarıdaki devrenin kodu aşağıda verilmiştir. Bu kodu Arduino yazılımına kopyalayın.
int buttonStatus; // Variable declare to store status of digitalWrite
void setup()
{
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(0, INPUT);
}
void loop()
{
buttonStatus = digitalRead(0);
if (buttonStatus == HIGH)
{
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
}
else
{
digitalWrite(1, LOW);
digitalWrite(2, LOW);
}
}
Kod Nasıl Çalışır?
Arduino ile buton kullanımının programlanmasını anlamak için, Öncelikle giriş fonksiyonunu ve kullanımını bilmeniz gerekir. Giriş işlevinin açıklaması aşağıda verilmiştir:
pinMode (pin numarası, GİRİŞ):Aynı işlev, pimi bir giriş pini olarak bildirmek için kullanılır. Burada GİRİŞ bağımsız değişken bir giriş pimi olarak belirtilen pin numarası bildirmek için kullanılır. Örneğin pinMode (0, INPUT) işlevi pin 0'ı bir giriş pini olarak bildirir.
digitalRead (pin numarası):digitalRead fonksiyonu, giriş pininin durumunu okumak için kullanılır, pin mantık seviyesinde yüksek veya mantık seviyesinde düşüktür. Bu işlevin çıktısı, uygulamanıza göre diğer işlevleri gerçekleştirmek için kullanılabilecek başka bir değişkende saklanır.
digitalWrite (pin numarası, YÜKSEK / DÜŞÜK):digitalWrite işlevi, çıkışın mantıksal yüksek veya mantık düşük olduğu belirtilen pin numarasında yazmak veya çıktı almak için kullanılır.
İlk olarak, butonun durumunu saklamak için kullanılacak bir tamsayı değişkeni tanımlarsınız.
int buttonStatus; // Variable declare to store status of digitalWrite()
Kurulum işlevinin içinde, pinMode () rutinini kullanarak dijital pin 1 ve 2'yi çıkış pinleri olarak yapılandırıyoruz. Benzer şekilde, dijital pini sıfırı bir giriş pini olarak ilan ediyoruz.
void setup()
{
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(0, INPUT);
}
Bildiğiniz gibi Arduino taslağında, tekrar tekrar çalışan her şey döngü işlevinin içine yerleştirilir. Loop () içinde, önce digitalRead () işlevini kullanarak pinin sıfır durumunu kontrol ederiz ve pinin durumunu "buttonstate" değişkenine kaydederiz.
Bundan sonra durum "buton durumu" değişkenini kontrol etmek için koşul kullanılırsa. Koşul doğruysa, digitalWrite () dijital çıkış pinlerini yüksek aktif hale getirir ve aksi takdirde bu çıkış pinleri düşük aktif kalır.
void loop()
{
buttonStatus = digitalRead(0);
// if button pressed execute next instructions
// other execute instructions under else block
if (buttonStatus == HIGH)
{
digitalWrite(1, HIGH); // Set pin_1 active high
digitalWrite(2, HIGH); //// Set pin_2 active high
}
else
{
digitalWrite(1, LOW); // Set pin_1 active low
digitalWrite(2, LOW); // Set pin_2 active low
}
}
Basma Düğmesi
Son örnekte, basma düğmeli harici bir direnç kullandık. Ancak Arduino ayrıca dahili Pull-Up özelliği de sunar. PinMode () kullanarak dahili Pull-Up'ı yapılandırabiliriz.
Bu hat, arduino'nun dahili pull-up direncini etkinleştirecek ve Arduino ile doğrudan bir butona arayüz oluşturabiliyoruz.
// Make pin 2 digital input with internal pull-up resistor enabaled
pinMode(2,INPUT_PULLUP);
Devre Şeması
Bu şemada Arduino'nun dijital pin 2'si ile sadece bir buton bağladık ve Arduino'nun 13. pinine bağlı on board led'i kullanacağız.
Bu, LED'i basma düğmesi ve dahili çekme direnci ile kontrol etmek için örnek bir koddur.
void setup() { pinMode(13,OUTPUT); pinMode(2,INPUT_PULLUP);// put your setup code here, to run once: } void loop() { if(digitalRead(2)==LOW) { digitalWrite(13,HIGH); } else digitalWrite(13,LOW); }
Bahadır ÖZGEN Electronic Robotic Coding Research and Development 1975 - ∞ Learn Forever If you want, let's learn together... https://roboticcode2020.blogspot.com/ bahadirozgen1975@gmail.com facebook robotic.code instagram @roboticcode
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.