Dijital dünyada her şey siyahtır ya da beyazdır (1 veya 0). Ama gerçek dünya gri tonlarla doludur. Arduino'nun dış dünyadaki "ne kadar?" sorusuna cevap verebilmesi için (Ne kadar sıcak? Ne kadar aydınlık?) Analog Girişleri kullanırız.
1. ADC: Analogdan Dijitale Çevirici
Arduino'nun işlemcisi aslında analog sinyalleri anlayamaz. İçindeki ADC (Analog to Digital Converter) ünitesi, gelen 0-5 Volt arasındaki gerilimi sayısal bir değere dönüştürür.
Arduino Uno'nun ADC çözünürlüğü 10 bit'tir. Bu da voltajı 1024 parçaya böldüğü anlamına gelir.
- 🔌 0 Volt = 0
- 🔌 2.5 Volt = ~511-512
- 🔌 5 Volt = 1023
2. Potansiyometre Bağlantısı
Potansiyometrenin orta bacağı (Sinyal), Arduino'nun A0 - A5 arasındaki analog girişlerinden birine bağlanmalıdır. Kenar bacaklar ise 5V ve GND'ye gider.
3. Yazılım (Seri Monitörden Okuma)
Bu kod ile potansiyometreyi çevirdikçe 0 ile 1023 arasında değişen sayıları bilgisayar ekranında göreceğiz.
const int potPin = A0; // Potansiyometrenin bağlı olduğu pin int deger = 0; // Okunan değeri saklayacağımız değişken void setup() { Serial.begin(9600); // Seri haberleşmeyi başlat (PC ile konuşma) } void loop() { // 1. Analog değeri oku (0 - 1023 arası) deger = analogRead(potPin); // 2. Değeri ekrana yazdır Serial.print("Okunan Deger: "); Serial.println(deger); // 3. Voltaj karşılığını hesapla (Matematiksel çeviri) // 5.0 / 1023.0 * deger formülü ile gerçek voltajı bulabiliriz float voltaj = (5.0 / 1023.0) * deger; Serial.print("Voltaj: "); Serial.println(voltaj); Serial.println("----------------"); delay(500); // Yarım saniye bekle }
4. İpucu: map() Fonksiyonu
Sorun: Analog okuma 0-1023 verir. Ama LED parlaklığı (PWM) 0-255 arası değer ister. Veya Servo motor 0-180 derece ister.
Çözüm: map() fonksiyonu bu aralıkları birbirine orantılar.
int yeniDeger = map(deger, 0, 1023, 0, 255);
Bu kod, 0-1023 arasındaki okunan değeri orantılı olarak 0-255 arasına sıkıştırır.