10 Kasım 2026 Salı


Programlama Kodları

//AÇIKLAMA
//Bu uygulamada gaz konsantrasyonu ppm hesabı klasördeki konuda anlatılan
//1. yöntemdeki gibi grafik okuma ile yapılacaktır. Sensöre çakmak gazı verdikten sonra
//çıkan değerlerin ppm karşılıklarını grafikteki LPG doğrusunu kullanarak bulacağız.
//DİKKAT: Sensörün ısınması için, enerji verdikten sonra en az 5 dk ya da daha uzun süre 
//beklenmelidir.

#define MQ2_pin A0
int V_besleme = 5;
float adim_volt = 0.00488;  //Volt
int adim_deger;
float V_out;
int RL = 1000; //ohm
float Rs_hava, Rs_gaz, Ro;
float Rs_Ro_orani;

void setup()
{
  Serial.begin(9600);
  Serial.println("Ro referans değeri belirleniyor. Lütfen bekleyin...");
  delay(2000);
  adim_deger = analogRead(MQ2_pin);
  V_out = adim_volt * adim_deger;
  Rs_hava = ((V_besleme - V_out) / V_out) * RL;
  Ro = Rs_hava / 9.8;
  Serial.print("Ro referans değeri = "); Serial.print(Ro); Serial.println(" olarak belirlendi. Artık gaz ölçümü yapılabilir.");
  delay(2000);
}

void loop()
{
  adim_deger = analogRead(MQ2_pin);
  V_out = adim_volt * adim_deger;
  Serial.print("V_out = ");   Serial.print(V_out);  Serial.print(" | ");

  Rs_gaz = ((V_besleme - V_out) / V_out) * RL;
  Rs_Ro_orani = Rs_gaz / Ro;
  Serial.print("Rs_gaz = ");  Serial.print(Rs_gaz); Serial.print(" | ");
  Serial.print("Ro = ");  Serial.print(Ro); Serial.print(" | ");
  Serial.print("Rs_gaz/Ro = "); Serial.println(Rs_Ro_orani);

  delay(1000);
}



Devre Şeması



9 Kasım 2026 Pazartesi


Programlama Kodları

//AÇIKLAMA
//Bu uygulamada DO pini kullanılarak ortamda çakmak gazı olup olmadığı tespit edildi.
//Ortamda gaz yoksa DO pininden HIGH, gaz varsa LOW değeri okundu.
//DİKKAT: Sensörün ısınması için, enerji verdikten sonra en az 5 dk ya da daha uzun süre 
//beklenmelidir.

#define MQ2_pin 8

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

void loop()
{
  if (digitalRead(MQ2_pin))
  {
    Serial.println("Ortamda Gaz Yok. Hava Temiz.");
  }
  else
  {
    Serial.println("DİKKAT!!! Gaz Algılandı!!!");
  }
  delay(1000);
}



Devre Şeması



7 Kasım 2026 Cumartesi

MQ2 Gaz-Duman Sensörü


MQ2 sensörü, MQ ailesinin en popüler sensörlerinden biridir. Bir tür MOS (Metal Oxide Semiconductor - Metal Oksit Yarı İletken) sensörüdür. Bu tür sensörlere, belirli gazlarla temas ettiklerinde elektriksel dirençlerini değiştirerek çalıştıkları için, kimyasal direnç sensörleri de denir. Temel olarak, kalay dioksit (SnO2), op-amp ve gerekli destekleyici bileşenlerden oluşur.

MQ2 gaz sensörü 5 volt DC güçle çalışır ve yaklaşık 800 milliwatt enerji tüketir. Sensör, LPG (sıvılaştırılmış petrol gazı), duman, alkol, propan, hidrojen, metan ve karbonmonoksit gibi gaz türlerini, havadaki konsantrasyonları milyonda 200 ile 10.000 ppm arasında olduğunda tespit edebilir. Sensörün direnci, gazın türüne bağlı olarak farklılık gösterir.


5 Kasım 2026 Perşembe


Uygulama Açıklaması




Bir önceki uygulamada sensörün renklere göre verdiği değerler aşağıdaki gibidir:

Kırmızı :R=256 G = 202 B = 185

Yeşil :R=184 G = 256 B = 196

Mavi :R=146 G = 226 B = 255

Sarı :R=267 G = 297 B = 233

Cyan :R=197 G = 278 B = 281

Magenta:R=256 G = 220 B = 244


4 Kasım 2026 Çarşamba


Programlama Kodları

//AÇIKLAMA
//Bu uygulamada sensör renkleri okur, ham değerleri alır. Ardından 
//gerçek RGB değerlerine denk gelen değerler hesaplanır.

#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensor_out 8

int red_ham = 0;
int green_ham = 0;
int blue_ham = 0;

