Arduino Sensör Okuma: analogRead, A0 ve Seri Monitör ile İlk Sensör Değeri

Arduino Sensör Okuma: analogRead, A0 ve Seri Monitör ile İlk Sensör Değeri

Arduino sensör okuma, robotik kodlama öğrenirken dijital girişlerden analog değerlere geçiş yaptığınız en önemli aşamalardan biridir. Arduino buton ile LED kontrolü projesinde butonun yalnızca iki durumu vardı: basılı veya basılı değil. Sensörlerde ise durum genellikle daha zengindir. Bir ışık sensörü ortamın aydınlık seviyesine, potansiyometre çevrilme konumuna, toprak nem sensörü nem miktarına, sıcaklık sensörü ise çevre koşullarına göre değişen değerler üretir.

Bu yazıda Arduino ile analog sensör okuma mantığını başlangıç seviyesinde ele alacağız. Örnek devreyi potansiyometre üzerinden kuracağız; çünkü potansiyometre, değeri elle değiştirmeye izin verdiği için analog okuma kavramını çok net gösterir. Resmi Arduino AnalogReadSerial örneği de analog giriş okumayı potansiyometre üzerinden anlatır ve okunan değerin Seri Monitör’e yazdırılmasını gösterir.1

Analog Sensör Okuma Ne Demektir?

Arduino’da dijital okuma, genellikle HIGH veya LOW gibi iki değerden birini verir. Analog sensör okuma ise bir aralık içindeki sayısal değeri okumak anlamına gelir. Arduino Uno gibi klasik kartlarda analogRead(A0) komutu, A0 pinindeki gerilimi okuyarak çoğunlukla 0 ile 1023 arasında bir değer döndürür. Resmi Arduino dokümanında bu dönüşüm, kart üzerindeki analog-to-digital converter yani ADC devresiyle açıklanır.1

Bu bilgi, gerçek dünyadaki değişimleri sayısal olarak takip etmemizi sağlar. Örneğin bir LDR ile ışık seviyesi, potansiyometre ile kullanıcı ayarı, toprak nem sensörüyle sulama ihtiyacı veya gaz sensörüyle ortam değişimi okunabilir. Bu nedenle sensör okuma, robotik projelerde yalnızca bir konu değil, neredeyse bütün akıllı sistemlerin başlangıç noktasıdır.

Okuma türüDeğer yapısıArduino komutuÖrnek kullanım
Dijital okumaHIGH veya LOWdigitalRead()Buton, hareket algılayıcı dijital çıkışı
Analog okuma0-1023 arası değeranalogRead()Potansiyometre, LDR, analog sensör modülü
Seri izlemeMetin/sayı çıktısıSerial.println()Sensör değerini ekranda görmek

Bu farkı anlamak önemlidir. Buton “evet/hayır” bilgisi verirken, analog sensör “ne kadar?” sorusuna cevap verir. Robotik kodlamada bu ayrım; karar verme, eşik belirleme ve otomasyon kurma açısından temel bir beceridir.

Gerekli Malzemeler

Bu başlangıç uygulamasında en anlaşılır örnek için 10K potansiyometre kullanacağız. Potansiyometre bir sensör gibi düşünülebilir; orta ucundaki gerilim çevrilme konumuna göre değişir. Arduino bu değişimi A0 analog girişinden okuyabilir.

MalzemeAdetAçıklama
Arduino Uno veya uyumlu kart1Sensör değerini okuyacak geliştirme kartı
10K potansiyometre1Analog değer üretmek için kullanılacak örnek eleman
Breadboard1Devreyi lehimsiz kurmak için
Jumper kablo35V, GND ve A0 bağlantıları için
USB kablo1Kod yüklemek ve Seri Monitör kullanmak için

Elinizde potansiyometre yoksa LDR modülü, toprak nem sensörü modülü veya analog çıkış veren başka bir sensörle de benzer mantık kurulabilir. Ancak farklı sensörlerin bağlantı ve besleme gerilimi özellikleri değişebilir. Bu nedenle yeni başlayanlar için potansiyometre en güvenli ve anlaşılır örnektir.

Potansiyometre ile Analog Okuma Devresi

Potansiyometrenin genellikle üç bacağı vardır. İki dış bacak gerilim hattının uçlarına, orta bacak ise değişen gerilimin alındığı noktaya bağlanır. Resmi Arduino AnalogReadSerial devresinde potansiyometrenin bir dış bacağının GND’ye, diğer dış bacağının 5V’a, orta bacağının ise A0 analog pinine bağlandığı açıklanır.1

Potansiyometre bacağıArduino bağlantısıGörevi
Dış bacak 1GNDReferans toprak hattı
Dış bacak 25VBesleme gerilimi
Orta bacakA0Değişen analog gerilimi Arduino’ya verir

