İlan

Arduino trafik ışığı, bir saatin altında inşa edebileceğiniz eğlenceli küçük bir projedir. Arduino kullanarak kendiniz nasıl oluşturacağınız ve gelişmiş bir varyasyon için devreyi nasıl değiştireceğiniz aşağıda açıklanmıştır.

Bunu bir video olarak eğitici olarak izlemeyi tercih ederseniz, aşağıdakileri ele aldık:

Arduino Trafik Işığı Kontrolörü İnşa Etmek İçin Gerekenler

Temel Arduino dışında, ihtiyacınız olacak:

  • 1 x 10k-ohm direnç
  • 1 x basma düğmesi
  • 6 x 220-ohm dirençler
  • Bir breadboard
  • Bağlantı kabloları
  • Kırmızı, sarı ve yeşil LED'ler

Hemen hemen her Arduino, yeterli pim olması koşuluyla bu proje için çalışacaktır. Okuduğumuzdan emin olun Arduino satın alma rehberi Arduino Satın Alma Rehberi: Hangi Tahtayı Almalısınız?Dışarıda çok farklı Arduino tahtaları var, kafanız karıştığı için affedilirsiniz. Projeniz için hangisini satın almalısınız? Bu Arduino satın alma rehberi ile yardımcı olalım! Daha fazla oku hangi modele ihtiyacınız olduğundan emin değilseniz. Bu parçaları zaten Arduino başlangıç ​​kiti

Arduino Başlangıç ​​Setinizde neler var? [Arduino Yeni Başlayanlar]Elektronik bileşenlerle dolu bir kutu ile karşı karşıya kaldığınızda bunalmak kolaydır. Kitinizde tam olarak ne bulacağınıza dair bir kılavuz. Daha fazla oku .

Arduino Trafik Işığı: Temel Bilgiler

Küçük başlayalım. Temel, tek bir trafik ışığı başlamak için iyi bir yerdir. Devre şu:

Temel Arduino trafik ışığı devre şeması

Her LED'in anodunu (uzun bacak) sekiz, dokuz ve on dijital pimlere (220 ohm direnç üzerinden) bağlayın. Katotları (kısa bacak) Arduino'nun topraklamasına bağlayın.

Arduino Trafik Işığı Kodu

Değişkenleri tanımlayarak başlayın, böylece ışıkları sayı yerine adla ele alabilirsiniz. Yeni bir Arduino projesi başlatın ve şu satırlarla başlayın:

int kırmızı = 10; int sarı = 9; int yeşil = 8;

Ardından, kırmızı, sarı ve yeşil LED'lerin çıkış olarak yapılandırılacağı kurulum işlevini ekleyelim. Pin numaralarını temsil etmek için değişkenler oluşturduğunuzdan, artık pinlere adlarıyla başvurabilirsiniz:

void setup () {pinMode (kırmızı, ÇIKIŞ); pinMode (sarı, ÇIKIŞ); pinMode (yeşil, ÇIKIŞ); }

pinMode işlevi Arduino'yu belirli bir pimi çıkış olarak kullanacak şekilde yapılandırır. LED'lerinizin çalışması için bunu yapmanız gerekir. Şimdi trafik ışığının gerçek mantığı için. İşte ihtiyacınız olan kod. Bunu değişken tanımlarınızın ve kurulum işlevinizin altına ekleyin:

