Mikrodenetleyici Giriş - Çıkış İşlemleri
Giriş ve Çıkış İşlemleri (I/O - Input/Output)
Mikrodenetleyiciler, çevre birimleriyle iletişim kurabilmek için giriş (input) ve çıkış (output) işlemlerini kullanır. Giriş pinleri, sensörlerden veya butonlardan veri almak için, çıkış pinleri ise LED'ler, motorlar veya röleler gibi harici bileşenleri kontrol etmek için kullanılır.
1. Dijital Giriş/Çıkış (Digital I/O)
Mikrodenetleyicilerde, dijital giriş/çıkışlar 0 (LOW) ve 1 (HIGH) olmak üzere iki durum alabilir.
a) Dijital Giriş (Digital Input)
Dijital girişler, bir buton, anahtar veya sensörden "Açık (1)" veya "Kapalı (0)" bilgisi almak için kullanılır.
📌 Önemli Noktalar:
- Pull-up/Pull-down dirençleri: Butonlar veya anahtarlar, istenmeyen giriş dalgalanmalarını (floating) önlemek için pull-up (yukarı çekme) veya pull-down (aşağı çekme) dirençleri ile birlikte kullanılır.
- Dijital okuma fonksiyonu:
digitalRead(pin_numarası)
Örnek: Buton Okuma (Pull-up Direnci ile)
const int buttonPin = 2; // Butonun bağlı olduğu dijital giriş pini
int buttonState = 0;
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Pull-up direnci aktif
Serial.begin(9600); // Seri monitör başlatma
}
void loop() {
buttonState = digitalRead(buttonPin); // Butonun durumunu oku
Serial.println(buttonState); // Butonun durumunu ekrana yazdır
delay(100);
}
📌 Not:
- Butona basıldığında
0
, bırakıldığında1
okunur. - Pull-up direnci kullanılırsa: Butona basılınca 0, bırakılınca 1 okunur.
- Harici pull-down direnci kullanılırsa: Butona basılınca 1, bırakılınca 0 okunur.
b) Dijital Çıkış (Digital Output)
Dijital çıkışlar, LED'ler, röleler, motorlar gibi bileşenleri kontrol etmek için kullanılır.
Dijital bir çıkış pini HIGH (1) veya LOW (0) durumuna ayarlanarak bir cihaz açılıp kapatılabilir.
📌 Önemli Noktalar:
pinMode(pin, OUTPUT)
: Pin çıkış olarak ayarlanır.digitalWrite(pin, HIGH)
: Pin 1 (HIGH) yapılır (örneğin LED yanar).digitalWrite(pin, LOW)
: Pin 0 (LOW) yapılır (örneğin LED söner).
Örnek: LED Yakıp Söndürme
const int ledPin = 13; // LED'in bağlı olduğu dijital çıkış pini
void setup() {
pinMode(ledPin, OUTPUT); // Çıkış olarak ayarla
}
void loop() {
digitalWrite(ledPin, HIGH); // LED'i yak
delay(1000); // 1 saniye bekle
digitalWrite(ledPin, LOW); // LED'i söndür
delay(1000); // 1 saniye bekle
}
Uygulamalar:
- LED kontrolü
- Röle aç/kapat
- Motor sürücüler
2. Analog Giriş/Çıkış (Analog I/O)
Bazı sensörler (örneğin sıcaklık sensörleri, ışık sensörleri) analog sinyaller üretir. Mikrodenetleyiciler, bu analog sinyalleri işleyebilmek için ADC (Analog to Digital Converter - Analogdan Dijitale Çevirici) kullanır.
a) Analog Giriş (ADC - Analog Read)
Analog girişler, 0V ile 5V (Arduino) veya 3.3V (ESP32/STM32) arasında değişen sinyalleri okuyabilir.
📌 Önemli Noktalar:
analogRead(pin)
: Analog girişten veri okur ve 0 ile 1023 arasında bir değer döndürür (Arduino'da 10-bit çözünürlük).- Genellikle potansiyometre, LDR (ışığa duyarlı direnç), sıcaklık sensörleri gibi analog çıkış veren bileşenler için kullanılır.
Örnek: Potansiyometre Okuma ve Seri Monitöre Yazdırma
const int potPin = A0; // Potansiyometrenin bağlı olduğu pin
void setup() {
Serial.begin(9600); // Seri monitör başlatma
}
void loop() {
int value = analogRead(potPin); // Analog veriyi oku (0-1023 arası)
Serial.println(value); // Değeri ekrana yazdır
delay(500);
}
📌 Not:
- 0V verildiğinde 0, 5V verildiğinde 1023 değeri okunur.
b) Analog Çıkış (PWM - Pulse Width Modulation)
Mikrodenetleyiciler, gerçek analog çıkış yerine PWM (Darbe Genişlik Modülasyonu) kullanarak analog sinyal taklidi yapar.
📌 Önemli Noktalar:
analogWrite(pin, değer)
: PWM çıkışı üretir (0 ile 255 arasında bir değer alır).- LED parlaklığı, motor hız kontrolü, ses üretimi gibi uygulamalarda kullanılır.
Örnek: LED Parlaklık Ayarı (PWM)
const int ledPin = 9; // PWM destekleyen bir pin seçilmeli
int brightness = 0;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
for (brightness = 0; brightness <= 255; brightness += 5) {
analogWrite(ledPin, brightness);
delay(30);
}
}
🔹 PWM, LED parlaklığını artırmak veya motor hızını ayarlamak için kullanılabilir.
3. Gelişmiş Giriş/Çıkış Uygulamaları
Bazı özel giriş/çıkış işlemleri, haberleşme protokolleri ile gerçekleştirilir.
a) Seri Haberleşme (UART, I2C, SPI)
Mikrodenetleyiciler, diğer cihazlarla iletişim kurmak için seri haberleşme protokollerini kullanır.
- UART (Seri Haberleşme - Serial Communication) → Bilgisayar ile mikrodenetleyici arasında haberleşme.
- I2C (Inter-Integrated Circuit) → Sensörler, EEPROM ve ekranlar gibi cihazlarla iletişim.
- SPI (Serial Peripheral Interface) → Hızlı veri iletimi gerektiren cihazlar (SD kart, ekranlar).
Örnek: UART Seri Haberleşme Kullanımı
void setup() {
Serial.begin(9600); // Baud hızı: 9600
}
void loop() {
Serial.println("Merhaba, dünya!");
delay(1000);
}
4. Hafıza ve Depolama Çıkışları
- EEPROM: Mikrodenetleyici kapansa bile verileri saklamak için kullanılır.
- SD Kart Modülü: Büyük miktarda veri kaydetmek için kullanılır.
- Flash Bellek: Program kodlarını saklamak için kullanılır.
Örnek: EEPROM Kullanımı
#include <EEPROM.h>
void setup() {
EEPROM.write(0, 42); // EEPROM'un 0. adresine 42 yaz
}
void loop() {
int value = EEPROM.read(0); // EEPROM'dan değeri oku
Serial.println(value);
delay(1000);
}
Sonuç
Giriş ve çıkış işlemleri, mikrodenetleyicilerin dış dünya ile iletişim kurmasını sağlar. Dijital giriş/çıkışlar temel olarak aç/kapat işlemleri yaparken, analog giriş/çıkışlar hassas değerleri ölçmek veya modüle etmek için kullanılır. Gelişmiş haberleşme yöntemleri ve hafıza modülleri sayesinde daha karmaşık sistemler tasarlanabilir.
Yorumlar
Yorum Gönder