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.

TM1637 7Digits Display Led Kullanımı ve Devresi

TM1637 entegresi ve kütüphanesi kullanarak bir ileri sayım devresi yapacağız. Öncelikle devrede kullanılacak elemanları aşağıdaki şekilde listeleyelim.

  • Arduino Uno veya en az 2 girişli bir Arduino kartı
  • 4-DigiLED Display Kartı
  • 4 Adet dişi > erkek jumper kablo

Şimdi gelelim devremizin basit şemasına;

Evet kısaca şöyle sıralayabiliriz;

  • VCC çıkışı => 5V
  • GND çıkışı => GND
  • DIO çıkışı => 2. pin
  • CLK çıkışı => 3. pin

Şimdi gelelim kütüphanemizi ekleyerek projemizi yazmaya.

Öncelikle TM1637 sınıfı için bu kütüphaneyi indirip kullanabilirsiniz.

#include "TM1637.h"
     
#define DIO 2
#define CLK 3
TM1637 tm1637(CLK,DIO);

int saat[] = {0,0,0,0};

Gördüğünüz gibi değişkenlerimizi ve CLK ve DIO portlarımızı tanımladık. Şimdi sıra geldi Setup içerisinde yapacaklarımıza.

  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;

Burada parlaklık ve renk ayarlaması yaptık. Şimdi kodumuzu yazalım.

void loop()
{
  while (1 > 0)
  {    
    arttir();
    
    tm1637.display(0, saat[0]);
    tm1637.display(1, saat[1]);
    tm1637.display(2, saat[2]);
    tm1637.display(3, saat[3]);
  
    delay(100); 
  }
}

Burada “saat” dizi değişkenini istediğimiz şekilde arttırabiliriz. Ancak tabii ki öncelikle arttir fonksiyonumuzu yazmamız gerekir. Bunun için aşağıdaki şekilde bir fonksiyonu projemizin en alt kısmına ekleyebiliriz.

int arttir()
{
  saat[3]++;
  
  if (saat[3] > 9)
  {
    saat[3] = 0;
    saat[2]++;
  }
  
  if (saat[2] > 9)
  {
    saat[2] = 0;
    saat[1]++;
  }
  
  if (saat[1] > 9)
  {
    saat[1] = 0;
    saat[0]++;
  }
  
  if (saat[0] > 9)
  {
    saat[0] = 0;
    saat[1] = 0;
    saat[2] = 0;
    saat[3] = 0;
  }
}

Gördüğünüz gibi burada her bir dijit için “> 9 ” kontrolü yapıyoruz. Eğer büyük ise o dijiti sıfırlıyor ve bir büyük ondalık dijiti +1 yaparak arttırıyoruz.

Eğer burada artış zaman kontrolünü yapmak istiyor isek bir üstteki (loop) fonksiyonun içerisindeki “++” ibareleri — yapabilir ve “> 9” ibaresini de “< 0” yaparak bu dönüşümü gerçekleştirebiliriz diye düşünüyorum. Eğer bir terslik olur ise yazarsanız yardımcı olmaya çalışırım elbette.

Şimdi kodumuzun tamamına gelelim.

TM1637 İle 7 DigiLED Kullanımı Kodunun Tamamı

#include "TM1637.h"
#define CLK 2//pins definitions for TM1637 and can be changed to other ports       
#define DIO 3
TM1637 tm1637(CLK,DIO);

int saat[] = {0,0,0,0};

void setup()
{
  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
}

void loop()
{
  while (1 > 0)
  {    
    arttir();
    
    tm1637.display(0, saat[0]);
    tm1637.display(1, saat[1]);
    tm1637.display(2, saat[2]);
    tm1637.display(3, saat[3]);
  
    delay(100); 
  }
}

