Görevini aksatmayan bisiklet lambası
Bisiklet maketinin LED lambası yanıp sönerken düğmeye basınca hemen durmalı. Bekleten delay yerine geçen süreyi kontrol eden bir zamanlayıcı kur.
9+ yaş · 45 dakika · Arduino C++
İnteraktif atölyede aç →Neler öğreneceğiz?
Bisiklet maketinin LED lambası yanıp sönerken düğmeye basınca hemen durmalı. Bekleten delay yerine geçen süreyi kontrol eden bir zamanlayıcı kur.
Bu atölyede yalnız sonuca değil, tahmininin neden doğru veya yanlış çıktığına da bak. Bir deney günlüğünde giriş, beklenen sonuç, gözlenen sonuç ve düzeltme olmak üzere dört sütun aç.
Öğrenme hedefleri
- millis() ile LED zamanlamasını düğme okumayı engellemeden yönetmek.
- INPUT_PULLUP ile açık ve basılı düğme seviyelerini ayırt etmek.
- 400 ms ve 1000 ms aralıklarında düğmenin gecikmeden tepki verdiğini sınamak.
Malzeme listesi
- Arduino Uno ve USB
- LED
- 330 Ω ¼ W direnç
- Buton
- Breadboard ve 5 jumper
Bağlantı tablosu
| Başlangıç | Bağlantı |
|---|---|
| D9 | 330 Ω → LED anot |
| LED katot | GND |
| D2 | Buton bir taraf |
| Buton diğer taraf | GND |
Adım adım yapalım
- Düğme basılıyken lambanın neden hemen sönmesi gerektiğini kendi cümlenle açıkla.
- USB kablosunu çıkar. D9 çıkışını 330 Ω direnç üzerinden LED anoda bağla; katodu GND’ye götür.
- D2 ile GND arasına düğme koy. Dört bacaklı düğmede aynı taraftaki bağlı uçları önceden süreklilikle bul.
- Uno kartını seçip kodu yükle. Düğmeye basmadan 400 ms açık ve 400 ms kapalı ritmi izle.
- Ritmin farklı anlarında düğmeye bas. Basılı tutulduğu sürece LED sönük kalmalı.
- 400 sayısını 1000 yap; düğmenin tepkisinin yine beklemediğini kontrol et.
Kod · Arduino C++
const byte lamp=9, button=2;
unsigned long changed=0;
bool light=false;
void setup(){pinMode(lamp,OUTPUT);pinMode(button,INPUT_PULLUP);}
void loop(){
unsigned long now=millis();
if(digitalRead(button)==LOW){light=false;changed=now;}
else if(now-changed>=400){changed=now;light=!light;}
digitalWrite(lamp,light);
}Kod nasıl çalışır?
millis zaman damgasıdır. Unsigned çıkarma taşma çevresinde de süre karşılaştırmasını korur. INPUT_PULLUP açık düğmeyi HIGH, basılı düğmeyi LOW okur.
Beklenen sonuç
Uno kartını seçip kodu yükle. Düğmeye basmadan 400 ms açık ve 400 ms kapalı ritmi izle.
Arduino Uno için derleme kontrolü yapıldı. Fiziksel devre henüz ölçülmedi; bağlantı sonrası gözlemini deney günlüğüne kaydet.
Sıra sende
İkinci bir LED’i farklı süreyle çalıştıracak ikinci zaman damgasını ekle.
Güvenli atölye
Bu çalışma düşük gerilimli eğitim içindir. Donanımı enerji kapalıyken, bir yetişkinle kur. Şebeke elektriği kullanma. Kodun derlenmesi fiziksel devrenin test edildiği anlamına gelmez.
Çalışmıyorsa kontrol et
- Sonucu alamıyorsan programın ilk satırından başlayıp girdileri tek tek kontrol et.
- Donanım varsa enerjiyi ayır; GND, sinyal uçları ve parça yönlerini bağlantı tablosundan doğrula.
- Aynı anda yalnız bir şeyi değiştir; değişiklik öncesi ve sonrası sonucu günlüğe yaz.
Kontrol noktaları
- Başlamadan önce: gerekli malzemeleri say ve giriş değerlerini deney günlüğüne yaz.
- Kurulumdan sonra: her bağlantıyı aşağıdaki tabloyla karşılaştır; yazılım projesinde giriş listesini kontrol et.
- Testten sonra: beklenen sonucu kendi çıktınla karşılaştır. Fark varsa ilk farklı adımı bul.
Kaynakların kullanımı
Kaynak, ilgili kavramı öğrenmek ve karşılaştırmak içindir. Türkçe görev, örnek kod ve görseller bu atölye için özgün hazırlanmıştır; kaynak makalenin çevirisi veya kopyası değildir.
https://docs.arduino.cc/built-in-examples/digital/BlinkWithoutDelay/