Kodlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

🔌 Arduino Nedir? Nasıl Çalışır? Başlangıç Rehberi

🔌 Arduino Nedir? Nasıl Çalışır? Başlangıç Rehberi

🔌 Arduino Nedir? Nasıl Çalışır? Başlangıç Rehberi

Merhaba sevgili Arduino meraklıları! Elektronikle uğraşmaya yeni başlayan ya da sadece merak eden herkes için Arduino, harika bir başlangıç noktasıdır. Bu yazıda, Arduino'nun ne olduğunu, nasıl çalıştığını ve temel prensiplerini en basit haliyle anlatmaya çalışacağım. Hazırsanız, elektronik dünyaya adım atalım!

Arduino Nedir?

Arduino, kullanımı kolay bir donanım (hardware) ve yazılım (software) platformudur. Temelde, bir mikrodenetleyici (microcontroller) içeren bir geliştirme kartıdır. Bu kart sayesinde, sensörlerden veri okuyabilir, motorları kontrol edebilir, LED'leri yakıp söndürebilir ve aklınıza gelebilecek birçok elektronik projeyi gerçekleştirebilirsiniz. Arduino'nun en büyük avantajı, programlanmasının kolay olması ve geniş bir topluluğa sahip olmasıdır.

Arduino Nasıl Çalışır?

Arduino'nun çalışma prensibi oldukça basittir. Arduino kartı üzerinde bulunan mikrodenetleyici, kendisine yüklenen programı (sketch) çalıştırır. Bu program, Arduino'nun giriş (input) ve çıkış (output) pinlerini kontrol eder. Giriş pinleri, sensörlerden gelen verileri okumak için kullanılırken, çıkış pinleri ise LED'leri, motorları veya diğer elektronik bileşenleri kontrol etmek için kullanılır.

Temel Bileşenler

Bir Arduino kartı genellikle şu temel bileşenlerden oluşur:

  • Mikrodenetleyici (Microcontroller): Arduino'nun beyni olan bu çip, programınızı çalıştırır. Genellikle ATMega serisi mikrodenetleyiciler kullanılır.
  • Giriş/Çıkış Pinleri (I/O Pins): Sensörlerden veri almak veya elektronik bileşenleri kontrol etmek için kullanılır. Dijital (digital) ve analog (analog) olmak üzere iki tür pini bulunur.
  • USB Portu: Arduino'yu bilgisayara bağlamak ve program yüklemek için kullanılır. Aynı zamanda Arduino'ya güç de sağlayabilir.
  • Güç Girişi (Power Input): Arduino'yu harici bir güç kaynağı ile beslemek için kullanılır.
  • Reset Butonu: Arduino'yu sıfırlamak ve programı yeniden başlatmak için kullanılır.

Arduino ile İlk Proje: LED Yakıp Söndürme

