Ders 3 - Arduino ile butondan değer okuma ve buton ile led yakma
Herkese merhabalar.Bu projede, arduino devremize bağlayacağımız bir butondan değer okuyup led yakacağız.Basit gibi görünen bu projeyi yaparken.
input yani devreye bilgi girişi kavramını
değişken kavramını
seri monitör ekranı kavramını
eğer ise - değilse gibi kodlama kavramlarını kullanıp bilgi sahibi olacağız.
Hazırsak dersimize başlayalım Tinkercad.com adresine bağlanıp giriş yaptıktan sonra, circuits bölümünden “yeni devre oluştur” sekmesine gelip çalışmamıza istediğimiz bir isim veriyoruz.
Devremize arduino , breadboard, led, buton ve iki adet direnç ekliyoruz.
Devreye eklediğimiz butonu yakından inceleyecek olursak.Fare ile üzerine geldiğinizde alt kısmında Terminal 1a ve Terminal 2a, üst bölümde ise Terminal 1b ve Terminal 2b uçlarının olduğunu göreceksiniz.
Burada dikkat etmeniz gereken yer butonun görevini yerine getirebilmesi için biz alt uçları yani a terminallerini kullanacağız.
Butonun kablo bağlantılarını gerçekleştirelim.
Arduinonun 5V çıkışından butonun Terminal 1a girişine taşıdığımız enerji, eğer butona basılırsa Terminal 2a dan çıkarak bağladığımız direnç üzerinden geçerek GND hattına yani toprağa ulaşacak. Bu hattın içine 6 nolu dijital kapıya giden bir bağlantı ekledik. Bu bağlantıyı kodlarımızda input (giriş) olarak tanımlayıp ,kodlayacağız. Bu sayede butona basılıp basılmadığını buradan denetlemiş olacağız.
Led bağlantılarını da yaparak fiziksel kurulumu tamamlayalım.
Kod penceresinde “ Blok + Metin” seçeneğini seçelim ve hazır gelen kodu silerek kodlamaya geçelim.
Değişkenler sekmesinden “ Değişken Oluştur” butonuna tıklayalım ve gelen diyalog penceresine oluşturacağımız değişkenin ismini verip tamam diyelim.
Değişken oluşturma işi tamamlandı.Peki neden bir değişken kullanıyoruz? Devremizde butonun aldığı değere göre şekillenen bir algoritma mevcut.Buton açık ise Led yanacak , değilse led sönecek. Yani butonun aldığı değer değişiyor bu durumda da değişken kullanmamız gerekiyor.
“Buton değerini 0 değerine ayarla” bloğunu kod alanına sürükledikten sonra “giriş” sekmesinden “0 sayısal pinini oku” komutunu sıfır yazan bölüme ekliyoruz. Sayısal pini ise 6 olarak işaretliyoruz.Böylece 6 nolu sayısal pinden gelen bilgileri buton değişkenine aktarmış oluyoruz.
Denetleme başlığında “Eğer ise - Değilse “ komutunu kod bloğu alanına ekledik.
Matematik sekmesinden arı peteği şeklindeki 1 < 1 butonunu sürükleyip ortadaki operatör bölümünü eşittir ( = ) olarak değiştiriyoruz.
Bu eşitlik bloğunun bir tarafına değişkenler sekmesinden “buton” yazan simgeyi diğer tarafına ise matematik sekmesinden “YÜKSEK” simgesini sürükleyip bırakıyoruz.
Eğer bloğunun ilk bölümüne, Butona basılı olduğunda yani buton değişkeni YÜKSEK (HIGH) değeri aldığında olması gereken kodları tek tek ekliyoruz. Butona basıldığında 10 nolu pin yüksek değeri alacak yani bu pine bağlı led yanacak.
Seri monitöre bilgi çıkışı sağlayabilmek için çıkış sekmesinden “hello world seri monitörüne” kelimeleri ile başlayan bloğu sürükleyip “hello world” kısmını silip “Buton Acik” yazıyoruz.
Denetleme sekmesinden “1 saniye bekle” komutunu sürükledikten sonra içerisini 0.2 saniye olarak değiştiriyoruz.
Eğer bloğunun ikinci, yani “değilse” bölümünde kodlarımızı algoritmaya uygun biçimde düzenliyoruz. Ledin sönmesi için 10 nolu pini ”Alçak” değeriyle,seri monitörü bölümünü ise “Buton Kapalı” şeklinde yeniden düzenliyoruz.
Devremizin fiziksel kurulumu ve kodlama bölümü bitti. Kodların son halini gözden geçirip bir kez daha kontrol edelim ve yorumlayalım.
********************************************************
int buton = 0; //buton adında bir değişken oluşturduk ve ilk değerine sıfır verdik
void setup()
{
pinMode(6, INPUT); //6 nolu kapıyı giriş olarak tanımladık.
pinMode(10, OUTPUT); // 10 nolu kapıyı çıkış olarak tanımladık.
Serial.begin(9600); // seri monitörün çalışması için başlangıç ayarı yaptık.
}
void loop()
{
buton = digitalRead(6); // 6 nolu kapıyı okuyarak bu değeri buton değişkenine aktardık
if (buton == HIGH) { // Eğer buton değişkenine HIGH değeri geliyorsa
digitalWrite(10, HIGH); //10 nolu kapıyı HIGH yapacak ve led yanacak.
Serial.println("Buton Acik"); //seri monitöre Buton Açık yazılacak.
delay(200); // bekle 200 millisecond(s)
} else {
digitalWrite(10, LOW); //üstteki durum yoksa led sönecek.
Serial.println("Buton Kapali"); //seri monitöre Buton Kapalı yazılacak.
delay(200); // bekle 200 millisecond(s)
}
}
****************************************
Kod penceresini kapatarak “Simülasyonu Başlat” tuşunu kullanarak devrenin nasıl çalıştığını gözlemleyelim.
Devre istediğimiz gibi çalıştığına göre projemizi bitirebiliriz. Bir dersimizin daha sonuna geldik.Bir sonraki derste görüşmek dileğiyle hoşça kalın.
Bu dersin tinkercad adresi : https://www.tinkercad.com/things/1Wxi7trJF6R