Arduino İle 128×64 Grafik LCD Ekran (wg12864a) Bağlantı Şeması

Merhabalar Arkadaşlar,

Bu yazımızda 128×64 Grafik ekranların bağlantı şemasına kısaca değiniyor olacağız.

128×64 Grafik Ekran Nedir? Ne İçin Kullanılır?

128×64 Grafik ekranlar, bize çalışabileceğimiz toplamda 8.192 hücre ile istediğimiz görüntüyü bu ekranlara yazdırabilmemizi sağlayan komponentlerdir. 5V DV güç kaynağı ile doğrudan beslemek en mantıklısı olacaktır. Zira güç tüketimi açısından arduino kartın 5V çıkışına bağlamak da bir çözümdür elbette. Ancak bu tip komponentlerin güç tüketimleri biraz yüksek olabileceği için geliştirme aşamasından sonra devreyi kullanma öncesinde harici ve düzenli bir 5V kaynağa bağlamak daha doğru olacaktır.

Üretici firmanın datasheet’ine de buradan ulaşabilirsiniz.

Bağlantı Şeması

Yukarıdaki grafikte de görüldüğü üzere toplam 20 pinimizi de hiçbiri boşta kalmayacak şekilde doldurarak ve ilgili pinlere bağlantılarını yaparak bağlıyoruz.

Burada dikkat edilmesi gereken iki husus;

  1. 18. pin ve 3. pinin bağlantıları 10 KOhm değerinde bir potansiyometre ile yapılıyor. Yani potansiyometrenin bir bacağına 18. pin giriyor (sağ sol farketmez. Ancak orta bacak olmamalı). Orta bacağına 3. pinden gelen bağlantı giriyor ve son olarak da 1. pinden gelen bağlantı aynı potansiyometrenin boşta kalan bacağına değerek 20. pin ile birleşip GND (cansız/toprak) uca bağlanıyor. Bu bağlantı, LCD ekranımızın parlaklık ayarını kendimiz kalibre edebilmemiz için son derece önemli.
  2. 19. pinden çıkan uç yaklaşık 220-330 Ohm ortalamalarında bir direnç ile seri bir şekilde bağlanarak 5V çıkışına gidiyor. Burada eğer direk 5V verir isek hemen veya bir süre sonra LCD ekranımız zarar görebilecektir.

Aslında özü itibari ile bağlantı şemamız bu kadar. Eğer hiçbir pini boş bırakmayıp, şekildeki gibi bağlantıları yaparsanız, LCD ekranınızın çalıştığını göreceksiniz.

128×64 LCD Ekranın detaylı kullanımı ile ilgili ayrıca bir yazıyı da kapsamlı projeler kısmında belirtiyor olacağız.

Herkese iyi çalışmalar…

Arduino Push Buton İle Led Yakma Devresi

Merhaba Arkadaşlar. Bu sefer yine basit bir kullanım yazısı ile karşınızdayız. Bu devre ile elektronik kartlarda çok kullanılan push buton kullanımını öğreniyor olacağız. Bu devreye başlarken bir konuya açıklık getirmemiz gerekiyor. Öncelikle bu devrede neden bir direnç ile “kısa devre” benzeri bir bağlantı yaptık ondan bahsetmek istiyorum.

Push butonun ikinci bacağı (arduino pinine gelen çıkış bacağı diyebiliriz) üzerine bir de paralel olarak bir dirençli GND bağlantısı yaptık. Bu bağlantının amacı, butona bastıktan ve çektikten sonra butonun o bacağında kalan statik elektriği (veya parazitte diyebiliriz) topraklamak. Direnç kullanmamızın sebebi ise butona basıldığında bütün akımın GND’ye doğrudan giderek kısa devre yapmasını engellemek.

Özellikle bu konudan bahsetmek istedim. Sonrasında bu devreyi kullanarak ve geliştirerek ardunio üzerinden her türlü buton ile haberleşme ve işlem yaptırma becerisini kodunuzu geliştirerek siz de sağlayabilirsiniz. Elbette daha ilerleyen zamanda arduino ile yapacağımız kompleks projelerde de bu butona ve farklı işlevlerine yer veriyor olacağız.