Arduino ile yapılabilecek en basit projelerden biri, bir LED'i yakıp söndürmektir. Bu projeyi gerçekleştirmek için aşağıdaki adımları izleyebilirsiniz:

  1. Gerekli Malzemeler:
    • Arduino kartı (Örneğin, Arduino Uno)
    • LED
    • 220 ohm direnç (LED'i korumak için)
    • Jumper kablolar
  2. Devreyi Kurulumu: Aşağıdaki bağlantıları kullanarak devreyi kurun:
    • LED'in uzun bacağı (anot) -> 220 ohm direncin bir bacağı
    • 220 ohm direncin diğer bacağı -> Arduino'nun 13 numaralı dijital pini
    • LED'in kısa bacağı (katot) -> Arduino'nun GND (toprak) pini
  3. Programı Yazma: Arduino IDE'yi açın ve aşağıdaki kodu yazın:
    
    void setup() {
      // 13 numaralı pini çıkış olarak ayarla
      pinMode(13, OUTPUT);
    }
    
    void loop() {
      // 13 numaralı pini yüksek (HIGH) yap (LED'i yak)
      digitalWrite(13, HIGH);
      // 1 saniye bekle
      delay(1000);
      // 13 numaralı pini düşük (LOW) yap (LED'i söndür)
      digitalWrite(13, LOW);
      // 1 saniye bekle
      delay(1000);
    }
    
  4. Programı Yükleme: Arduino'yu bilgisayarınıza bağlayın, Arduino IDE'de doğru portu seçin ve programı yükleyin.
  5. Sonuç: LED'inizin 1 saniye aralıklarla yanıp söndüğünü göreceksiniz!

Arduino IDE Nedir?

Arduino IDE (Integrated Development Environment), Arduino programlarını yazmak, derlemek ve Arduino kartına yüklemek için kullanılan bir yazılımdır. Arduino'nun resmi web sitesinden ücretsiz olarak indirilebilir. IDE, basit ve kullanıcı dostu bir arayüze sahiptir ve yeni başlayanlar için idealdir.

Nereden Başlamalıyım?

Arduino ile başlamak için aşağıdaki kaynakları kullanabilirsiniz:

  • Arduino'nun Resmi Web Sitesi: Arduino hakkında detaylı bilgi, dokümantasyon ve örnek projeler içerir.
  • Arduino Kitleri: Yeni başlayanlar için hazırlanmış, gerekli malzemeleri ve projeleri içeren başlangıç kitleri mevcuttur.
  • Online Eğitimler: YouTube, Udemy gibi platformlarda Arduino ile ilgili birçok ücretsiz ve ücretli eğitim bulabilirsiniz.
  • Arduino Forumları ve Topluluklar: Sorularınızı sorabileceğiniz, deneyimlerinizi paylaşabileceğiniz ve projeleriniz için ilham alabileceğiniz birçok online topluluk bulunmaktadır.

Umarım bu yazı, Arduino'nun ne olduğunu ve nasıl çalıştığını anlamanıza yardımcı olmuştur. Unutmayın, elektronik dünyası sonsuz olasılıklarla dolu! Denemekten, öğrenmekten ve projeler üretmekten çekinmeyin. Başarılar dilerim!

Etiketler: arduino, elektronik, mikrodenetleyici, proje, başlangıç, led, kodlama, sensör, arduino ide

```

LCD Ekranlı Mini Oyun: Tahmin Etmece (Buton Kontrollü)

LCD Ekranlı Mini Oyun: Tahmin Etmece (Buton Kontrollü)

LCD Ekranlı Mini Oyun: Tahmin Etmece (Buton Kontrollü)

Herkese merhaba Arduino severler! Bugün, hem eğlenceli hem de öğretici bir projeye imza atacağız: LCD ekran ve butonlar kullanarak tahmin etmece oyunu geliştireceğiz. Bu proje sayesinde hem LCD ekran kullanımını, hem buton okumayı, hem de temel programlama mantığını pekiştireceğiz. Hazırsanız, malzemeleri hazırlayın ve kodlamaya başlayalım!

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • 16x2 LCD Ekran
  • 3 adet Buton
  • 10K Ohm Direnç (3 adet)
  • 10K Ohm Potansiyometre
  • Breadboard
  • Jumper Kablolar

Devre Şeması

Devremizi kurarken aşağıdaki bağlantıları dikkatlice yapalım:

  • LCD Ekran Bağlantıları:
    • LCD VSS pin -> Arduino GND
    • LCD VDD pin -> Arduino 5V
    • LCD VO (Contrast) pin -> Potansiyometrenin orta bacağı (Potansiyometrenin diğer iki bacağı 5V ve GND'ye bağlanacak)
    • LCD RS pin -> Arduino Pin 12
    • LCD Enable pin -> Arduino Pin 11
    • LCD D4 pin -> Arduino Pin 5
    • LCD D5 pin -> Arduino Pin 4
    • LCD D6 pin -> Arduino Pin 3
    • LCD D7 pin -> Arduino Pin 2
    • LCD A (Anode) pin -> Arduino 5V (direnç üzerinden bağlanabilir)
    • LCD K (Cathode) pin -> Arduino GND
  • Buton Bağlantıları:
    • Her bir butonun bir bacağı -> Arduino Dijital Pin 8, 9 ve 10 (sırasıyla)
    • Her bir butonun diğer bacağı -> GND (ve 10K Ohm direnç ile Arduino 5V'a pull-up yapılarak)

Açıklama: Butonlar, pull-up dirençler sayesinde normalde HIGH durumunda olacaklar. Butona basıldığında ise LOW sinyali Arduino'ya iletilecek.

Arduino Kodu

Şimdi de kod kısmına geçelim. Aşağıdaki kodu Arduino IDE'sine kopyalayın ve kartınıza yükleyin.


 #include <LiquidCrystal.h>

 // LCD pinleri
 const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
 LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

 // Buton pinleri
 const int buttonUpPin = 8;
 const int buttonDownPin = 9;
 const int buttonEnterPin = 10;

 int randomNumber;
 int guess;
 bool gameStarted = false;

 void setup() {
  lcd.begin(16, 2);
  pinMode(buttonUpPin, INPUT_PULLUP);
  pinMode(buttonDownPin, INPUT_PULLUP);
  pinMode(buttonEnterPin, INPUT_PULLUP);

  lcd.print("Tahmin Etmece!");
  lcd.setCursor(0, 1);
  lcd.print("Baslamak icin OK");
  randomSeed(analogRead(A0)); // Rastgele sayı üretimi için seed
 }

 void loop() {
  if (!gameStarted) {
   if (digitalRead(buttonEnterPin) == LOW) {
    startGame();
   }
  } else {
   checkButtons();
   displayGuess();
  }
 }

 void startGame() {
  gameStarted = true;
  randomNumber = random(1, 101); // 1 ile 100 arasında rastgele sayı
  guess = 50; // Başlangıç tahmini
  lcd.clear();
  lcd.print("Tahmin: ");
 }

 void checkButtons() {
  if (digitalRead(buttonUpPin) == LOW) {
   delay(100); // Buton debounce
   if (guess < 100) {
    guess++;
   }
  }
  if (digitalRead(buttonDownPin) == LOW) {
   delay(100); // Buton debounce
   if (guess > 1) {
    guess--;
   }
  }
  if (digitalRead(buttonEnterPin) == LOW) {
   delay(100); // Buton debounce
   checkGuess();
  }
 }

 void displayGuess() {
  lcd.setCursor(8, 0);
  lcd.print(guess);
  lcd.print("  "); // Sayıyı temizlemek için
 }

 void checkGuess() {
  if (guess == randomNumber) {
   lcd.clear();
   lcd.print("Tebrikler!");
   lcd.setCursor(0, 1);
   lcd.print("Bildiniz!");
   delay(2000);
   gameStarted = false;
   lcd.clear();
   lcd.print("Tekrar icin OK");
   lcd.setCursor(0, 1);
   lcd.print("Basin");


  } else if (guess < randomNumber) {
   lcd.clear();
   lcd.print("Daha Yuksek!");
   delay(1000);
   lcd.clear();
   lcd.print("Tahmin: ");
  } else {
   lcd.clear();
   lcd.print("Daha Dusuk!");
   delay(1000);
   lcd.clear();
   lcd.print("Tahmin: ");
  }
 }
 

Kodun Açıklaması

  • LiquidCrystal Kütüphanesi: LCD ekranı kullanabilmek için gerekli olan kütüphane.
  • Pin Tanımlamaları: LCD ve butonların bağlı olduğu pinler tanımlanıyor.
  • setup() Fonksiyonu: LCD ekran başlatılıyor, buton pinleri giriş olarak ayarlanıyor ve rastgele sayı üretimi için bir başlangıç değeri (seed) belirleniyor.
  • loop() Fonksiyonu: Oyunun ana döngüsü. Oyun başlamadıysa, "OK" butonuna basılmasını bekliyor. Oyun başladıysa, butonları kontrol ediyor ve tahmini ekrana yazdırıyor.
  • startGame() Fonksiyonu: Oyunu başlatıyor, rastgele bir sayı üretiyor ve ilk tahmini ayarlıyor.
  • checkButtons() Fonksiyonu: Butonlara basılıp basılmadığını kontrol ediyor.
  • displayGuess() Fonksiyonu: Mevcut tahmini LCD ekrana yazdırıyor.
  • checkGuess() Fonksiyonu: Tahminin doğru olup olmadığını kontrol ediyor ve kullanıcıya geri bildirim veriyor.

Oyunun Oynanışı

  1. Arduino'yu bilgisayarınıza bağlayın ve kodu yükleyin.
  2. LCD ekranda "Tahmin Etmece!" yazısı belirecek.
  3. Oyunu başlatmak için "OK" butonuna basın.
  4. Yukarı ve aşağı butonlarını kullanarak tahmininizi ayarlayın.
  5. Tahmininizden eminseniz, "OK" butonuna basın.
  6. Eğer tahmininiz doğruysa, "Tebrikler!" yazısı belirecek. Değilse, "Daha Yüksek!" veya "Daha Düşük!" uyarıları alacaksınız.
  7. Tekrar oynamak için "OK" butonuna basın.

İpuçları ve Geliştirme Fikirleri

  • Oyuna bir zorluk seviyesi ekleyebilirsiniz (örneğin, daha geniş bir sayı aralığı).
  • Oyuna bir can sayısı ekleyebilirsiniz (örneğin, kullanıcı 5 hakkı olduğunda kaybedecek).
  • LCD ekranda kalan can sayısını gösterebilirsiniz.
  • Skor tablosu ekleyerek en iyi skorları saklayabilirsiniz.

Umarım bu proje sizin için faydalı olmuştur. İyi eğlenceler ve kodlamalar!

Etiketler: Arduino, LCD, Buton, Tahmin Etmece, Oyun, Proje, Elektronik, Kodlama, Hobi, Öğrenme

```

Arduino Kontrollü Akıllı Masa Lambası: Ortam Işığına Göre Ayarlanabilir

Arduino Kontrollü Akıllı Masa Lambası: Ortam Işığına Göre Ayarlanabilir

Arduino Kontrollü Akıllı Masa Lambası: Ortam Işığına Göre Ayarlanabilir

Herkese merhaba Arduino severler! Bu yazımızda, etrafımızdaki ışık koşullarına göre parlaklığını otomatik olarak ayarlayan, akıllı bir masa lambası projesi geliştireceğiz. Bu proje hem Arduino'ya yeni başlayanlar için harika bir giriş olacak, hem de daha deneyimli kullanıcılar için keyifli bir uygulama örneği sunacak. Hazırsanız, malzemelere ve kodlamaya geçelim!

Neden Akıllı Masa Lambası?

Akıllı masa lambası, okuma, çalışma veya hobilerinizle uğraşırken gözlerinizi yormamak için ideal bir çözüm sunar. Ortamdaki ışık azaldığında lamba otomatik olarak parlaklığını artırır, ortam aydınlandığında ise parlaklığı kısar. Böylece, her zaman ideal bir aydınlatma seviyesine sahip olursunuz.

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • LDR (Işık Bağımlı Direnç)
  • 10k Ohm Direnç
  • Potansiyometre (10k Ohm idealdir)
  • LED (Yüksek parlaklığa sahip)
  • 220 Ohm Direnç (LED için)
  • Breadboard
  • Jumper kablolar

Devre Şeması ve Bağlantılar

Devremizi kurarken aşağıdaki bağlantı şemasına dikkat edelim:

  • LDR:
    • LDR'nin bir bacağı -> Arduino 5V (Vcc) pinine
    • LDR'nin diğer bacağı -> 10k Ohm direncin bir bacağına
    • 10k Ohm direncin diğer bacağı -> GND'ye
    • LDR ve 10k Ohm direncin birleştiği noktadan -> Arduino A0 pinine
  • Potansiyometre:
    • Potansiyometrenin bir ucu -> Arduino 5V'a (VCC)
    • Potansiyometrenin diğer ucu -> GND'ye
    • Potansiyometrenin orta ucu (silgi) -> Arduino A1 pinine
  • LED:
    • LED'in uzun bacağı (anot) -> 220 Ohm direncin bir bacağına
    • 220 Ohm direncin diğer bacağı -> Arduino Dijital 9 pinine (PWM pini)
    • LED'in kısa bacağı (katot) -> GND'ye

Arduino Kodu

Şimdi de Arduino kodumuza göz atalım. Bu kod, LDR'den gelen ışık değerini okuyacak, bu değeri potansiyometre ile ayarlanan hassasiyete göre ölçeklendirecek ve LED'in parlaklığını buna göre ayarlayacak.


 const int ldrPin = A0;
 const int potPin = A1;
 const int ledPin = 9;

 void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
 }

 void loop() {
  // LDR'den ışık değerini oku
  int ldrValue = analogRead(ldrPin);

  // Potansiyometreden hassasiyet değerini oku
  int potValue = analogRead(potPin);

  // Hassasiyet değerini 0-1023'ten 1-100 arasına ölçeklendir
  int sensitivity = map(potValue, 0, 1023, 1, 100);

  // Işık değerini 0-255 arasına ölçeklendir ve hassasiyet ile çarp
  int ledBrightness = map(ldrValue, 0, 1023, 255, 0); // Ters çevrildi çünkü düşük ışıkta daha parlak istiyoruz
  ledBrightness = constrain(ledBrightness * sensitivity / 100, 0, 255); // Hassasiyet ayarı ve sınırlama

  // LED'in parlaklığını ayarla
  analogWrite(ledPin, ledBrightness);

  // Seri monitöre değerleri yazdır (isteğe bağlı)
  Serial.print("LDR: ");
  Serial.print(ldrValue);
  Serial.print(", Pot: ");
  Serial.print(potValue);
  Serial.print(", Brightness: ");
  Serial.println(ledBrightness);

  delay(50); // Daha kararlı okumalar için kısa bir gecikme
 }
 