//Bir önceki uygulamada her renk için, sensörü nesneye en yakın (rengin en yoğun 
//olduğu durum) şekilde tutarak minimum değeri ve siyah bir yüzeye (rengin hiç 
//olmadığı durum) tutarak maksimum değeri kaydetmiştik. Şimdi burada bu değerleri kullanacağız. 
int red_min = 27;
int red_max = 187;
int green_min = 46;
int green_max = 195;
int blue_min = 29;
int blue_max = 144;

int R, G, B;

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

  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensor_out, INPUT);

  //sensörün çıkış frekansını %20 olarak ölçeklendirme
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
}

void loop()
{
  //kırmızı renk okuma
  red_ham = kirmizi_ham_oku();
  R = map(red_ham, red_min, red_max, 255, 0);
  delay(200);

  //yeşil renk okuma
  green_ham = yesil_ham_oku();
  G = map(green_ham, green_min, green_max, 255, 0);
  delay(200);

  //mavi renk okuma
  blue_ham = mavi_ham_oku();
  B = map(blue_ham, blue_min, blue_max, 255, 0);
  delay(200);

  Serial.print("R = ");  Serial.print(R);     Serial.print(" | ");
  Serial.print("G = ");  Serial.print(G);     Serial.print(" | ");
  Serial.print("B = ");  Serial.println(B);

}

int kirmizi_ham_oku()
{
  int ham;
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  ham = pulseIn(sensor_out, LOW);
  return ham;
}

int yesil_ham_oku()
{
  int ham;
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  ham = pulseIn(sensor_out, LOW);
  return ham;
}

int mavi_ham_oku()
{
  int ham;
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  ham = pulseIn(sensor_out, LOW);
  return ham;
}



Devre Şeması




3 Kasım 2026 Salı


Programlama Kodları

//AÇIKLAMA
//Bu uygulamada sensör renkleri okur ve ham değerler seri port ekranına yazdırılır.

#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensor_out 8

int red_ham = 0;
int green_ham = 0;
int blue_ham = 0;

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

  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensor_out, INPUT);

  //sensörün çıkış frekansını %20 olarak ölçeklendirme
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
}

void loop()
{
  //kırmızı renk okuma
  red_ham = kirmizi_ham_oku();
  delay(200);

  //yeşil renk okuma
  green_ham = yesil_ham_oku();
  delay(200);

  //mavi renk okuma
  blue_ham = mavi_ham_oku();
  delay(200);

  Serial.print("Kırmızı = ");  Serial.print(red_ham);     Serial.print(" | ");
  Serial.print("Yeşil = ");    Serial.print(green_ham);   Serial.print(" | ");
  Serial.print("Mavi = ");     Serial.println(blue_ham);

}

int kirmizi_ham_oku()
{
  int ham;
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  ham = pulseIn(sensor_out, LOW);
  return ham;
}

int yesil_ham_oku()
{
  int ham;
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  ham = pulseIn(sensor_out, LOW);
  return ham;
}

int mavi_ham_oku()
{
  int ham;
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  ham = pulseIn(sensor_out, LOW);
  return ham;
}



Devre Şeması



2 Kasım 2026 Pazartesi

TCS3200 / TCS230 Renk Sensörü

Renk sensörleri, karmaşık otomasyon sorunlarına daha güvenilir çözümler sunar. Gıda ve içecek, otomotiv ve imalat sanayi, giyim imalat sektöründe kumaşın rengini tespit etmek gibi çeşitli sektörlerde malzeme tespiti, parçalar üzerindeki renk işaretlerinin tespiti, üretim sürecindeki adımların doğrulanması gibi amaçlarla kullanılırlar. Pahalı renk sensörleri endüstriyel uygulamalarda kullanılırken, TCS3200/TCS230 renk sensörü gibi ucuz sensörler daha az katı gereksinimlere sahip uygulamalar için kullanılabilir.

TCS3200 renk sensörü, üzerindeki foto diyotlar aracılığıyla gördüğü rengi algılayıp çıkış veren bir sensördür. TCS3200, bir nesnenin yansıttığı veya yaydığı ışığın rengini ölçmek için tasarlanmıştır. Dalga boylarına bağlı olarak çok çeşitli renkleri algılayabilir. Sensör, TCS3200 ya da TCS230 olarak adlandırılır.




1 Kasım 2026 Pazar


Bu programda Proteus'ta Atmega328P'ye bağlı ledlerin sırayla yakıp söndürme işlemleri yapılmıştır.


Programlama Kodları

void setup() 
{
  pinMode(8,OUTPUT); //Arduino pin8   = ATMEGA328 PB0
  pinMode(9,OUTPUT); //Arduino pin9   = ATMEGA328 PB1
  pinMode(10,OUTPUT); //Arduino pin10 = ATMEGA328 PB2
  pinMode(11,OUTPUT); //Arduino pin11 = ATMEGA328 PB3
  pinMode(12,OUTPUT); //Arduino pin12 = ATMEGA328 PB4
  pinMode(13,OUTPUT); //Arduino pin13 = ATMEGA328 PB5
}

