Kod Ara

Ders 98-8: Arduino ile Buton ve LED'lerle Yürüyen Işık

Ders 98-8: Arduino ile Buton ve LED'lerle Yürüyen Işık

Bu proje, bir basma düğmesine her bastığınızda bir adım ilerleyen bir "yürüyen ışık" yapmayı gösterir. Kendi zamanlayıcısında çalışan bir ışık yerine doğrudan, dokunsal kontrol elde edersiniz: her basış, yanan LED'i bir konum ileri taşır ve son LED'den sonra başa döner. Bu, Arduino öğrenimindeki en kullanışlı yapı taşlarından biridir, çünkü size dijital bir girişi (düğme) dönen bir durum makinesiyle (hangi LED'in yanmakta olduğu) nasıl birleştireceğinizi öğretir — sürekli yeniden kullanacağınız bir kalıptır.

5 leds on breadboard with push button shown connected to Arduino UNO
5 leds on breadboard with push button shown connected to Arduino UNO

Bu kalıbı anladığınızda, aynı mantık çok çeşitli gerçek projelere güç verir. İşte bununla yapabileceğiniz birkaç pratik fikir:

  • Her basışın bir sonraki seçeneği vurguladığı bir cihazdaki menü seçici.
  • Bir makine veya süreç için sıralı adım göstergesi (adım 1, adım 2, adım 3...).
  • Bir düğmeyle elle ilerlettiğiniz bir puan veya seviye göstergesi.
  • Bir aydınlatma denetleyicisi için "sonraki kanal" veya "sonraki mod" göstergesi.
  • Oyuncuların sırayla bir sonraki lambayı yaktığı basit bir oyun veya bilgi yarışması zili.
  • Her basışın sırayla bir sonraki çıkışı etkinleştirdiği bir röle veya yük sıralayıcısı.

Otomatik çalışan bir ışığa kıyasla temel avantaj kontroldür: siz basana kadar hiçbir şey olmaz, böylece ışık yalnızca siz karar verdiğinizde ilerler. Video ayrıca aynı açma-kapama ve sıralama fikrinin yalnızca LED'leri değil, bir AC lambayı açmak veya bir motoru kontrol etmek için bir röleyi de sürebileceğini belirtir (videoda 19:52'de).

Donanım ve Bileşenler

Parça listesi kısa ve ucuzdur:

  • Bir Arduino kartı (Uno, Nano, Mega veya uyumlu herhangi bir kart).
  • Beş LED — 5 mm veya 3 mm, istediğiniz renklerde.
  • Beş akım sınırlama direnci, 200 Ω ile 1000 Ω arası (videoda 1 kΩ kullanılır).
  • Bir basma düğmesi anahtarı (anlık dokunmatik anahtar idealdir).
  • Bir breadboard ve birkaç DuPont jumper kablo.

LED'ler hakkında kısa bir not: katot daha kısa bacak ve düz kenarlı taraftır, anot ise daha uzun bacaktır (videoda 03:13'te). Direnç değeri kritik değildir — daha yüksek bir direnç LED'i yalnızca daha sönük yapar, bu nedenle yaklaşık 300 Ω ile 1000 Ω arasındaki her şey sorunsuz çalışır (videoda 05:33'te).

Bağlantı Kılavuzu

Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button