Şimdi isterseniz devre elemanlarımızı kısaca tanımaya geçelim.

  • Arduino Uno kartı
  • 1 adet Led
  • 1 adet Push buton
  • 1 adet 330ohm direnç
  • 6 adet dişi > erkek jumper kablo

Devre şemamızı da aşağıdaki şekilde oluşturabiliriz. Dilerseniz siz bunu bir board üzerinde de yapabilirsiniz.

Evet aslında devremizin şeması bu kadar basit. Ancak burada bağlantılara kesinlikle dikkat etmemiz gerekiyor. Aksi taktirde kısa devre, vs… olması kaçınılmaz olacaktır. Devremizdeki direncin sebebini de yukarıda anlattığımız üzere kullanmamazlık etmeyelim.

Bu işlem için herhangi bir kütüphaneye ihtiyacımız yok. Sadece dijital okuma ve yazma fonksiyonlarını kullanarak devremizi takip edeceğiz. Şimdi öncelikle pinlerimizi tanımlayarak başlayalım.

int ledPin = 8;
int inPin = 2;
int val = 0;

Ve Setup fonksiyonumuza geçelim ve giriş ve çıkış pinlerimizi tanımlayalım.

void setup() {
  pinMode(inPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

Veee sıra geldi loop kısmına. Yani kodumuzun asıl çalışacağı ve yorumlamayı asıl yapacağımız kısıma.

void loop(){

  val = digitalRead(inPin);
  
  if (val == 1)
  {
    digitalWrite(ledPin, HIGH);
    delay(1000);
  }
  else
  {
    digitalWrite(ledPin, LOW);
  }
}

Burada gördüğünüz üzere inPin (buton) değişkenimizden gelen değeri okuduk ve eğer “1” ise yani sinyal geldi ise digitalWrite() fonksiyonunu başlatarak ledPin olarak belirlediğimiz sekizinci pinimize sinyal gönderdik ve hemen altında bu sinyali 1000 milisaniye yani tam 1 saniye tuttuk. Ardından tekrar loop() devam ederken kodumuz tekrar okumada tekrar bir basma görmediği için bu sefer “else” kısmına giriş yaparak çıkış gerilimini keserek ledimizi söndürdü.

Bu işlemin sonunda oluşturduğumuz devrede, butona basılı tuttuğumuz sürece yanık duran ve bıraktığımızda da maksimum 1 saniye içerisinde sönen bir push buton ile kontrol edilen led devresi yapmış olduk.

Push Buton İle Led Yakma Devresi Kodunun Tamamı

int ledPin = 8;
int inPin = 2;
int val = 0;

void setup() {
  pinMode(inPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop(){

  val = digitalRead(inPin);
  
  if (val == 1)
  {
    digitalWrite(ledPin, HIGH);
    delay(1000);
  }
  else
  {
    digitalWrite(ledPin, LOW);
  }
}
Arduino İle I2C Modülü Kullanımı

Merhaba Arkadaşlar. Bu yazıda sizlere 16×2 LCD ekrandan çıkan yaklaşık 10-12 kabloyu aslında 4 basit kabloya indirecek bir devre kartından bahsetmek istiyorum. Bu devrenin adı i2c (i kare c).

I2C Ne İşe Yarar?

Aslında bu sorunun cevabı basit. LCD ekranımız için gerekli olan 16 adet çıkışı kendi üzerindeki kontrol entegresi ve devresi ile sadece 4 adete indirerek, gelen sinyali kendisi yorumlar ve yine 16 pin ile haberleşecek şekilde LCD ekranımıza gönderir.

I2C Kartı Görseli

İşte aslında bu kadar basit bir kart. Ancak elbette içeriği o kadar da basit olmasa gerek. Peki bu I2C kartı nasıl bağlanıyor? Nasıl veri gönderiliyor?

İsterseniz bu sorunun cevabına örnek bir bağlantı şeması ve devamında oraya yazı göndereceğimiz bir ekran ile yanıt veriyor olalım.

Arduino – I2C Bağlantı Şeması

Gördüğünüz üzere pin bağlantılarımız görseldeki gibi;

  • SCL => Analog 4 Pinine (A4)
  • SDA => Analog 5 Pinine (A5)
  • VCC => +5V Pinine
  • GND => GND Pinine

Bu şekilde bağlantılarımızı yaptıktan sonra gelelim kodumuza ve ekrana iki satır olarak yazdıracağımız “Merhaba Dunya” koduna. Bir kodu ilk defa çalıştırıyorsak “Merhaba Dünya” adettendir bilen bilir. 🙂

Arduino – I2C Ekranına Yazı Yazdırma Kodları

Öncelikle her zaman olduğu gibi kütüphanelerimizi ekleyerek başlayalım. Burada “FaBoLCD_PCF8574” kütüphanesini kullanarak I2C’nin ekrana yazı yazdırmasını sağlıyor olacağız. Öncelikle Kütüphanemizi tanımlıyoruz. (Kütüphaneyi yazının en sonundaki linkten indirebilirsiniz.)

#include <virtuabotixRTC.h>

Şimdi de gelelim değişkenlerimizi tanımlamaya.

FaBoLCD_PCF8574 lcd;

Evet işlem bu kadar basit aslında. LCD değişkenimizi tanımladık ve şimdi sıra setup fonksiyonumuzda. Burada da aslında tek satırda I2C ekranımızın ölçülerini veriyor olacağız.

void setup(void) {
  lcd.begin(16, 2);
}

Şimdi de sıra geldi son loop() fonksiyonumuzda işlemlerimizi yapmaya ve tabii ki sonlandırmaya.

void loop(void) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Merhaba");

  lcd.setCursor(1, 0);
  lcd.print("Dunya");

  delay(5000); //Burada 5 saniye bekliyoruz ki ekran sürekli pır pır etmesin diye...
}

İşte işlemimiz bu kadar basit. Zaten I2C’nin asıl kullanıdığı port olan A4 ve A5 portu kendi kütüphanesinde kayıtlı olduğundan ekstra pinleri göstermemize gerek kalmadı.

İşte bu şekilde projemize enerji verip yüklemeyi tamamladıktan sonra ekranda yazının belirdiğiniz görüyor olacaksınız.

Arduino I2C Örnek Kullanımı Kodları – Tamamı

#include <virtuabotixRTC.h>

FaBoLCD_PCF8574 lcd;

void setup(void) {
  lcd.begin(16, 2);
}

void loop(void) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Merhaba");

  lcd.setCursor(1, 0);
  lcd.print("Dunya");

  delay(5000); //Burada 5 saniye bekliyoruz ki ekran sürekli pır pır etmesin diye...
}

FaBo_212_LCD_PCF8574 Kütüphanesini indirmek için tıklayın.

Arduino İle Sıralı Led Yakma Devresi

Burada basit bir led kullanım örneği göreceğiz. Öncelikle komponentlerimize geçelim isterseniz.

  • Arduino Uno veya en az 5 girişli arduino kartı
  • 5 adet led
  • 10 adet dişi > erkek jumper kablo

Şemamız aşağıdaki gibi

Gördüğünüz gibi ledlerin tüm GND (-) bacakları ortaklaşıp tek bir GND çıkışına giriyor. Onun dışındaki tüm bacaklar sırasıyla 2-3-4-5-6 girişlerine giriyor. Böylece artık arduinodaki dijital çıkışlar ile ledlerimizi tetiklemiş olacağız.

Şimdi değişkenlerimize ve tanımlarımıza gelelim.

int led_kirmizi = 2;
int led_mavi = 3;
int led_yesil = 4;
int led_sari = 5;
int led_beyaz = 6;

int hareket_hizi_ms = 1000;

Setup kısmında ise dijital çıkışlarımızı tanımlayalım ve arduinomuza bunu bildirelim.

void setup() {

  pinMode(led_kirmizi, OUTPUT);
  pinMode(led_mavi, OUTPUT);
  pinMode(led_yesil, OUTPUT);
  pinMode(led_sari, OUTPUT);
  pinMode(led_beyaz, OUTPUT);
  
}

Bundan sonra işlem sadece loop kısmını yazmaya geldi.

void loop() {

  digitalWrite(led_kirmizi, HIGH);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, HIGH);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, HIGH);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, HIGH);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, HIGH);
  delay(hareket_hizi_ms);
}