Potansiyometre çevrildikçe orta uçtaki gerilim 0V ile 5V arasında değişir. Arduino bu gerilimi doğrudan volt olarak değil, sayısal değer olarak okur. Arduino Uno mantığında 0V yaklaşık 0, 5V yaklaşık 1023 değerine karşılık gelir. Aradaki değerler ise uygulanan gerilimle orantılıdır.1

Analog sensör okurken amaç çoğu zaman “tam gerilimi” bilmek değil, değerin değişimini takip etmektir. Bu yüzden başlangıç projelerinde önce ham analogRead() değerini görmek, sonra gerekirse bu değeri yüzdeye veya başka bir aralığa dönüştürmek daha sağlıklı bir yaklaşımdır.

Arduino Sensör Okuma Kodu

Aşağıdaki kod A0 pininden analog değeri okur ve Seri Monitör’e yazar. Bu sayede potansiyometreyi çevirdiğinizde değerlerin anlık olarak değiştiğini görebilirsiniz.

const int SENSOR_PIN = A0;

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

void loop() {
  int sensorValue = analogRead(SENSOR_PIN);
  Serial.println(sensorValue);
  delay(100);
}

Kod oldukça kısadır; fakat çok önemli üç kavram içerir. Serial.begin(9600) bilgisayar ile Arduino arasında seri haberleşmeyi başlatır. analogRead(SENSOR_PIN) A0 pinindeki analog gerilimi okur. Serial.println(sensorValue) ise okunan değeri Arduino IDE içindeki Seri Monitör’e gönderir.

Arduino IDE’de Seri Monitör’ü açtığınızda potansiyometrenin konumuna göre değişen sayılar görmelisiniz. Resmi Arduino örneğinde de Seri Monitör’de 0-1023 aralığında değerlerin görülebileceği ve potansiyometre çevrildikçe bu değerlerin hızlı tepki verdiği belirtilir.1

Kodun Satır Satır Açıklaması

const int SENSOR_PIN = A0; satırı, sensörün bağlı olduğu analog pini isimlendirir. Böylece kodun içinde doğrudan A0 yazmak yerine daha anlamlı bir isim kullanırız. Daha sonra sensörü A1 pinine taşımak istersek yalnızca bu satırı değiştirmek yeterlidir.

setup() fonksiyonu Arduino açıldığında bir kez çalışır. Bu projede setup() içinde yalnızca seri haberleşme başlatılır. loop() fonksiyonu ise sürekli tekrar eder; her döngüde sensör değeri okunur, ekrana yazdırılır ve kısa bir gecikme verilir. delay(100) satırı saniyede yaklaşık 10 okuma yapılmasını sağlar. Bu gecikme kullanılmazsa değerler çok hızlı akar ve takip etmek zorlaşabilir.

Kod satırıGörevi
Serial.begin(9600);Arduino ile bilgisayar arasında seri haberleşmeyi başlatır
analogRead(A0);A0 pinindeki analog değeri okur
int sensorValueOkunan değeri saklayan değişkendir
Serial.println(sensorValue);Değeri Seri Monitör’e satır satır yazar
delay(100);Okumalar arasında kısa bekleme ekler

Bu yapı, neredeyse bütün analog sensör projelerinde temel olarak kullanılır. Sensör değişse bile analogRead(), değişken oluşturma ve Seri Monitör’e yazdırma mantığı aynı kalır.

0-1023 Değeri Ne Anlama Gelir?

Arduino Uno gibi kartlarda analog okuma değeri çoğunlukla 10 bit çözünürlükle ifade edilir. 10 bit, 2 üzeri 10 yani 1024 farklı seviye anlamına gelir. Bu seviyeler 0’dan başladığı için okuma aralığı 0 ile 1023 arasında olur. Arduino dokümanı bu değerin ADC tarafından dönüştürüldüğünü ve uygulanan gerilimle orantılı olduğunu açıklar.1

Okunan değerYaklaşık anlamıPotansiyometre örneği
0A0 pini yaklaşık 0V seviyesindedirMil bir uca çevrilmiştir
256Düşük-orta seviyeMil yaklaşık dörtte bir konumdadır
512Orta seviyeMil yaklaşık orta konumdadır
768Yüksek-orta seviyeMil yaklaşık dörtte üç konumdadır
1023A0 pini referans gerilime yakındırMil diğer uca çevrilmiştir

Farklı Arduino kartlarında ADC çözünürlüğü ve referans gerilimi değişebilir. Bu nedenle eğitim anlatımlarında değer aralığını kullandığınız karta göre düşünmek gerekir. Bu yazıda anlatım, başlangıç seviyesinde en yaygın kullanılan Arduino Uno mantığına göre kurulmuştur.

Sensör Değerini Yüzdeye Çevirme