Kodun Açıklaması

  • ldrPin, potPin, ledPin: LDR, potansiyometre ve LED'in bağlandığı pinleri tanımlar.
  • setup(): Seri iletişimi başlatır ve LED pinini çıkış olarak ayarlar.
  • loop(): Sürekli olarak çalışan ana döngüdür.
    • analogRead(): LDR ve potansiyometreden analog değerleri okur.
    • map(): Değerleri farklı aralıklara ölçeklendirir. LDR değeri ters çevrilir (255'ten 0'a) çünkü düşük ışıkta LED'in daha parlak olmasını isteriz.
    • constrain(): LED parlaklığının 0 ile 255 arasında kalmasını sağlar. Hassasiyet ayarı bu noktada yapılır.
    • analogWrite(): LED'in parlaklığını PWM sinyali ile ayarlar.
    • Serial.print(): Değerleri seri monitöre yazdırır (isteğe bağlı, hata ayıklama için yararlı).
    • delay(): Kısa bir gecikme ekler.

Proje Nasıl Çalışır?

LDR, üzerine düşen ışık miktarına göre direnci değişen bir sensördür. Ortamdaki ışık azaldığında direnci artar ve Arduino A0 pinine daha düşük bir voltaj gönderir. Arduino, bu voltajı okuyarak ortamın ne kadar karanlık olduğunu anlar. Potansiyometre ise, sistemin hassasiyetini ayarlamanıza olanak tanır. Potansiyometre ile, ortam ışığındaki küçük değişikliklere lamba ne kadar tepki versin, onu belirleyebilirsiniz. Arduino, LDR ve potansiyometreden gelen verileri işleyerek, LED'in parlaklığını otomatik olarak ayarlar.