void loop() 
{
  digitalWrite(8,HIGH);//HIGH yerine 1 yazılabilir.
  delay(500);
  digitalWrite(8,LOW); //LOW yerine 0 yazılabilir.
  digitalWrite(9,HIGH);
  delay(500);
  digitalWrite(9,LOW);
  digitalWrite(10,HIGH);
  delay(500);
  digitalWrite(10,LOW);
  digitalWrite(11,HIGH);
  delay(500);
  digitalWrite(11,LOW);
  digitalWrite(12,HIGH);
  delay(500);
  digitalWrite(12,LOW);
  digitalWrite(13,HIGH);
  delay(500);
  digitalWrite(13,LOW);
}



Devre Şeması




Atmega32u4 Mikrodenetleyici Özellikleri


ATmega32u4, Atmel (günümüzde Microchip) firması tarafından üretilen, AVR RISC mimarisine sahip 8-bitlik yüksek performanslı bir mikrodenetleyicidir. Onu standart Arduino Uno'da kullanılan popüler ATmega328P işlemcisinden ayıran en büyük ve en kritik özellik, dâhili (Native) USB Desteğine sahip olmasıdır. Klasik kartlarda bilgisayarla haberleşmek için harici bir USB-Serial dönüştürücü çip (CH340 veya ATmega16U2 gibi) gerekirken, ATmega32u4 bu yeteneği doğrudan kendi içinde barındırır.






Teknik Özellikleri

  • Çekirdek Mimarisi: 8-bit AVR RISC.

  • Çalışma Voltajı: 5V (Bazı özel model ve klonlarda 3.3V sürümleri de bulunur).

  • Saat Hızı (Clock Speed): 16 MHz.

  • Flash Bellek: 32 KB (Bunun 4 KB kısmı bootloader için kullanılır).

  • SRAM (RAM): 2.5 KB (ATmega328P'ye göre daha geniş bir RAM alanı sunar)

  • EEPROM: 1 KB

  • Dijital Giriş/Çıkış Pinleri: Toplamda 20 pindir. Modeline göre değişmekle birlikte Leonardo/Pro Micro standardında 20 pindir. 

  • PWM (Darbe Genişlik Modülasyonu) Pinleri: 7 adet.

  • Analog Giriş Pinleri: 12 adet (10-bit çözünürlüğe sahip zengin analog kanal desteği).

  • Donanımsal İletişim Arayüzleri: 1 adet UART (Seri Haberleşme), 1 adet I2C, 1 adet SPI.

  • 135 güçlü komut.

  • 32 x 8 Genel Amaçlı register.

  • Yazma/Silme Döngüleri: 10.000 (Flash) / 100.000 (EEPROM).

  • Yazılım güvenliği için programlama kilidi.

  • 12 Mbit/s ve 1,5 Mbit/s'ye kadar veri aktarım hızları.

  • USB Veri Yolu Sıfırlama (Bus Reset) algılandığında CPU sıfırlama imkânı.

  • 10-bit yüksek hızlı Zamanlayıcı/Sayıcı.

  • 10-bit ADC.

  • Dahili analog karşılaştırıcı.

  • Dahili sıcaklık sensörü

  • Pin değişiminde kesme (interrupt) ve uyandırma (wake-up) özelliği.

  • Altı Farklı Uyku Modu: Boşta (Idle), ADC Gürültü Azaltma (ADC Noise Reduction), Güç Tasarrufu (Power-save), Güç Kapatma (Power-down), Bekleme (Standby) ve Genişletilmiş Bekleme (Extended Standby).


ATmega32u4'ü öne çıkaran en büyük avantaj USB HID (Klavye & Fare Simülasyonu) özelliğine sahip olmasıdır. ATmega32u4 işlemcisini kullanan kartlar (örneğin Arduino Leonardo veya Arduino Pro Micro), doğrudan USB protokolünü desteklediği için bilgisayara takıldıklarında sıradan bir seri aygıt olarak görünmezler. Bilgisayar onları doğrudan bir Klavye, Fare (Mouse) veya Oyun Kumandası (Joystick) olarak algılar. Kod yazarak bilgisayarınıza otomatik klavye tuşları bastırabilir, fare imlecini hareket ettirebilirsiniz.

ATmega32u4 kompakt yapısına rağmen Uno'ya kıyasla daha fazla analog pin (12 adet) ve daha geniş SRAM (2.5 KB) sunar. Dahili USB nedeniyle, bazen kod yüklerken kartın portu anlık olarak değişebilir. Yükleme sırasında sorun yaşanırsa, kart üzerindeki reset butonuna doğru zamanda basmak gerekebilir.

NOT: Eğer projeniz sadece sensörlerden veri okuyup ekrana yazmakla kalmayacak, aynı zamanda bilgisayarı klavye veya fare gibi yönlendirecekse, kalbinde ATmega32u4 taşıyan bir kart (Leonardo veya Pro Micro) seçmeniz doğru olur. 


Block Diagramı
























31 Ekim 2026 Cumartesi

Arduino


Arduino Nedir?

Arduino, açık kaynaklı bir mikrodenetleyici platformudur. En basit tanımıyla üzerine bağlanan sensörlerden (sıcaklık, ışık, mesafe vb.) aldığı verileri işleyen ve bu verilere göre motorları, ışıkları veya ekranları kontrol edebilen "küçük bir bilgisayar beyni" dir.

Açık kaynaklı olması, kartın tasarım planlarının herkese açık olduğu anlamına gelir. Bu sayede hem orijinal İtalyan üretimi kartları hem de farklı firmaların ürettiği daha uygun fiyatlı "klon" kartları piyasada bulmak mümkündür.


Çeşitli Arduino Modelleri

1. Arduino Uno -R3


İşlemci: ATmega328P (8-bit)

Çalışma Voltajı / Saat Hızı: 5V, 16 MHz

Giriş/Çıkış: 14 Dijital (6 PWM), 6 Analog Giriş

Bellek: 32 KB Flash, 2 KB SRAM, 1 KB EEPROM

Özellik ve Kullanım Alanı: En popüler ve standart Arduino modelidir. Genellikle eğitim, hobi projeleri ve prototipleme için temel kart olarak kullanılır. Üzerinde tak-çıkat kılıfta (veya SMD) ATmega328P bulunur.



30 Ekim 2026 Cuma


Programlama Kodları

//AÇIKLAMA
//Bu uygulamada okutulan kartın belirlediğimiz kart UID'si ile aynı olup olmadığını test ettik.
//Aynıysa doğru, aynı değilse yanlış ifadesini seri port ekanına yazdırdık.

#include<SPI.h>
#include<MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9

MFRC522 rfid(SS_PIN, RST_PIN);

String kart_ID = "6934CE06";
String okunan_ID = "";
int i;

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  Serial.println("MIFARE Classic Kart/Etiket Bekleniyor...");
}