Ham analog değer çoğu zaman yeterlidir; ancak kullanıcıya daha anlaşılır bir çıktı göstermek için bu değeri yüzdeye çevirmek isteyebilirsiniz. Örneğin potansiyometre en düşük konumdayken %0, en yüksek konumdayken %100 görmek daha anlamlı olabilir.

const int SENSOR_PIN = A0;

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

void loop() {
  int sensorValue = analogRead(SENSOR_PIN);
  int percentValue = map(sensorValue, 0, 1023, 0, 100);

  Serial.print("Ham deger: ");
  Serial.print(sensorValue);
  Serial.print(" | Yuzde: ");
  Serial.print(percentValue);
  Serial.println("%");

  delay(200);
}

Bu kodda map() fonksiyonu 0-1023 aralığını 0-100 aralığına dönüştürür. Böylece değerleri daha okunabilir hâle getiririz. Ancak gerçek sensörlerde en düşük ve en yüksek değer her zaman tam 0 ve 1023 olmayabilir. Örneğin bir LDR devresinde ortam ışığına göre en düşük değer 120, en yüksek değer 850 olabilir. Bu durumda eşik belirlemek için gerçek ölçüm yapmak gerekir.

Analog Sensörlerde Eşik Değeri Kullanma

Sensör okumanın en pratik kullanım biçimlerinden biri eşik değeri belirlemektir. Örneğin değer 600’ün üzerine çıktığında LED yakmak, değer 300’ün altına düştüğünde uyarı vermek veya belirli bir aralıkta motor çalıştırmak mümkündür.

const int SENSOR_PIN = A0;
const int LED_PIN = 13;
const int THRESHOLD = 600;

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

void loop() {
  int sensorValue = analogRead(SENSOR_PIN);
  Serial.println(sensorValue);

  if (sensorValue > THRESHOLD) {
    digitalWrite(LED_PIN, HIGH);
  } else {
    digitalWrite(LED_PIN, LOW);
  }

  delay(100);
}

Bu örnekte sensör değeri 600’ün üzerindeyse LED yanar. Bu mantık, gerçek projelerde çok yaygındır. Işık seviyesi azaldığında lamba yakmak, toprak nemi düştüğünde sulama pompası çalıştırmak veya gaz sensörü belirli eşiği aştığında buzzer çalmak aynı temel yapıya dayanır.

Hangi Sensörler analogRead ile Okunabilir?

Arduino’da analog çıkış veren birçok sensör analogRead() ile okunabilir. Ancak her sensörün bağlantısı, besleme gerilimi ve güvenli kullanım şartları farklı olabilir. Bu yüzden modül üzerindeki VCC, GND ve OUT/AO pinlerini dikkatli okumak gerekir. A0-A5 analog girişlerinin kart üzerindeki yerini ve dijital pinlerden farkını görmek için Arduino Uno pinleri rehberini de inceleyebilirsiniz.

Sensör veya modülanalogRead ile kullanımÖrnek proje
PotansiyometreDoğrudan A0’a bağlanırKullanıcı ayar düğmesi
LDR devresiGerilim bölücüyle analog değer üretirIşığa duyarlı lamba
Toprak nem sensörüAnalog çıkış pininden okunurOtomatik sulama sistemi
Joystick modülüX ve Y eksenleri analog okunurRobot kontrol kolu
Gaz sensörü modülleriAnalog çıkış verebilirOrtam izleme projesi

Başlangıçta potansiyometre ile değer aralığını gözlemlemek, daha sonra sensör modüllerine geçmeyi kolaylaştırır. Çünkü hangi sensörü kullanırsanız kullanın, temel soru aynıdır: Sensör hangi aralıkta değer üretiyor ve benim projem hangi değerde tepki vermeli?

Sık Yapılan Hatalar ve Çözümleri

Analog sensör devrelerinde en sık karşılaşılan sorun, bağlantıların karıştırılması veya okunan değerin beklenenden farklı olmasıdır. Bu durum çoğu zaman devrenin tamamen bozuk olduğu anlamına gelmez; genellikle bağlantı, referans veya kod tarafında küçük bir düzeltme gerekir.

SorunMuhtemel nedenÇözüm
Seri Monitör’de hiçbir şey görünmüyorSeri Monitör kapalı veya baud rate farklıSeri Monitör’ü açın ve 9600 baud seçin
Değer sürekli 0A0 pini GND’ye bağlı kalmış olabilirOrta bacağın A0’a gittiğini kontrol edin
Değer sürekli 1023A0 pini 5V’a bağlı kalmış olabilirPotansiyometre orta bacağını ve dış bacakları kontrol edin
Değerler rastgele değişiyorA0 ucu boşta kalmış olabilirSensör sinyal hattının A0’a bağlı olduğundan emin olun
Değer ters yönde değişiyor5V ve GND dış bacakları ters olabilirSorun değil; isterseniz dış bacakları yer değiştirin