İpuçları ve İyileştirmeler

  • Kalibrasyon: LDR'nin hassasiyeti ortam ışığına göre değişebilir. Kodu çalıştırmadan önce farklı ışık koşullarında LDR'nin değerlerini kontrol edin ve `map()` fonksiyonundaki aralıkları buna göre ayarlayın.
  • Hassasiyet Ayarı: Potansiyometre ile hassasiyet ayarını deneyerek, farklı ışık koşullarına en uygun ayarı bulun.
  • LED Seçimi: Daha parlak bir LED kullanarak, daha iyi bir aydınlatma sağlayabilirsiniz. Ancak, LED'in akım gereksinimlerini dikkate alarak uygun bir direnç kullanmayı unutmayın.
  • Kasa Tasarımı: Devrenizi daha şık hale getirmek için 3D yazıcıda veya farklı malzemeler kullanarak özel bir kasa tasarlayabilirsiniz.
  • Renk Ayarı: RGB LED kullanarak, lamba rengini de ortam ışığına göre otomatik olarak ayarlayabilirsiniz.

Umarım bu proje size Arduino dünyasına keyifli bir giriş yapmanıza yardımcı olur. Herhangi bir sorunuz olursa, yorumlarda sormaktan çekinmeyin. İyi kodlamalar!

Etiketler: arduino, akıllı lamba, ortam ışığı, ldr, potansiyometre, led, proje, elektronik, kodlama, diy