İşte bu şekilde artık belirttiğimiz gibi 1000 ms yani 1 saniye ara ile sıralı olarak bir ledimiz yanacak ve 1 saniye sonra o sönüp hemen yanındaki şeklinde devam edecek.

Arduino İle Led Kullanımı ve Sıralı Led Yakma Devresi Kodları Tamamı

int led_kirmizi = 2;
int led_mavi = 3;
int led_yesil = 4;
int led_sari = 5;
int led_beyaz = 6;

int hareket_hizi_ms = 1000;

void setup() {

  pinMode(led_kirmizi, OUTPUT);
  pinMode(led_mavi, OUTPUT);
  pinMode(led_yesil, OUTPUT);
  pinMode(led_sari, OUTPUT);
  pinMode(led_beyaz, OUTPUT);
  
}

void loop() {

  digitalWrite(led_kirmizi, HIGH);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, HIGH);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, HIGH);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, HIGH);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, HIGH);
  delay(hareket_hizi_ms);
}
DHT11 Sıcaklık ve Nem Ölçme Sensörü Kullanımı

Ardunio ile proje geliştirirken ilk başlarda en çok denenen, çünkü güncel hayatta da direk karşılığı olan bir komponenti ele alacağı bu sefer. DHT11 Sıcaklık ve Nem Ölçme Sensörü. Bu sensörün ana işlevi, üzerindeki pinden gelen değer ile bulunduğu ortamın sıcaklığını ve nemini ölçesidir.