Bağlantılar temelde standart beş LED'li yürüyen ışıkla aynıdır, yalnızca bir basma düğmesi eklenmiştir. Her LED'in anodu kendi Arduino pinine bağlanır ve her katot kendi direnci üzerinden breadboard'daki ortak toprak hattına bağlanır. Bu yapımda LED'ler 3, 4, 5, 6 ve 7 numaralı pinlere bağlanır (videoda 31:37'de). Basma düğmesi, bir bacağı toprağa ve diğer bacağı 2 numaralı pine gelecek şekilde breadboard'a yerleştirilir — kodun düğme için kullandığı pinin aynısı (videoda 37:04'te).

Kod Arduino'nun dahili pull-up direncini etkinleştirdiği için düğmede harici bir direnç gerekmez. Düğmeye basılmadığında pin HIGH okur ve bastığınızda pin toprağa çekilir ve LOW okur (videoda 14:02'de).

Kod Açıklaması

Tam program bu makalenin altında mevcuttur. Burada asıl değiştirmek isteyeceğiniz kısımlara odaklanıyoruz.

Sketçin başında her LED ve düğme bir pine atanır. Yapımı kendi bağlantınıza uyacak şekilde özelleştirdiğiniz yer burasıdır:

const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;

int LED_ON = LED1; // which LED is currently lit

LED_ON değişkeni projenin kalbidir. Hangi LED'in o anda yanmakta olduğunu hatırlar ve LED1 ile başlar. Düğmeye her bastığınızda kod LED_ON'u dizideki bir sonraki LED'e ilerletir ve öncekini söndürür, böylece aynı anda yalnızca bir LED yanar.

Her basıştan sonra ayrıca küçük bir gecikme vardır:

delay(200); // debounce / give the user time between presses

Bu 200 milisaniyelik duraklama, tek bir fiziksel basışın birden çok basış olarak algılanmasını önler. Parmağınız titriyorsa veya düğme çok hassas geliyorsa bu sayıyı artırın; daha hızlı yanıt istiyorsanız azaltın. Çok düşük ayarlamanın ışığın beklenmedik şekilde ileri atlamasına neden olabileceğini unutmayın (videoda 41:20'de).

Ana mantık loop() içinde yer alır. Butonu okur ve yalnızca butona basıldığında (LOW okunduğunda) ışığı ilerletir. Dizi, LED1'den LED2'ye, LED3'e ve böyle devam ederek ilerlemek için bir dizi if / else if kontrolü kullanır ve sonuncudan sonra tekrar LED1'e döner. Yönü veya LED'lerin sırasını değiştirmek isterseniz, düzenlenecek blok burasıdır — hangi pinin hangisini takip ettiğini yeniden atamanız yeterlidir.

Canlı Proje ve Gösterim

Kodu yükledikten sonra butona basmak ilk LED'i yakar; bırakmak o LED'i açık bırakır. Bir sonraki basış ışığı ikinci LED'e, ardından üçüncü, dördüncü ve beşinciye taşır ve sonraki basış birinciye döner — sürekli bir döngü (videoda 40:22'de).

200 milisaniyelik gecikmenin güzel bir yan etkisi şudur: butonu basılı tutarsanız, ışık her 200 milisaniyede bir kendi kendine ilerlemeye devam eder ve buton basılı tutulduğu sürece projeyi etkili bir şekilde otomatik yürüyen ışığa dönüştürür (videoda 42:07'de). Butonu bırakın ve mevcut LED'de durur. Bu size tek bir butondan hem manuel adımlama hem de eller serbest çalıştırma olanağı verir.

Işığın hiç buton olmadan otomatik çalışmasını tercih ederseniz, bu ayrı bir yapımdır. Otomatik sürüm Ders 98-7: Arduino ve 5 LED Kullanarak Yürüyen Işık bölümünde ele alınmıştır.

Bu videodaki ilgili projeler

Bölümler

  • [00:00] 10 Arduino LED projesine genel bakış
  • [01:22] Arduino adım adım kursuna giriş
  • [02:29] LED'leri anlama: semboller, polarite ve pinler
  • [03:49] LED akım sınırlama direncinin hesaplanması
  • [30:47] 5 LED ile yürüyen ışık: bağlantı ve çalışma prensibi
  • [32:52] Yürüyen ışık kodu: pinler, zamanlama ve döngü
  • [36:41] Buton ile ışığı ilerletme
  • [37:44] Butonlu yürüyen ışık: kod incelemesi
  • [40:22] Gösterim ve basma gecikmesinin ayarlanması
  • [57:16] Kapanış konuşması ve kurs kapanışı

Görseller

wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Arduino UNO'ya bağlı breadboard üzerinde buton ile 5 led
Arduino UNO'ya bağlı breadboard üzerinde buton ile 5 led
940-Lessson 98-LED-8: Arduino code walking LED light with push button
Dil: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Dosyalar📁

Arduino Kütüphaneleri (zip)

Kullanım Kılavuzu