```

Arduino ve RFID ile Kart Okuyucu Güvenlik Sistemi Geliştirme

Arduino ve RFID ile Kart Okuyucu Güvenlik Sistemi Geliştirme

Arduino ve RFID ile Kart Okuyucu Güvenlik Sistemi Geliştirme

Merhaba sevgili Arduino severler!

Bu yazımızda, Arduino kullanarak basit ama etkili bir RFID (Radyo Frekansıyla Tanımlama) kart okuyucu güvenlik sistemi geliştireceğiz. Bu proje hem Arduino'ya yeni başlayanlar için harika bir başlangıç noktası olacak, hem de daha deneyimli kullanıcılar için temel bir güvenlik sistemi prototipi oluşturma imkanı sunacak. Projemizde, yetkilendirilmiş kart okunduğunda bir LED'i yakacağız ve yetkisiz bir kart okunduğunda ise bir buzzer ile uyarı vereceğiz. Hazırsanız, haydi başlayalım!

Gerekli Malzemeler

İşe başlamadan önce ihtiyacımız olan malzemeleri gözden geçirelim:

  • Arduino Uno (veya benzeri bir Arduino geliştirme kartı)
  • RFID Okuyucu Modülü (RC522 yaygın olarak kullanılır)
  • RFID Kart veya Etiket
  • LED
  • Buzzer
  • 220 Ohm Direnç (LED için)
  • Jumper Kablolar
  • Breadboard (isteğe bağlı)

Bağlantılar

Şimdi de komponentlerimizi Arduino'ya nasıl bağlayacağımıza bakalım. Bu adımları dikkatlice takip edin:

  1. RFID Okuyucu Modülü Bağlantıları:
    • RST pin -> Arduino Dijital Pin 9
    • SDA pin -> Arduino Dijital Pin 10
    • MOSI pin -> Arduino Dijital Pin 11
    • MISO pin -> Arduino Dijital Pin 12
    • SCK pin -> Arduino Dijital Pin 13
    • VCC pin -> Arduino 3.3V
    • GND pin -> Arduino GND
  2. LED Bağlantısı:
    • LED'in uzun bacağı (anot) -> 220 Ohm direnç -> Arduino Dijital Pin 8
    • LED'in kısa bacağı (katot) -> Arduino GND
  3. Buzzer Bağlantısı:
    • Buzzer'ın pozitif (+) bacağı -> Arduino Dijital Pin 7
    • Buzzer'ın negatif (-) bacağı -> Arduino GND

Arduino Kodu

Bağlantıları tamamladıktan sonra, Arduino'muza yükleyeceğimiz kodu inceleyelim:


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

#define RST_PIN   9     // RFID modülünün RST pini
#define SDA_PIN   10    // RFID modülünün SDA pini
#define LED_PIN    8     // LED'in bağlı olduğu pin
#define BUZZER_PIN 7    // Buzzer'ın bağlı olduğu pin

MFRC522 mfrc522(SDA_PIN, RST_PIN); // MFRC522 sınıfının oluşturulması

// Yetkili kartın UID'si (Kartınızı okutup bu değeri öğrenmelisiniz)
byte validCard[4] = {0xDE, 0xAD, 0xBE, 0xEF}; // Örnek UID, kendi kartınızın UID'si ile değiştirin

void setup() {
  Serial.begin(9600);   // Seri iletişimi başlat
  SPI.begin();      // SPI iletişimi başlat
  mfrc522.PCD_Init();   // MFRC522 başlat
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  Serial.println("Kart Okuyucu Hazir!");
}

void loop() {
  // Yeni kart algılandı mı kontrol et
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Kart okundu mu kontrol et
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  Serial.print("Kart UID: ");
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  }
  Serial.println();

  // Kart UID'sini yetkili kart ile karşılaştır
  if (compareUID(mfrc522.uid.uidByte, validCard)) {
    Serial.println("Yetkili Kart!");
    digitalWrite(LED_PIN, HIGH); // LED'i yak
    noTone(BUZZER_PIN);          // Buzzer'ı sustur
    delay(2000);
    digitalWrite(LED_PIN, LOW);  // LED'i söndür
  } else {
    Serial.println("Yetkisiz Kart!");
    tone(BUZZER_PIN, 1000);      // Buzzer'ı çal
    delay(1000);
    noTone(BUZZER_PIN);          // Buzzer'ı sustur
  }

  // Kart okuma işlemini durdur
  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}

// Kart UID'lerini karşılaştırma fonksiyonu
bool compareUID(byte cardUID[], byte validUID[]) {
  for (byte i = 0; i < 4; i++) {
    if (cardUID[i] != validUID[i]) {
      return false;
    }
  }
  return true;
}

Açıklamalar:

  • Yukarıdaki kodu Arduino IDE'sine kopyalayın.
  • validCard dizisindeki örnek UID değerini, kullanmak istediğiniz yetkili kartın UID'si ile değiştirin. Kartınızın UID'sini öğrenmek için, yukarıdaki kodu UID karşılaştırma kısmını yorum satırı yaparak çalıştırıp seri port ekranından okuyabilirsiniz.
  • Arduino'nuzu bilgisayarınıza bağlayın ve doğru portu seçtiğinizden emin olun.
  • Kodu Arduino'nuza yükleyin.

Çalışma Mantığı

Kodumuz temel olarak şu adımları izler:

  1. RFID okuyucu başlatılır ve kart aranır.
  2. Eğer bir kart algılanırsa, kartın UID'si okunur.
  3. Okunan UID, önceden tanımlanmış yetkili kart UID'si ile karşılaştırılır.
  4. Eğer UID'ler eşleşirse, LED yakılır (yetkili kart).
  5. Eğer UID'ler eşleşmezse, buzzer çaldırılır (yetkisiz kart).

Sonuç

Tebrikler! Artık basit bir RFID kart okuyucu güvenlik sistemine sahipsiniz. Bu projeyi daha da geliştirmek için farklı özellikler ekleyebilirsiniz. Örneğin, yetkisiz kart okunduğunda bir log dosyası oluşturabilir, bir servo motor kullanarak kapı kilidi kontrolü yapabilir veya bir LCD ekran ile mesajlar gösterebilirsiniz.

Umarım bu rehber, Arduino ve RFID teknolojileriyle tanışmanız için faydalı olmuştur. Herhangi bir sorunuz olursa, yorumlar kısmından bana ulaşabilirsiniz. Bir sonraki projede görüşmek üzere!

Etiketler: Arduino, RFID, RC522, Güvenlik Sistemi, Kart Okuyucu, Proje, Elektronik, Kodlama

```

