---
title: "Arduino ile \"Rastgele\" Bir Değer Üretmekteki Gerçek Bilim"
description: "Merhaba teknoloji tutkunları ve donanımın gizemli derinliklerine dalmayı seven ruhlar!"
date: 2026-11-02T00:14:47Z
updated: 2026-11-02T00:14:47Z
author: "Selda Kaya"
site: "Devre Tahtasından Kod Satırına"
language: "tr"
tags: ["arduino", "rastgelelik", "mikrodenetleyici", "kodlama", "sensör"]
url: "https://dev-labirinti.nasilalinir.com/arduino-ile-rastgele-bir-deger-uretmekteki-gercek-bilim"
---

# Arduino ile "Rastgele" Bir Değer Üretmekteki Gerçek Bilim

Merhaba teknoloji tutkunları ve donanımın gizemli derinliklerine dalmayı seven ruhlar!

Bu serideki önceki yazılarımız, kaosu nasıl bir ritme dönüştürdüğümüzü anlatmıştı. Peki ya tamamen öngörülemez bir şeye ihtiyacımız olduğunda? Bir sensör okumasıyla mı, yoksa sadece yazılımla ürettiğimiz saf bir gürültüyle mi? Belki de en zorlayıcı görev budur: gerçek anlamda rastgele bir sayı üretmek.

Birçok amatör, `rand()` fonksiyonunu çağırmakla bu maceraya atılır ve ortaya çıkan sonuçlar, çok sınırlı bir döngünün tekrarı olur. Arduino gibi mikrodenetleyicilerle çalışırken bu "yeterince rastgele" sonucu almak, bilgisayarın merkezi işlemcisindeki bir işletim sisteminin sunduğu entropi kaynaklarından çok farklıdır. Biz burada, donanımın sunduğu mikro değişimleri yakalamaya çalışıyoruz.

## Dijital Gürültüyü Yakalayan Analog Giriş

Benim en sevdiğim ve çoğu zaman en başarılı olduğum yöntem, tamamen dijitale geçmeden önce analog bir kaynaktan rastgelelik çekmektir. Bu, Raspberry Pi'nin veya bilgisayarın ürettiği yüksek kaliteli bir donanım rastgele sayı üreticisini taklit etmeye çalışmak yerine, fiziksel dünyadaki öngörülemezliğe güvenmektir.

Basit bir örneğimiz var: Bir sıcaklık sensörü (örneğin, çok gürültülü bir termistör veya sıcaklığa duyarlı kapasitör) kullanmak. Her ortamda termal sesler, devre elemanlarındaki mikroskobik varyasyonlar ve hatta ortamdaki elektromanyetik gürültü bu sensörün okumasına küçük sapmalar ekler.

**İşte benim adım adım yaptığım kurulum:**

1. **Giriş Kaynağı:** Bir sıcaklık değişimine duyarlı, düşük maliyetli bir sensör seçtim. Bu sensörün okuması tamamen sabit olmayacak; her seferinde çok küçük bir sapma olacak.
2. **Örnekleme:** Bu sensörden gelen analog sinyali, Arduino'nun ADC (Analogdan Dijitale Çevirici) pinine bağladım.
3. **Dijitalleştirme ve Filtreleme:** ADC, bu analog voltajı sayılabilir bir değere çevirir. Bu ham değerlerimizi direkt olarak kullanmak yerine, belirli sayıda okumayı alıp sonra bu verileri birleştirerek daha sağlam bir "kaba rastgelelik" elde ettim. Örneğin, 10 ardışık okumanın ortalamasını almak yerine, bu 10 sayının en düşük ve en yüksek değerlerini alarak bir sonraki sayımızın başlangıç noktasını belirledim.

Bu yaklaşım, matematiksel olarak mükemmel bir entropi sağlamaz; çünkü sıcaklık değişimleri her zaman kontrollü bir alandadır. Ancak, çoğu amatör proje için **"pratik olarak yeterince rastgele"** olan bir girdi sağlar.

## Yazılımla İnce Ayar: Tohumlama ve Döngü

Eğer her şey yazılımda kalsaydı, tamamen tahmin edilemez bir çıktı almak için fiziksel bir kaynağa ihtiyacımız olurdu. İşte bu yüzden, ben genellikle analog girişi sadece "tokantik bir tohumlama" (seeding) olarak kullanırım.

Eğer sürekli aynı ortam koşullarında çalışıyorsanız ve her seferinde *aynı* rastgele diziyi alıyorsanız, bu sizin sorun değil benim sürüklediğim bir yazılım hatasıdır. Bu durumda yapmanız gereken, fiziksel girdiyi değişken kılmaktır:

*   **Gerçek zamanlı gürültü:** Güç kaynağındaki küçük dalgalanmalar veya sensör okumalarındaki gürültü.
*   **Mikro düzeyde zamanlama:** Okuma alma aralığındaki küçük milisaniyelik kaymalar.

Bunlar, algoritmanızın giriş parametrelerini her seferinde farklı kılacak fiziksel "gürültü" kaynaklarıdır.

Bu deneyim bana şunu gösterdi: Donanım projelerinde bazen en gelişmiş algoritma, gözlemlenebilir bir fiziksel değişkenden alınan küçük ve tutarsız veriyi kabul etmek oluyor. Kontrolü mükemmel alamazsınız, ama kaostan bir anlam çıkarma sanatını geliştirebilirsiniz.

Deneylerinizi yaparken bol şans ve sabır dilerim. Bir sonraki aksaklıkta görüşmek üzere!