Seri Monitör, analog sensör projelerinde en önemli kontrol aracıdır. Önce ham değerin değiştiğini görmek, sonra bu değere göre LED, buzzer veya motor gibi çıkışlar eklemek daha sağlıklıdır. Bu yaklaşım, karmaşık projelerde hata bulma süresini ciddi şekilde azaltır.

Sonuç

Arduino sensör okuma, robotik kodlamada çevreyi algılayan projelerin temelidir. Bu yazıda A0 pini, analogRead() komutu, Seri Monitör, 0-1023 değer aralığı ve eşik mantığı üzerinden analog okumanın temelini öğrendiniz. Eğer daha önce Arduino IDE kurulumu yaptıysanız ve Arduino ile LED yakma projesini tamamladıysanız, artık Arduino’nun hem çıkış verebildiğini hem de çevresinden değişken bilgi alabildiğini görmüş oldunuz.

Bir sonraki adımda bu analog değeri yalnızca okumakla kalmayıp bir çıkışa dönüştürebilirsiniz. Örneğin potansiyometre değerine göre LED parlaklığı ayarlamak için PWM kullanabilir; bunun uygulamalı anlatımı için Arduino PWM ile LED parlaklığını ayarlama rehberine geçebilirsiniz. Işık sensöründen gelen değere göre otomatik gece lambası yapmak veya nem sensöründen gelen değere göre sulama sistemi tasarlamak da aynı mantığın devamıdır. Bu nedenle sensör okuma, basit bir başlangıç uygulaması gibi görünse de daha gelişmiş robotik projelerin ana kapısını açar.

Kaynaklar

Footnotes

  1. Arduino Docs, Analog Read Serial. 2 3 4 5 6

Benzer Yazılar

Arduino Buton ile LED Kontrolü: digitalRead, Pull-up ve Pull-down Rehberi

Arduino Buton ile LED Kontrolü: digitalRead, Pull-up ve Pull-down Rehberi

Arduino buton ile LED kontrolü, LED yakma uygulamasından sonra yapılabilecek en doğru ikinci başlangıç projesidir. Çünkü bu projede Arduino artık yalnızca bir çıkış elemanını çalıştırmaz; aynı zam

Devamını Oku
Arduino IDE Kurulumu: Windows, macOS ve Linux İçin Adım Adım Rehber

Arduino IDE Kurulumu: Windows, macOS ve Linux İçin Adım Adım Rehber

Arduino IDE kurulumu, Arduino ile proje geliştirmeye başlamadan önce tamamlanması gereken ilk yazılım adımıdır. Arduino kartınıza kod yüklemek, seri porttan veri okumak, örnek projeleri açmak ve t

Devamını Oku
Arduino ile LED Yakma: Devre Şeması, Kod ve Adım Adım Anlatım

Arduino ile LED Yakma: Devre Şeması, Kod ve Adım Adım Anlatım

Arduino ile LED yakma, robotik kodlama ve elektronik öğrenmeye başlayanların yaptığı ilk uygulamalardan biridir. Bu küçük proje, yalnızca bir LED'i açıp kapatmaktan ibaret değildir; aynı zamanda d

Devamını Oku
Arduino Nedir? Ne İçin Kullanılır? Yeni Başlayanlar İçin Kapsamlı Rehber

Arduino Nedir? Ne İçin Kullanılır? Yeni Başlayanlar İçin Kapsamlı Rehber

Arduino, hem donanım hem de yazılım tarafıyla elektronik prototipleme dünyasının en popüler açık kaynak platformudur. Hobi sahiplerinden eğitimcilere, sanatçılardan profesyonel mühendislere kadar

Devamını Oku
Arduino PWM ile LED Parlaklığını Ayarlama: analogWrite ve Fade Rehberi

Arduino PWM ile LED Parlaklığını Ayarlama: analogWrite ve Fade Rehberi

Arduino PWM ile LED parlaklığını ayarlama, LED'i yalnızca yakıp söndürmekten bir adım ileriye geçerek ışık şiddetini kademeli biçimde kontrol etmeyi öğretir. Bu uygulamada Arduino'nun dijital bir

Devamını Oku
Arduino Uno Pinleri: Dijital, Analog, PWM ve Güç Pinleri Rehberi

Arduino Uno Pinleri: Dijital, Analog, PWM ve Güç Pinleri Rehberi

Arduino Uno pinleri, kartın sensörler, LED'ler, butonlar, motor sürücüler ve haberleşme modülleriyle bağlantı kurmasını sağlayan giriş-çıkış noktalarıdır. Arduino öğrenirken yalnızca kod yazmak ye

Devamını Oku