void loop()
{
  //__________________________________Kart/Etiket kontrolü_______________________________
  //If'in içerisinde return kullanmamızın nedeni: If içi 1(true) olduğunda programın, loop
  //döngüsünün başına gitmesini sağlamak içindir.
  if (!rfid.PICC_IsNewCardPresent())  //Yeni bir kart/etiket algılanıp algılanmadığını kontrol eder.
  {
    return;
  }

  if (!rfid.PICC_ReadCardSerial())  //Kartın/etiketin UID (Benzersiz Kimlik)’sinin okunup okunamadığını belirler.
  {
    return;
  }
  Serial.println("Kart/Etiket Algılandı.");

  okunan_ID = ""; //Stringi boşalt.

  //__________________UID'yi bayt bayt okuma, birleştirme, büyük harfe çevirme____________________
  for (i = 0; i < 4; i++)
  {
    if (rfid.uid.uidByte[i] < 0x10)
    {
      okunan_ID += "0";   // Tek haneli sayıların başına 0 ekleme.
    }
    okunan_ID.concat(String(rfid.uid.uidByte[i], HEX)); //"rfid.uid.uidByte[i]" komutuyla sayı olarak okuduğumuz baytı, HEX'e çevir ve ardından String yap. ardından, "concat" komutu ile okunan_ID stringinin son haliyle birleştir. for döngüsü ile bu durumu 4 sefer tekrarla.
  }

  okunan_ID.toUpperCase();  //büyük harfe çevir. kart_ID değişkenindeki harfler büyüktür. Ancak üstteki komutla HEX e dönüştürüldüğünde UID içerisindeki harfler küçülür. bu nedenle büyük harfe çevirme işlemi yapıldı.
  Serial.print("Kart UID: ");   Serial.println(okunan_ID);


  //__________________Okunan UID ile tanımlanan ID'yi karşılaştır____________________
  if (kart_ID == okunan_ID)
  {
    Serial.println("Okunan UID DOĞRU.");
    delay(1000);
  }
  else
  {
    Serial.println("Okunan UID YANLIŞ!.");
    delay(1000);
  }

  rfid.PCD_StopCrypto1(); //okuyucu (PCD) ile kart/etiket(PICC) arasındaki şifreli iletişimi (Crypto1) güvenli bir şekilde kapat.

}



Devre Şeması




Seri Port Ekran Görüntüsü




Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörler ve Aygıtların Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com