Öncelikle şunu belirtelim. Bu kategorideki tüm makaleler tamamen komponentlerin genel kullanımlarını göstermek içindir. Zamanla her bir komponent ve hatta birden fazla komponent ile kompleks devreler yapmayı da görüyor olacağız ve bu konuda paylaşımlarımız da olacak.

Kullanım devresi için gerekli komponentlerimize bir göz atalım isterseniz.

  • Ardunio Uno veya en az 1 dijital giriş pinine sahip ardunio kartı
  • 1 adet DHT11 sıcaklık ölçer komponent
  • 3 adet dişi > erkek jumper kablo

Şimdi şemamıza bakalım.

İşte deneme için bağlantımız bu kadar basit. Kısaca yazacak olur isek;

DHT11’i karşımıza aldığımız zaman bize göre;

  • En sol bacak => 5V
  • 2. bacak => 2. giriş pinine
  • En son (sağ) bacak ise => GND

Bağlantımız yaptıktan sonra kütüphanemizi ekleyecek ve pinimizi tanımlayacağız. Ama öncelikle eğer elinizde doğru dht11 kütüphanesi yok ise buraya tıklayarak indirip kullanabilirsiniz.

Şimdi gelelim kütüphanemizi ve değişkenimizi tanımlamaya.

#include <dht11.h>
int dht11_digital_pin = 2;

dht11 DHT11;

Gördüğünüz gibi “dht11_digital_pin = 2” diyerek ikinci girişin dht pinine ait giriş olduğunu belirtmiş olduk. Şimdi setup kısmında Serial Monitörümüzü açalım ve devam edelim.

void setup(void) {
  Serial.begin(9600);
}

Şimdi de okuma kodumuzu yazalım.

loop()
{
  int chk = DHT11.read(DHT11PIN);
  Serial.println(chk);

  float temperature = DHT11.temperature;
  float humidity = DHT11.humidity;

  Serial.println("Sıcaklık:");
  Serial.println(temperature);
  Serial.println("Nem:");
  Serial.println(humidity);

  delay(10000);
}

İşte burada da gördüğünüz gibi tam olarak celcius (C) cinsinden sıcaklık değerini ve yüzde (%) olarak nem değerini artık okuyabiliyor ve 10 saniye aralıkla yenilenmesini sağlayarak işlemimizi tamamlıyoruz.

İşte kodumuzun tamamı aşağıdaki gibi.

Arduino DHT11 İle Sıcaklık ve Nem Ölçme Devresi

#include <dht11.h>
int dht11_digital_pin = 2;