LCD Ekranlı Mini Oyun: Tahmin Etmece (Buton Kontrollü)

LCD Ekranlı Mini Oyun: Tahmin Etmece (Buton Kontrollü)

LCD Ekranlı Mini Oyun: Tahmin Etmece (Buton Kontrollü)

Merhaba sevgili Arduino severler!

Bugünkü projemizde, hem eğlenceli hem de öğretici bir uygulamaya imza atıyoruz: LCD ekranlı, buton kontrollü bir tahmin etmece oyunu! Bu proje, Arduino'nun basitliğini, LCD ekranların görsel gücünü ve butonların interaktifliğini bir araya getirerek keyifli bir deneyim sunacak. Hem elektronik bilginizi pekiştirecek hem de programlama becerilerinizi geliştireceksiniz. Hazırsanız, haydi başlayalım!

Projenin Amacı

Projemizin amacı, Arduino kullanarak rastgele bir sayı üretmek ve kullanıcının bu sayıyı butonlar aracılığıyla tahmin etmesini sağlamak. LCD ekran, kullanıcıya gerekli bilgileri (tahmin, ipucu, sonuç vb.) göstermek için kullanılacak. Böylece hem temel Arduino kavramlarını öğrenecek hem de basit bir oyun geliştirmenin keyfini çıkaracaksınız.

Gerekli Malzemeler

Bu projeyi gerçekleştirmek için aşağıdaki malzemelere ihtiyacınız olacak:

  • Arduino Uno (veya uyumlu bir kart)
  • 16x2 LCD Ekran
  • 3 adet Buton
  • 10K Ohm Potansiyometre (LCD kontrast ayarı için)
  • 220 Ohm Direnç (LCD backlight için)
  • 10K Ohm Direnç (Her bir buton için, pull-down direnci olarak)
  • Jumper Kablolar
  • Breadboard (tercihen)

Devre Şeması ve Bağlantılar