int arttir()
{
  saat[3]++;
  
  if (saat[3] > 9)
  {
    saat[3] = 0;
    saat[2]++;
  }
  
  if (saat[2] > 9)
  {
    saat[2] = 0;
    saat[1]++;
  }
  
  if (saat[1] > 9)
  {
    saat[1] = 0;
    saat[0]++;
  }
  
  if (saat[0] > 9)
  {
    saat[0] = 0;
    saat[1] = 0;
    saat[2] = 0;
    saat[3] = 0;
  }
}
LM35 İle Sıcaklık Ölçüm Devresi

Arduino LM35, temel olarak bir sıcaklık ölçüm sensörüdür. Bu sensör ile -55 ile +150 derece arasındaki sıcaklıkları ölçebilirsiniz. Temel olarak 1 derecelik sıcaklık artışları sağlar ve her 1 derece sıcaklık artışında çıkış 10mV artmaktadır.

4 ila 30 Volt arasında gerilim ile beslendiğinde 60 mikro amperden daha az bir akım ile 0,5 derecelik ölçüm hassasiyetine sahiptir.

Bu komponentin okuması sırasında elde edeceğimiz değer mV cinsinden olacağı için bunu basit bir formül ile sıcaklık değerine çevirmemiz gerekecektir.

(okunacak_deger / 1023.0) x 5000;

İşte bu işlemin sonucunda celcius (C) cinsinden derecelendirilmiş şekilde sıcaklık değerimize ulaşacağız.

Bu devreyi uygular iken aşağıdaki devre elemanlarına ihtiyacımız olacaktır.

  • Arduino Uno, Mini Pro veya 1 analog çıkışa sahip arduino kartı
  • LM35 sıcaklık sensörü
  • 3 Adet dişi > erkek jumper kablo

Tüm bunlar tamam ise kısaca devre şemamızı aşağıdaki gibi belirtebiliriz.

Gördüğünüz gibi aslında bağlantımız bu kadar basit.

Gelelim devremizin işleyişine; 5 V ile çalışan sensörümüz yukarıda belirttiğimiz çalışma mantığına göre her bir derece için bize 10mV akım çıkışı sağlıyor. Bu sayede A0 ismindeki analog çıkışımızdan aldığımız gerilimi ölçerek yukarıdaki matematiksel işlem sonucunda değerimizi Arduino Serial Monitörde görüntüleyebiliriz.

Bunu için öncelikle programımıza aşağıdaki şekilde pin ve değişken tanımlarımızı yaparak başlıyoruz.

int lm35Pini = A0;
int okunan_deger = 0;
float sicaklik_gerilim = 0;
float sicaklik = 0;

Burada tanımlarımızı yaptıktan sonra analog bir giriş olduğunu bildirmek için arduinomuza aşağıdaki şekilde analogReferance ı ekliyoruz. Tabii ki Serial Monitörümüzü 9600 yenileme hızı ile de açmayı unutmayalım.

  analogReference(DEFAULT);
  Serial.begin(9600);   

Son olarak okuma ve okuduğumu değerlendirme işlemine geçelim.

  okunan_deger = analogRead(lm35Pini);
  sicaklik_gerilim = (okunan_deger / 1023.0) * 5000;
  sicaklik = sicaklik_gerilim /10.0;
  Serial.println(okunan_deger);
  Serial.println(sicaklik);
  delay(1000);

Gördüğünüz gibi işlemimiz tamam. Artık Arduinomuzu çalıştırıp gelen değeri Serial Monitörümüzde görüntüleyebiliriz.

LM35 Sıcaklık Sensörü Devresi – Kodun Tamamı

int lm35Pini = A0;
int okunan_deger = 0;
float sicaklik_gerilim = 0;
float sicaklik = 0;
 
void setup() {
  analogReference(DEFAULT);
  Serial.begin(9600);         
}
 
void loop() {
  okunan_deger = analogRead(lm35Pini);
  sicaklik_gerilim = (okunan_deger / 1023.0) * 5000;
  sicaklik = sicaklik_gerilim /10.0;
  Serial.println(okunan_deger);
  Serial.println(sicaklik);
  delay(1000);
}