void loop () {changeLights (); gecikme (15000); } void changeLights () {// yeşil kapalı, 3 saniye sarı açık digitalWrite (yeşil, DÜŞÜK); digitalWrite (sarı, YÜKSEK); gecikme (3000); // sarı kapatın, sonra 5 saniye kırmızı açın digitalWrite (sarı, DÜŞÜK); digitalWrite (kırmızı, YÜKSEK); gecikme (5000); // 2 saniye boyunca kırmızı ve sarı yanar (kırmızı zaten açıktır) digitalWrite (sarı, YÜKSEK); gecikme (2000); // kırmızı ve sarıyı kapatın, ardından yeşil digitalWrite'ı (sarı, DÜŞÜK) açın; digitalWrite (kırmızı, DÜŞÜK); digitalWrite (yeşil, YÜKSEK); gecikme (3000); }

Bu kodu Arduino'nuza yükleyin ve çalıştırın (doğru kartı ve bağlantı noktasını Araçlar > Yazı tahtası ve Araçlar > Liman menüler). Şunlar gibi her 15 saniyede bir değişen çalışan bir trafik ışığına sahip olmalısınız (hızlandırılmış):

Arduino trafik ışığı eylem

Bu kodu yıkalım. changeLights işlevi tüm zor işleri gerçekleştirir. Bu, trafik ışığını sarı ve kırmızıdan sonra yeşile döndürür. Bunun içinde denir gibi döngü Arduino bu kodu sonsuza dek çalıştıracak ve her seferinde 15 saniyelik bir duraklama yapacak.

changeLights işlevi dört ayrı adımdan oluşur:

  • Yeşil açık, sarı kapalı
  • Sarı kapalı, kırmızı açık
  • Sarı açık, kırmızı açık
  • Yeşil açık, kırmızı kapalı, sarı kapalı

Bu dört adım, gerçek trafik ışıklarında kullanılan işlemi tekrarlar. Her adım için kod çok benzer. Uygun LED kullanılarak açılır veya kapanır digitalWrite. Bu, çıkış pinlerini YÜKSEK (açık için) veya DÜŞÜK (kapalı için) olarak ayarlamak için kullanılan bir Arduino işlevidir.

Gerekli LED'leri etkinleştirdikten veya devre dışı bıraktıktan sonra, gecikme Arduino'yu belirli bir süre bekletir. Bu durumda üç saniye.

Derine Doğru: Arduino Yaya Geçidi

Artık temel bilgileri bildiğinize göre, geliştirelim. Yayaların ışığı istedikleri zaman değiştirmeleri için bir buton ekleyin:

Arduino yaya geçidi devre şeması

Trafik ışığının önceki örnekle tam olarak aynı olduğuna dikkat edin. Düğmeyi dijital pim 12'ye bağlayın. Anahtarın yüksek empedanslı 10k-ohm'luk bir dirence sahip olduğunu fark edeceksiniz ve nedenini merak ediyor olabilirsiniz. Bu bir aşağı çekme direnci.

Bir anahtar, geçerli akışa izin verir veya vermez. Bu yeterince basit görünüyor, ancak bir mantık devresinde, akım daima yüksek veya düşük durumda akmalıdır (unutmayın, 1 veya 0, YÜKSEK veya DÜŞÜK). Aslında basılmayan bir basma düğmesinin DÜŞÜK durumda olacağını varsayabilirsiniz, ancak aslında 'yüzen' olduğu söylenir, çünkü hiç akım çekilmez.

Bu kayan durumda, elektrik paraziti ile dalgalandığı için yanlış bir okuma meydana gelebilir. Başka bir deyişle, kayan bir anahtar ne güvenilir YÜKSEK ne de DÜŞÜK okuma vermiyor. Bir aşağı çekme direnci, anahtar kapandığında az miktarda akımın akmasını sağlar, böylece doğru bir düşük durum okuması sağlar.

Diğer mantık devrelerinde, bunun yerine bir çekme direnci bulabilirsiniz ve bu aynı prensipte çalışır, ancak tersine, belirli mantık kapısının varsayılan olarak yüksek olduğundan emin olur.

Şimdi, kodun döngü bölümünde, ışıkları her 15 saniyede bir değiştirmek yerine, düğme anahtarının durumunu okuyacak ve ışıkları yalnızca etkinleştirildiğinde değiştireceksiniz.

Arduino Yaya Geçidi Kodu

Düğme iğnenizi saklamak için yeni bir değişken ekleyerek başlayın:

int düğmesi = 12; // anahtar pim 12'de. 

Şimdi, kurulum işlevinde, anahtarı giriş olarak bildirmek için yeni bir satır ekleyin. Trafik ışıklarını yeşil sahneye ayarlamak için bir çizgi ekleyin. Bu ilk ayar olmadan, ilk defaya kadar kapalı olurlar changeLights koşar.

pinMode (düğme, INPUT); digitalWrite (yeşil, YÜKSEK);

Bunun yerine döngü işlevinin tamamını aşağıdaki gibi değiştirin:

void loop () {if (digitalRead (düğme) == YÜKSEK) {gecikme (15); // eğer yazılım yüksekse (digitalRead (düğme) == YÜKSEK) {// anahtar YÜKSEK ise, yani. aşağı itti - ışıkları değiştirin! changeLights (); gecikme (15000); // 15 saniye bekleyin}} }

Bunu yapmalı. Düğme kontrolünün neden iki kez gerçekleştiğini merak ediyor olabilirsiniz (digitalRead (düğme)), küçük bir gecikmeyle ayrılmış. Bu geri dönüyor. Düğmeye ait çekme direnci gibi, bu basit kontrol, düğmeye basıldığında küçük parazitleri algılayan kodu durdurur.

İçinde bekleyerek Eğer Trafik ışıkları en az bu süre boyunca değiştirilemez. 15 saniye geçtikten sonra döngü yeniden başlar. Döngünün her yeniden başlatılması, düğmenin durumunu tekrar okur, ancak basılmazsa, Eğer ifadesi asla etkinleşmez, ışıklar asla değişmez ve program yeniden başlar.

Bunun nasıl göründüğü (hızlandırılmış):

Eylem Arduino yaya geçidi

Kavşaklı Arduino Trafik Işığı

Daha gelişmiş bir model deneyelim. Yaya geçidi yerine, devrenizi iki trafik ışığına sahip olacak şekilde değiştirin:

Kavşaklı Arduino trafik ışıkları için cricuit diyagramı

İkinci trafik ışığını 11, 12 ve 13 dijital pimlerine bağlayın.

Kavşaklı Arduino Trafik Işığı Kodu

İlk olarak, yeni trafik ışığı pinlerinizi değişkenlere atayın ve ilk örnekte olduğu gibi çıktılar olarak yapılandırın:

// açık olan. int kırmızı 1 = 10; int sarı1 = 9; int yeşil1 = 8; // iki ışık. int kırmızı2 = 13; int sarı2 = 12; int yeşil2 = 11; void setup () {// bir pinMode ışığı (kırmızı1, ÇIKIŞ); pinMode (sarı1, ÇIKIŞ); pinMode (yeşil1, ÇIKIŞ); // açık iki pinMode (kırmızı2, ÇIKIŞ); pinMode (sarı2, ÇIKIŞ); pinMode (yeşil2, ÇIKIŞ); }

Şimdi, ilk örnekteki kodu (yaya geçidi yerine) kullanmak için döngünüzü güncelleyin:

void loop () {changeLights (); gecikme (15000); }

Bir kez daha, tüm çalışmalar changeLights işlevi. Gitmektense kırmızı > kırmızı & Sarı > yeşil, bu kod trafik ışıklarını değiştirir. Biri yeşil olduğunda, diğeri kırmızıdır. İşte kod:

void changeLights () {// digitalWrite (green1, LOW) üzerinde her iki sarıyı da çevirin; digitalWrite (sarı1, YÜKSEK); digitalWrite (sarı2, YÜKSEK); gecikme (5000); // her iki sarıyı da kapatıp yeşil ve kırmızı zıt digitalWrite (sarı1, DÜŞÜK); digitalWrite (kırmızı1, YÜKSEK); digitalWrite (sarı2, DÜŞÜK); digitalWrite (kırmızı2, DÜŞÜK); digitalWrite (yeşil2, YÜKSEK); gecikme (5000); // yine her iki sarı da digitalWrite (sarı1, YÜKSEK); digitalWrite (sarı2, YÜKSEK); digitalWrite (yeşil2, DÜŞÜK); gecikme (3000); // her iki sarıyı da kapatıp yeşil ve kırmızı zıt digitalWrite (green1, HIGH); digitalWrite (sarı1, DÜŞÜK); digitalWrite (kırmızı1, DÜŞÜK); digitalWrite (sarı2, DÜŞÜK); digitalWrite (kırmızı2, YÜKSEK); gecikme (5000); }

İşte böyle görünüyor (hızlandırılmış):

Eylem kavşak ile Arduino trafik ışığı

Arduino Trafik Işığı Sonraki Adımlar

Hepsi bugün için. Arduino LED'leri ve düğmeleri hakkındaki yeni anlayışınız her türlü farklı proje için geçerlidir. Bu trafik ışıklarını genişletmek istiyorsanız, neden birçok yaya geçidi ve yaya trafik ışığı ile birlikte dört yönlü (veya daha fazla) bir kavşak inşa etmiyorsunuz?

Ya da neden böyle daha büyük bir projeyle yeni becerilerinizi genişletmeyesiniz? DIY MIDI denetleyicisi veya Xod'lu Arduino robotu? Ayrıca, VS Kodu ve PlatformIO ile Arduino kodlaması VS Kodu ve PlatformIO ile Daha İyi Arduino KodlamasıArduino kodlamasını başlatmak için kolay bir yol mu istiyorsunuz? PlatformIO ve VS Code ile Arduino projelerini basitleştirebilir ve daha hızlı öğrenebilirsiniz. Daha fazla oku .

Resim Kredisi: androsvector / Shutterstock

Joe, İngiltere Lincoln Üniversitesi Bilgisayar Bilimi mezunudur. Profesyonel bir yazılım geliştiricisidir ve uçağı uçurmadığı veya müzik yazmadığı zamanlarda, genellikle fotoğraf çekerken veya video üretirken bulunabilir.