Devremizi kurarken aşağıdaki bağlantıları dikkatlice yapmanız gerekmektedir:

  • LCD Ekran Bağlantıları:
    • LCD VSS pini -> Arduino GND
    • LCD VDD pini -> Arduino 5V
    • LCD VO pini -> 10K Potansiyometre orta ucu (Potansiyometrenin diğer uçları GND ve 5V'a bağlanacak)
    • LCD RS pini -> Arduino Dijital Pin 12
    • LCD Enable pini -> Arduino Dijital Pin 11
    • LCD D4 pini -> Arduino Dijital Pin 5
    • LCD D5 pini -> Arduino Dijital Pin 4
    • LCD D6 pini -> Arduino Dijital Pin 3
    • LCD D7 pini -> Arduino Dijital Pin 2
    • LCD A (Backlight Anot) pini -> 220 Ohm Direnç üzerinden Arduino 5V
    • LCD K (Backlight Katot) pini -> Arduino GND
  • Buton Bağlantıları:
    • Buton 1 (Artış) -> Bir bacağı Arduino Dijital Pin 8'e, diğer bacağı 10K Ohm direnç üzerinden GND'ye ve aynı bacak 5V'a bağlanır.
    • Buton 2 (Azalış) -> Bir bacağı Arduino Dijital Pin 9'a, diğer bacağı 10K Ohm direnç üzerinden GND'ye ve aynı bacak 5V'a bağlanır.
    • Buton 3 (Onayla) -> Bir bacağı Arduino Dijital Pin 10'a, diğer bacağı 10K Ohm direnç üzerinden GND'ye ve aynı bacak 5V'a bağlanır.

Bağlantıları yaparken kabloların doğru pinlere takıldığından emin olun. Yanlış bağlantılar donanımınıza zarar verebilir.

Arduino Kodu

Şimdi de projemizin beyni olan Arduino koduna geçelim. Aşağıdaki kodu Arduino IDE'sine kopyalayın ve Arduino'nuza yükleyin.


#include <LiquidCrystal.h>

// LCD pinlerini tanımla
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// Buton pinlerini tanımla
const int buttonUp = 8;
const int buttonDown = 9;
const int buttonEnter = 10;

int randomNumber;
int guess = 1;
int attempts = 0;
bool gameStarted = false;

void setup() {
  // LCD ekranı başlat
  lcd.begin(16, 2);
  lcd.print("Tahmin Etmece!");

  // Buton pinlerini giriş olarak ayarla
  pinMode(buttonUp, INPUT_PULLUP);
  pinMode(buttonDown, INPUT_PULLUP);
  pinMode(buttonEnter, INPUT_PULLUP);

  randomSeed(analogRead(A0)); // Rastgele sayı üretimi için
}

void loop() {
  if (!gameStarted) {
    lcd.setCursor(0, 1);
    lcd.print("Basla icin ONAY");
    if (digitalRead(buttonEnter) == LOW) {
      startGame();
      delay(200);
    }
  } else {
    // Tahmini ekrana yazdır
    lcd.setCursor(0, 0);
    lcd.print("Tahmin: ");
    lcd.print(guess);
    lcd.print("  ");

    // Kalan hakkı ekrana yazdır
    lcd.setCursor(0, 1);
    lcd.print("Hakkınız: ");
    lcd.print(5 - attempts);
    lcd.print("  ");

    // Butonları oku
    if (digitalRead(buttonUp) == LOW) {
      guess++;
      if (guess > 100) guess = 1;
      delay(200);
    }
    if (digitalRead(buttonDown) == LOW) {
      guess--;
      if (guess < 1) guess = 100;
      delay(200);
    }
    if (digitalRead(buttonEnter) == LOW) {
      attempts++;
      checkGuess();
      delay(200);
    }
  }
}

void startGame() {
  randomNumber = random(1, 101); // 1-100 arasında rastgele sayı üret
  guess = 1;
  attempts = 0;
  gameStarted = true;
  lcd.clear();
}

void checkGuess() {
  if (guess == randomNumber) {
    lcd.clear();
    lcd.print("Tebrikler!");
    lcd.setCursor(0, 1);
    lcd.print("Bildiniz!");
    delay(2000);
    endGame(true);
  } else if (attempts >= 5) {
    lcd.clear();
    lcd.print("Kaybettiniz!");
    lcd.setCursor(0, 1);
    lcd.print("Sayi: ");
    lcd.print(randomNumber);
    delay(2000);
    endGame(false);
  } else {
    lcd.clear();
    if (guess < randomNumber) {
      lcd.print("Yukari!");
    } else {
      lcd.print("Asagi!");
    }
    delay(1000);
  }
}

void endGame(bool won) {
  gameStarted = false;
  lcd.clear();
  lcd.print("Tekrar?");
  lcd.setCursor(0, 1);
  lcd.print("ONAY ile BASLA");
  delay(1000);
}

Kodun Açıklaması

Yukarıdaki kodda şunları yaptık:

  • İlk olarak, LCD ekran ve butonlar için pinleri tanımladık.
  • `LiquidCrystal` kütüphanesini kullanarak LCD ekranı başlattık.
  • Buton pinlerini giriş olarak ayarladık ve pull-up dirençlerini etkinleştirdik.
  • `randomSeed()` fonksiyonu ile rastgele sayı üretimi için bir başlangıç değeri belirledik.
  • `loop()` fonksiyonunda, sürekli olarak butonları okuyarak kullanıcının tahminini aldık ve LCD ekranda güncelledik.
  • `checkGuess()` fonksiyonu ile kullanıcının tahminini kontrol ettik ve sonuca göre LCD ekranda mesajlar gösterdik.
  • `startGame()` ve `endGame()` fonksiyonları ile oyunu başlatıp bitirdik.

Sonuç

Tebrikler! Artık LCD ekranlı, buton kontrollü bir tahmin etmece oyununa sahipsiniz. Bu proje, Arduino'nun temellerini öğrenmek ve elektronik projeler geliştirmek için harika bir başlangıç noktasıdır. Kodu inceleyerek ve değiştirerek projenizi daha da geliştirebilirsiniz. Örneğin, zorluk seviyesini ayarlayabilir, farklı mesajlar gösterebilir veya oyuna yeni özellikler ekleyebilirsiniz.

Umarım bu proje size ilham vermiştir ve Arduino dünyasına adım atmanıza yardımcı olmuştur. Bir sonraki projede görüşmek üzere!

Etiketler: Arduino, LCD, Buton, Oyun, Tahmin Etmece, Elektronik, Proje, Kodlama

```

Arduino ile Şifreli Kapı Kilidi (Keypad ve Servo Motor Kullanarak)

Arduino ile Şifreli Kapı Kilidi (Keypad ve Servo Motor Kullanarak)

Arduino ile Şifreli Kapı Kilidi (Keypad ve Servo Motor Kullanarak)

Merhaba sevgili Arduino severler!

Bu yazımızda, Arduino kullanarak basit ama etkili bir şifreli kapı kilidi projesi geliştireceğiz. Projemizde bir tuş takımı (keypad) ve bir servo motor kullanacağız. Bu proje, hem Arduino'nun temel prensiplerini anlamanıza yardımcı olacak hem de elektronik ve programlama becerilerinizi geliştirmenizi sağlayacak.

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • 4x4 Tuş Takımı (Keypad)
  • Servo Motor (SG90 gibi küçük bir servo yeterli olacaktır)
  • Breadboard
  • Jumper Kablolar
  • Güç Kaynağı (Arduino için)

Devre Şeması ve Bağlantılar

Şimdi de devremizi nasıl kuracağımıza göz atalım. Aşağıdaki bağlantıları dikkatlice uygulayın:

Tuş Takımı (Keypad) Bağlantısı

Tuş takımı bağlantıları Arduino pinlerine aşağıdaki gibi yapılmalıdır:

  • Tuş takımının 1. pini -> Arduino Dijital Pin 2
  • Tuş takımının 2. pini -> Arduino Dijital Pin 3
  • Tuş takımının 3. pini -> Arduino Dijital Pin 4
  • Tuş takımının 4. pini -> Arduino Dijital Pin 5
  • Tuş takımının 5. pini -> Arduino Dijital Pin 6
  • Tuş takımının 6. pini -> Arduino Dijital Pin 7
  • Tuş takımının 7. pini -> Arduino Dijital Pin 8
  • Tuş takımının 8. pini -> Arduino Dijital Pin 9

Servo Motor Bağlantısı

Servo motorun bağlantıları ise şu şekilde olmalıdır:

  • Servo Motor Sinyal pini (genellikle sarı veya turuncu) -> Arduino Dijital Pin 10
  • Servo Motor VCC pini (genellikle kırmızı) -> Arduino 5V
  • Servo Motor GND pini (genellikle kahverengi veya siyah) -> Arduino GND

Arduino Kodu

Aşağıdaki Arduino kodunu Arduino IDE'sine kopyalayın ve kartınıza yükleyin. Kodu açıklayarak anlamanızı kolaylaştıracağım:


 #include <Keypad.h>
 #include <Servo.h>

 const byte ROWS = 4; //dört satır
 const byte COLS = 4; //dört sütun

 char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
 };

 byte rowPins[ROWS] = {2, 3, 4, 5}; //Satır pinleri
 byte colPins[COLS] = {6, 7, 8, 9}; //Sütun pinleri

 Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

 Servo myservo;  // Servo nesnesi oluştur

 const int servoPin = 10;
 String password = "1234"; // Şifremiz
 String enteredPassword = "";

 void setup() {
  Serial.begin(9600);
  myservo.attach(servoPin);  // Servoyu pin 10'a bağla
  myservo.write(0); // Başlangıç pozisyonu (kilitli)
 }

 void loop() {
  char key = keypad.getKey();

  if (key){
   Serial.println(key);
   enteredPassword += key;

   if(enteredPassword.length() == password.length()){
     if(enteredPassword == password){
       Serial.println("Şifre doğru!");
       // Kilidi aç
       myservo.write(90); // Servoyu 90 dereceye getir (kilidi aç)
       delay(3000); // 3 saniye açık tut
       myservo.write(0); // Servoyu geri getir (kilidi kapat)
       enteredPassword = ""; // Şifreyi sıfırla
     } else {
       Serial.println("Şifre yanlış!");
       enteredPassword = ""; // Şifreyi sıfırla
     }
   }
  }
 }
 

Kod Açıklaması:

  • #include <Keypad.h> ve #include <Servo.h>: Gerekli kütüphaneleri ekliyoruz.
  • const byte ROWS = 4; const byte COLS = 4;: Tuş takımımızın boyutlarını tanımlıyoruz.
  • char keys[ROWS][COLS] = {...};: Tuş takımındaki tuşların dizilimini belirtiyoruz.
  • byte rowPins[ROWS] = {2, 3, 4, 5}; byte colPins[COLS] = {6, 7, 8, 9};: Satır ve sütun pinlerini tanımlıyoruz.
  • Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );: Keypad nesnesini oluşturuyoruz.
  • Servo myservo;: Servo motor için bir nesne oluşturuyoruz.
  • const int servoPin = 10;: Servo motorun bağlı olduğu pini belirtiyoruz.
  • String password = "1234";: Doğru şifreyi tanımlıyoruz. Bu kısmı istediğiniz gibi değiştirebilirsiniz.
  • String enteredPassword = "";: Girilen şifreyi tutacak değişkeni tanımlıyoruz.
  • setup() fonksiyonu: Seri haberleşmeyi başlatıyor, servo motoru bağlıyor ve başlangıç pozisyonuna getiriyoruz.
  • loop() fonksiyonu: Sürekli olarak tuş takımından giriş bekliyor, girilen şifreyi kontrol ediyor ve doğruysa kilidi açıyor.

Projenin Çalışması

Devreyi kurduktan ve kodu yükledikten sonra, seri monitörü açarak tuş takımından şifreyi girmeye başlayabilirsiniz. Doğru şifreyi girdiğinizde, servo motor harekete geçerek kilidi açacaktır. Yanlış şifre girdiğinizde ise, "Şifre yanlış!" mesajını göreceksiniz.

Geliştirme İmkanları

Bu proje oldukça basit bir başlangıç noktası. Projeyi daha da geliştirmek için şunları yapabilirsiniz:

  • Farklı bir servo motor kullanarak daha güçlü bir kilit mekanizması oluşturabilirsiniz.
  • LCD ekran ekleyerek girilen şifreyi ve diğer bilgileri görüntüleyebilirsiniz.
  • RFID okuyucu ekleyerek şifre yerine kartla da kilidi açma özelliği ekleyebilirsiniz.
  • Alarm sistemi entegre ederek yetkisiz giriş denemelerinde alarm çalmasını sağlayabilirsiniz.

Umarım bu proje size Arduino ile ilgili yeni şeyler öğretmiştir. İyi eğlenceler!

Etiketler: Arduino, Şifreli Kapı Kilidi, Keypad, Servo Motor, Proje, Elektronik, Kodlama, Hobi

```