dht11 DHT11;

void setup(void) {
  Serial.begin(9600);
}

loop()
{
  int chk = DHT11.read(DHT11PIN);
  Serial.println(chk);

  float temperature = DHT11.temperature;
  float humidity = DHT11.humidity;

  Serial.println("Sıcaklık:");
  Serial.println(temperature);
  Serial.println("Nem:");
  Serial.println(humidity);

  delay(10000);
}

Arduino İle Ses Sensörü Çalıştırma

Bu yazıda sizlere ardunio ile dışarıdan gelen sesi algılama ve algıladığımız anı serial monitörde görüntüleme konusunu anlatıyor olacağız. Örnek projeler serisine başladığımızda da yine sitemizde yer alacak olan “ses-sensoru” etiketi altından tüm projelere ulaşabileceksiniz.

Öncelikle bu proje için hiçbir özel kütüphane kullanmayacağımızı belirtmek isteriz. Çünkü sensörün dijital çıkışından gelen sinyali okuyacağımız için “digitalRead()” metodu burada bizim için yeterli olacak.

Gelelim bu deneme esnasında bize gerekli olacak ekipmanlara.

  • Ardunio Uno veya minimum 1 girişli bir ardunio kartı
  • 1 Adet ses sensörü
  • 3 adet dişi > erkek jumper kablo

Şimdi dilerseniz ses sensörümüzün doğru bağlantısına bir göz atalım.

Gördüğünüz gibi bağlantımız bu kadar basit. Kısaca bağlantı bacaklarımız aşağıdaki gibi.

  • + => 5V
  • G (veya GND) => GND
  • DO => 2. pin

Bağlantımızı doğru şekilde yaptıktan sonra aşağıdaki gibi setup kısmında girişimizi tanımlıyor ve serial monitörümüzü başlatıyoruz. Ama öncelikle değişkenimizi tanımlayalım ki ses sensörü hangi bacaktan gelecek bilelim.

int ses_sensoru = 2;

Şimdi de setup kodumuz.

void setup() {
  Serial.begin(9600);
  pinMode(ses_sensoru, INPUT);
}

Şimdi loop kısmında da aşağıdaki şekilde bir her seferinde 2. pini kontrol ediyor ve eğer bir ses var ise gelen rakam “1” olacağı için serial monitörümüze yazdırıyoruz.

void loop() {
 
  int sensor_durumu = digitalRead(ses_sensoru);
  Serial.println(sensor_durumu);

}

İşte aslında kodumuz bu kadar. Kodumuzun çıktısını serial monitörden takip ettiğimizde her ses algılama anında “1” rakamını göreceğiz.

Unutmayın, bu sadece sensörün çalışması durumu. Bunu istediğimiz gibi özelleştirebiliriz. Zira daha sonra bununla ilgili sizler ile birden fazla örnek proje de paylaşıyor olacağız.

Arduino İle Ses Sensörü Kullanım Devresi Kodu Tamamı

int ses_sensoru = 2;

void setup() {
  Serial.begin(9600);
  pinMode(ses_sensoru, INPUT);
}

void loop() {
 
  int sensor_durumu = digitalRead(ses_sensoru);
  Serial.println(sensor_durumu);

}

Arduino Ses Sensörü Hassasiyet Ayarı

Burada önemli noktalardan bir tanesi de hassasiyet ayarı yapmak. Eğer devreyi çalıştırdığınızda hiçbir ses çıkarmadan sürekli “1” yazısı alıyor veya ne ses çıkarırsanız çıkartın “0” alıyor iseniz, emin olun sensörünüzün hassasiyet ayarı oldukça bozuk demektir.

Solda görmüş olduğunuz kırmızı ile belirtilen komponentin adı Ayarlı Direnç’tir. Bu direncin üzerindeki vida gibi görünen başlığı ince uçlu bir tornavida ile alt tarafındaki ışık sürekli yanıyor ise sönene, sönük halde ise hafiften yanana kadar getir. Daha sonra da istediğiniz ses şiddetini aldığında yanacak şekilde ince ayar yapın.

Daha sonra devrenizi güzel bir şekilde kurmuş olacaksınız.