Arduino ile Dijital Kronometre Nasıl Yapılır? Çocuklar İçin Proje Rehberi
Bir yarışın ne kadar sürdüğünü elektronik olarak ölçebilir miyiz? Bir butona bastığımız anda süreyi başlatıp başka bir butonla durdurabilir miyiz?
Arduino, butonlar ve LCD ekran kullanarak kendi dijital kronometremizi geliştirmek mümkündür.
Bu proje çocukların yalnızca elektronik bağlantı kurmasını değil; zaman ölçme, değişken kullanımı, kullanıcı girişlerini kontrol etme ve ekranda bilgi gösterme gibi önemli programlama kavramlarını da uygulamalı şekilde öğrenmesini sağlar.
Sistemin temel çalışma mantığı oldukça basittir:
Başlat → Zamanı Ölç → Durdur → Sonucu Göster → Sıfırla.
Peki Arduino ile dijital kronometre nasıl yapılır? Gelin adım adım inceleyelim.
Arduino Dijital Kronometre Nedir?
Arduino dijital kronometre, kullanıcıdan aldığı komutlara göre geçen süreyi ölçen ve sonucu elektronik bir ekran üzerinde gösteren proje sistemidir.
Basit bir kronometre şu şekilde çalışabilir:
- Başlat butonuna basılır.
- Arduino başlangıç zamanını kaydeder.
- Geçen süre sürekli hesaplanır.
- Sonuç LCD ekranda gösterilir.
- Durdur butonuna basıldığında zaman ölçümü durur.
- Sıfırla komutuyla kronometre yeniden 0 değerine döner.
Böylece klasik bir dijital kronometrenin temel çalışma mantığı Arduino üzerinde oluşturulabilir.
Bu Proje Çocuklara Neler Öğretir?
Kronometre projesi elektronik ile yazılımı bir araya getiren güzel başlangıç-orta seviye çalışmalarından biridir.
Proje sırasında şu konular öğrenilebilir:
- Arduino kullanımı
- Buton bağlantıları
- Dijital giriş okuma
- LCD ekran kullanımı
- Zaman ölçümü
- millis() fonksiyonu
- Değişkenler
- Durum kontrolü
- Koşul ifadeleri
- Başlat-durdur mantığı
- Milisaniyeyi saniyeye dönüştürme
- Kullanıcı arayüzü tasarlama
Bu nedenle proje yalnızca bir sayaç oluşturmak değil, programın zaman içerisinde durumunu nasıl koruyabildiğini anlamak açısından da oldukça öğreticidir.
Dijital Kronometre İçin Hangi Malzemeler Gerekir?
Başlangıç seviyesinde bir kronometre için şu elektronik bileşenlerden yararlanılabilir:
- Arduino Uno veya uyumlu kontrol kartı
- LCD ekran
- 2 veya 3 adet buton
- Breadboard
- Jumper kablolar
- Gerekli bağlantı düzenine göre dirençler
- USB bağlantı kablosu
İstenirse daha gelişmiş sürümde buzzer ve LED'ler de sisteme eklenebilir.
LCD Ekran Nedir?
LCD ekran, elektronik projelerde sayı ve metin gibi bilgileri görüntülemek için kullanılabilen ekran türlerinden biridir.
Arduino projelerinde yaygın olarak kullanılan küçük LCD ekranlarda örneğin şu bilgiler gösterilebilir:
Kronometre
12.43 saniye
veya:
DURDU
08.75 sn
şeklinde kullanıcıya geri bildirim verilebilir.
Neden Kronometrede Ekran Kullanıyoruz?
Arduino zamanı kendi içerisinde hesaplayabilir ancak kullanıcı sonucu göremediği sürece sistemin kullanımı sınırlı kalır.
LCD ekran sayesinde:
- Geçen süre görülebilir.
- Kronometrenin çalışıp çalışmadığı anlaşılabilir.
- Sıfırlama işlemi gösterilebilir.
- Kullanıcıya açıklayıcı mesajlar verilebilir.
Böylece elektronik proje küçük bir kullanıcı arayüzüne sahip olur.
Kronometrede Butonlar Ne İşe Yarar?
Projenin temel sürümünde üç farklı komut kullanılabilir:
- Başlat
- Durdur
- Sıfırla
Bunların her biri ayrı butona bağlanabilir.
Daha sade projede ise tek buton kullanılarak:
- İlk basış → Başlat
- İkinci basış → Durdur
mantığı da kurulabilir.
Başlat Butonuna Basıldığında Ne Olur?
Kullanıcı başlat butonuna bastığında Arduino o anki zaman bilgisini kaydedebilir.
Örneğin:
baslangicZamani = millis();
Daha sonra program sürekli olarak:
Şimdiki zaman - başlangıç zamanı
hesabını yaparak geçen süreyi bulabilir.
Arduino'da millis() Nedir?
millis(), Arduino çalışmaya başladıktan sonra geçen süreyi milisaniye cinsinden takip etmeye yarayan fonksiyonlardan biridir.
Örneğin Arduino yaklaşık 5 saniyedir çalışıyorsa millis() değeri yaklaşık:
5000
olabilir.
Çünkü:
1000 milisaniye = 1 saniye
olarak kabul edilir.
Neden Kronometrede delay() Yerine millis() Kullanıyoruz?
delay() komutu programı belirli süre boyunca bekletir.
Ancak kronometre çalışırken Arduino'nun:
- Butonları kontrol etmeye,
- Ekranı güncellemeye,
- Zamanı hesaplamaya
devam etmesi gerekir.
Bu nedenle sürekli beklemek yerine zaman farkını hesaplayan millis() yaklaşımı daha uygun olabilir.
Bu proje çocukların delay() ile zaman ölçümü arasındaki farkı anlaması için oldukça güzel bir örnektir.
Milisaniyeyi Saniyeye Nasıl Dönüştürürüz?
Arduino zamanı milisaniye olarak takip ettiği için sonucu kullanıcıya saniye şeklinde göstermek isteyebiliriz.
Örneğin:
4250 ms
yaklaşık:
4.25 saniye
olarak gösterilebilir.
Program içerisinde temel mantık:
float saniye = gecenSure / 1000.0;
şeklinde kurulabilir.
Burada 1000.0 kullanılması sonucun ondalıklı sayı olarak hesaplanmasına yardımcı olur.
Kronometrenin Temel Algoritması
Kodu yazmadan önce projenin davranışını günlük dilde sıralamak faydalıdır.
- Başlat butonunu kontrol et.
- Başlatıldıysa zamanı kaydet.
- Kronometre çalışıyorsa geçen süreyi hesapla.
- Süreyi LCD ekranda göster.
- Durdur butonunu kontrol et.
- Durdurulduysa son süreyi koru.
- Sıfırla butonuna basılırsa süreyi 0 yap.
- Kontrolleri sürekli tekrar et.
Bu yapı gerçek dijital cihazların durum kontrol mantığını anlamak açısından oldukça faydalıdır.
Kronometre Çalışıyor mu, Durdu mu Nasıl Anlarız?
Program içerisinde bir durum değişkeni kullanılabilir.
Örneğin:
bool kronometreCalisiyor = false;
Başlat butonuna basıldığında:
kronometreCalisiyor = true;
Durdur butonuna basıldığında:
kronometreCalisiyor = false;
olarak değiştirilebilir.
Bu sayede Arduino her döngüde kronometrenin hangi durumda olduğunu bilir.
bool Değişkeni Nedir?
bool, iki farklı durum saklayabilen veri türüdür.
Temel olarak:
- true
- false
değerlerinden birini alır.
Kronometre projesinde:
true → Kronometre çalışıyor.
false → Kronometre durmuş.
şeklinde kullanılabilir.
Bu kavram daha sonraki otomasyon ve oyun projelerinde de oldukça sık karşımıza çıkar.
Örnek Arduino Kronometre Kod Mantığı
Aşağıdaki örnek LCD bağlantısından bağımsız olarak temel kronometre mantığını göstermek amacıyla hazırlanmıştır.
const int baslatButonu = 2;
const int durdurButonu = 3;
const int sifirlaButonu = 4;
unsigned long baslangicZamani = 0;
unsigned long gecenSure = 0;
bool kronometreCalisiyor = false;
void setup() {
pinMode(baslatButonu, INPUT_PULLUP);
pinMode(durdurButonu, INPUT_PULLUP);
pinMode(sifirlaButonu, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
if (digitalRead(baslatButonu) == LOW && !kronometreCalisiyor) {
baslangicZamani = millis() - gecenSure;
kronometreCalisiyor = true;
delay(200);
}
if (digitalRead(durdurButonu) == LOW && kronometreCalisiyor) {
gecenSure = millis() - baslangicZamani;
kronometreCalisiyor = false;
delay(200);
}
if (digitalRead(sifirlaButonu) == LOW) {
gecenSure = 0;
if (kronometreCalisiyor) {
baslangicZamani = millis();
}
delay(200);
}
if (kronometreCalisiyor) {
gecenSure = millis() - baslangicZamani;
}
Serial.print("Sure: ");
Serial.print(gecenSure / 1000.0);
Serial.println(" sn");
}
Bu örnekte süre Serial Monitor üzerinde gösterilmektedir.
Bir sonraki aşamada aynı değer LCD ekrana aktarılabilir.
Neden Önce Serial Monitor ile Test Etmek Faydalıdır?
Elektronik projeyi aşamalara bölmek hata bulmayı kolaylaştırır.
Önce:
- Başlat butonu çalışıyor mu?
- Durdur butonu çalışıyor mu?
- Süre doğru hesaplanıyor mu?
kontrol edilebilir.
Her şey doğru çalışıyorsa daha sonra LCD eklenebilir.
Bu yöntem elektronik ve yazılım hatalarının birbirinden ayrılmasına yardımcı olur.
LCD Ekrana Süre Nasıl Yazdırılır?
Kullanılan LCD modeline göre bağlantı ve kütüphane yapısı değişebilir.
Örneğin uygun bir LCD kütüphanesi kullanılarak temel mantık şu şekilde olabilir:
lcd.setCursor(0, 0);
lcd.print("Kronometre");
lcd.setCursor(0, 1);
lcd.print(gecenSure / 1000.0);
lcd.print(" sn");
Böylece ekranın ilk satırında proje adı, ikinci satırında ise geçen süre gösterilebilir.
LCD Ekranda Eski Rakamlar Neden Kalabilir?
Bir önceki değer daha uzun karakter sayısına sahipse ekrana yeni kısa değer yazıldığında eski karakterlerden bazıları görünmeye devam edebilir.
Örneğin:
12.45
değerinin ardından:
2.10
yazıldığında ekran doğru temizlenmezse eski karakter kalabilir.
Bunu önlemek için ilgili satır temizlenebilir veya değerin ardından boşluk yazdırılabilir.
Tek Butonla Kronometre Yapılabilir mi?
Evet.
Tek butona her basıldığında sistem durum değiştirebilir.
Örneğin:
- İlk basış → Başlat
- İkinci basış → Durdur
- Üçüncü basış → Tekrar devam et
Sıfırlama için ise butona uzun basma özelliği tasarlanabilir veya ayrı bir ikinci buton kullanılabilir.
Bu yaklaşım projeyi daha az bileşenle daha gelişmiş bir kullanıcı arayüzüne dönüştürebilir.
Başlatılan Kronometre Durdurulduktan Sonra Devam Ettirilebilir mi?
Evet.
Kronometre durdurulduğunda geçen süre saklanır.
Tekrar başlatıldığında önceki sürenin üzerine yeni zaman eklenebilir.
Böylece gerçek kronometrelerdeki:
Başlat → Durdur → Devam Et
mantığı oluşturulabilir.
Sıfırlama İşlemi Nasıl Çalışır?
Sıfırla butonuna basıldığında:
gecenSure = 0;
yapılarak ölçülen değer yeniden başlangıç noktasına döndürülebilir.
LCD üzerinde de:
0.00 sn
gösterilebilir.
Kronometreye LED Eklenebilir mi?
Evet.
Sistemin durumunu göstermek için LED'lerden yararlanılabilir.
Örneğin:
- Yeşil LED → Kronometre çalışıyor
- Kırmızı LED → Kronometre durdu
Böylece kullanıcı yalnızca ekrana bakmadan sistem durumunu anlayabilir.
Buzzer Eklenebilir mi?
Evet. Başlat veya durdur işlemlerinde kısa sesli bildirim oluşturulabilir.
Örneğin:
- Başlat → kısa bip
- Durdur → iki kısa bip
- Sıfırla → farklı bir ses
Böylece proje görsel geri bildirimin yanında sesli geri bildirim de verir.
Kronometre ile Yarış Oyunu Yapılabilir mi?
Evet. Projenin en eğlenceli kullanım alanlarından biri budur.
Örneğin iki oyuncu şu görevleri yapabilir:
- Bir parkuru tamamlama
- Bir yapbozu çözme
- Elektronik devreyi kurma
- Belirli bir görevi bitirme
Arduino kronometre her oyuncunun süresini ölçmek için kullanılabilir.
Böylece yapılan elektronik proje başka oyunların da parçası haline gelir.
Refleks Oyunu ile Kronometre Arasında Ne Fark Var?
Refleks oyunu genellikle belirli bir sinyalden sonra oyuncunun ne kadar hızlı tepki verdiğini ölçer.
Kronometre ise kullanıcı tarafından belirlenen başlangıç ve bitiş noktaları arasındaki toplam süreyi ölçer.
Ancak iki proje aynı temel kavramlardan yararlanabilir:
- millis()
- Butonlar
- Zaman farkı hesaplama
- Ekranda sonuç gösterme
Bu nedenle refleks oyunu öğrenilmişse kronometre projesi güzel bir devam çalışmasıdır.
Tur Süresi Ölçülebilir mi?
Evet. Proje daha gelişmiş hale getirilerek lap yani tur süresi özelliği eklenebilir.
Örneğin kronometre çalışmaya devam ederken tur butonuna basıldığında o ana kadarki süre kaydedilebilir.
Sonrasında zaman ölçümü durmadan devam eder.
Bu özellik gerçek spor kronometrelerinin çalışma mantığını anlamaya yardımcı olur.
Birden Fazla Tur Kaydedilebilir mi?
Evet. Program içerisinde birden fazla zaman değeri saklanabilir.
Örneğin:
- Tur 1: 12.43 sn
- Tur 2: 11.95 sn
- Tur 3: 12.18 sn
şeklinde sonuçlar tutulabilir.
Daha ileri seviyede bu değerler LCD ekran üzerinde sırayla gösterilebilir.
En İyi Süre Hesaplanabilir mi?
Evet.
Kaydedilen süreler karşılaştırılarak en kısa değer belirlenebilir.
Örneğin:
if (yeniSure < enIyiSure) {
enIyiSure = yeniSure;
}
Bu özellik çocukların karşılaştırma operatörlerini gerçek bir proje içerisinde kullanmasına yardımcı olur.
Kronometreyi Geri Sayıma Dönüştürebilir miyiz?
Evet.
Bir sonraki aşamada sistem yukarı doğru saymak yerine belirlenen süreden geriye doğru sayabilir.
Örneğin:
10 → 9 → 8 → 7 → ... → 0
şeklinde ilerleyebilir.
Süre tamamlandığında buzzer çalıştırılabilir.
Böylece aynı proje mutfak zamanlayıcısı veya oyun sayacı gibi kullanılabilecek farklı bir sisteme dönüşür.
Kronometre ile Geri Sayım Sayacı Arasındaki Fark Nedir?
Kronometre sıfırdan başlayarak geçen zamanı ölçer.
Geri sayım sayacı ise belirlenen süreden başlayarak sıfıra doğru ilerler.
İki sistem de zaman ölçümüne dayanır ancak kullanıcı amaçları farklıdır.
Proje Çalışmıyorsa Neleri Kontrol Etmeliyiz?
Buton Bağlantıları
Butonların breadboard üzerinde doğru bağlantı noktalarında bulunduğu kontrol edilmelidir.
Pin Numaraları
Koddaki pin numaralarıyla fiziksel bağlantılar aynı olmalıdır.
INPUT_PULLUP Mantığı
Butona basıldığında sistemin LOW değeri bekleyip beklemediği kontrol edilmelidir.
LCD Bağlantıları
Ekran açılıyor ancak yazı göstermiyorsa bağlantı veya kullanılan kütüphane ayarları incelenebilir.
Zaman Hesabı
Önce Serial Monitor üzerinden millis() ve geçen süre değerleri görüntülenerek yazılım tarafının doğru çalışıp çalışmadığı kontrol edilebilir.
Butona Bir Kez Bastığım Halde Neden Birden Fazla İşlem Oluyor?
Fiziksel butonlarda kısa süreli elektriksel titreşimler oluşabilir.
Buna genellikle button bounce denir.
Program çok hızlı çalıştığı için tek basış birden fazla basış olarak algılanabilir.
Başlangıç seviyesinde kısa debounce süresi uygulanabilir.
Daha gelişmiş projelerde ise zaman tabanlı debounce yöntemleri kullanılabilir.
Kronometre Projesi STEM Çalışması mıdır?
Evet.
Bilim
Zaman ve ölçüm kavramları incelenir.
Teknoloji
Arduino, butonlar ve elektronik ekran kullanılır.
Mühendislik
Kullanıcı tarafından kontrol edilebilen çalışan bir zaman ölçüm sistemi tasarlanır.
Matematik
Milisaniye, saniye, çıkarma, karşılaştırma ve zaman dönüşümleri kullanılır.
Bu nedenle basit bir kronometre projesi farklı öğrenme alanlarını tek çalışmada bir araya getirebilir.
Kendi Kronometre Tasarımımızı Nasıl Yapabiliriz?
Elektronik devre breadboard üzerinde çalıştıktan sonra karton veya uygun hafif malzemelerle küçük bir kronometre gövdesi oluşturulabilir.
Üzerinde:
- Başlat butonu
- Durdur butonu
- Sıfırla butonu
- LCD ekran
için alanlar hazırlanabilir.
Böylece proje yalnızca devre olmaktan çıkarak küçük bir elektronik ürüne dönüşür.
Kullanıcı Arayüzü Neden Önemlidir?
Butonların görevlerinin anlaşılır olması gerçek ürün tasarımında önemli bir konudur.
Örneğin butonların üzerine:
- BAŞLAT
- DURDUR
- SIFIRLA
etiketleri eklenebilir.
Çocuk böylece elektronik ve kodlamanın yanında bir cihazın kullanıcı tarafından nasıl anlaşılır hale getirildiğini de düşünmeye başlar.
Projeyi Nasıl Daha Gelişmiş Hale Getirebiliriz?
Temel kronometre çalıştıktan sonra şu özellikler eklenebilir:
- LCD ekranda süre göstermek
- Başlat ve durdur sesleri eklemek
- Çalışma durumunu LED ile göstermek
- Tur süresi özelliği eklemek
- En iyi süreyi göstermek
- Birden fazla oyuncunun sonuçlarını karşılaştırmak
- Geri sayım modu eklemek
- Refleks oyunu moduna dönüştürmek
Böylece temel zaman ölçer daha kapsamlı bir elektronik oyun ve spor cihazına dönüşebilir.
Bilişim Garajı ile Zamanı Kodlayın
Arduino projeleri sayesinde günlük hayatta kullandığımız cihazların çalışma mantığı daha anlaşılır hale getirilebilir.
Bir kronometre, dışarıdan bakıldığında yalnızca süre gösteren basit bir cihaz gibi görünse de arkasında kullanıcı girişleri, zaman hesaplamaları ve ekran kontrolü bulunur.
Kırmızı ACT-200 Arduino Seti
Kırmızı ACT-200 Arduino Seti, elektronik ve Arduino dünyasına giriş yapmak isteyen öğrencilerin breadboard, butonlar, sensörler ve farklı elektronik bileşenlerle uygulamalı çalışmalar geliştirmesine yardımcı olur.
Temel buton çalışmalarından kronometre ve refleks oyunu gibi zaman tabanlı projelere doğru ilerlenebilir.
Kırmızı ACT-200 Arduino Setini İnceleyin
Siyah ACT-300 Arduino Seti
Daha kapsamlı Arduino projelerine ilerlemek isteyen öğrenciler için Siyah ACT-300 Arduino Seti, farklı elektronik bileşenleri bir araya getirerek daha gelişmiş proje fikirleri oluşturulmasına yardımcı olabilir.
Ekranlar, butonlar, buzzer ve farklı giriş bileşenleri kullanılarak kapsamlı kullanıcı etkileşimli sistemler tasarlanabilir.
Siyah ACT-300 Arduino Setini İnceleyin
Bir Butondan Zaman Ölçen Sisteme
Dijital kronometre projesi küçük elektronik parçaların birlikte nasıl gerçek bir ürüne dönüşebildiğini gösterir.
Kullanıcı başlat butonuna basar.
Arduino zamanı kaydeder.
Program geçen süreyi hesaplar.
LCD ekran sonucu kullanıcıya gösterir.
Durdur butonu ölçümü bitirir.
Sıfırlama komutu sistemi yeni ölçüme hazırlar.
Bu basit süreç aslında elektronik cihazların kullanıcı, yazılım ve donanım arasında nasıl iletişim kurduğunu gösteren güzel bir örnektir.
Sık Sorulan Sorular
Arduino ile kronometre yapılabilir mi?
Evet. Arduino, butonlar ve uygun bir ekran kullanılarak başlatılabilen, durdurulabilen ve sıfırlanabilen dijital kronometre geliştirilebilir.
Arduino zamanı nasıl ölçer?
millis() gibi zaman fonksiyonları kullanılarak farklı anlar arasındaki süre hesaplanabilir.
millis() ne işe yarar?
Arduino çalışmaya başladıktan sonra geçen süreyi milisaniye cinsinden takip etmeye yardımcı olur.
Kronometre için LCD ekran gerekli midir?
Hayır. Başlangıçta sonuçlar Serial Monitor üzerinde gösterilebilir. LCD eklenmesi projeyi bilgisayardan bağımsız ve daha kullanışlı hale getirir.
Kronometre durdurulup tekrar devam ettirilebilir mi?
Evet. Program içerisinde geçen süre saklanarak kronometrenin kaldığı yerden devam etmesi sağlanabilir.
Arduino ile tur süresi ölçülebilir mi?
Evet. Ek bir buton ve uygun programlama mantığı kullanılarak kronometre durmadan ara süreler kaydedilebilir.
Kronometre geri sayım sayacına dönüştürülebilir mi?
Evet. Program değiştirilerek belirlenen bir süreden sıfıra doğru sayan zamanlayıcı oluşturulabilir.
Bu proje çocuklar için uygun mudur?
Temel Arduino, breadboard ve buton kullanımını öğrenmiş öğrenciler için zaman ölçme ve LCD ekran kullanımını öğreten eğitici proje örneklerinden biridir.
Sonuç
Arduino ile dijital kronometre projesi çocukların elektronik ve programlama bilgisini gerçek bir zaman ölçüm cihazında birleştirmesine yardımcı olur.
Butonlar kullanıcı girişlerini oluşturur, Arduino zaman farkını hesaplar ve LCD ekran ölçülen sonucu görüntüler.
Bu süreçte millis(), değişkenler, bool değerleri, koşullar ve kullanıcı arayüzü gibi önemli programlama kavramları uygulamalı olarak öğrenilebilir.
Proje daha sonra tur zamanı, rekor kaydı, buzzer ve geri sayım modu gibi yeni özelliklerle geliştirilebilir.
Bugün birkaç butonla zamanı ölçen bir çocuk, yarın kendi oyunlarının ve elektronik cihazlarının zaman sistemlerini tasarlayabilir.