Yeni başlayanlar için Arduino Programlama Trafik Işığı Kontrol Cihazı Projesi Eğitimi

  • Joseph Goodman
  • 0
  • 3694
  • 204
reklâm

Arduino trafik ışığı bir saatten az sürede inşa edebileceğiniz eğlenceli bir projedir. İşte bir Arduino kullanarak nasıl kendi inşa edeceğiniz ve gelişmiş bir varyasyon için devrenin nasıl değiştirileceği.

Bunu bir video kadar öğretici olarak izlemek isterseniz, size gösterdik:

Arduino Trafik Işığı Kontrol Ünitesi Yapmanız Gerekenler

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

  • 1 x 10k-ohm direnç
  • 1 x buton anahtarı
  • 6 x 220-ohm dirençler
  • Bir breadboard
  • Telleri bağlama
  • Kırmızı, sarı ve yeşil LED

Neredeyse herhangi bir Arduino bu projede çalışacak ve yeterli pimlere sahip olacak. Arduino satın alma rehberimizi okuduğunuzdan emin olun Arduino Satın Alma Rehberi: Hangi Kurulu Almalısınız? Arduino Satın Alma Rehberi: Hangi Kurulu Almalısınız? Dışarıda pek çok farklı Arduino tahtası 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ım edelim! hangi modele ihtiyacınız olduğundan emin değilseniz. Bu parçaları Arduino başlangıç ​​kitinizde zaten bulabilirsiniz: Arduino Başlangıç ​​Kitinizde neler var? [Arduino Yeni Başlayanlar] Arduino Başlangıç ​​Kitinizde Neler Var? [Arduino Yeni Başlayanlar] Elektronik bileşenlerle dolu bir kutu ile karşı karşıya kaldıklarında bunalmış olmak kolaydır. Kitinizde tam olarak ne bulacağınıza dair bir kılavuz. .

Arduino Trafik Işığı: Temel Bilgiler

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

Her LED'in anotunu (uzun bacak) sekiz, dokuz ve on numaralı dijital pimlere bağlayın (220 ohm'luk bir dirençle). Katodları (kısa bacak) Arduino'nun toprağına bağlayın.

Arduino Trafik Işığı Kodu

Işıkları bir sayı yerine isimle hizalayabilmeniz için değişkenleri tanımlayarak başlayın. 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;

Sonra, 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ğunuz için, şimdi pimleri isme göre kullanabilirsiniz:

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

pinMode işlevi Arduino'yu belirli bir pimi çıkış olarak kullanacak şekilde yapılandırır. Bunu, LED'lerin çalışabilmesi için 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 (); gecikmesi (15000);  void changeLights () // yeşil kapalı, 3 saniye sarı açık digitalWrite (yeşil, DÜŞÜK); digitalWrite (sarı, YÜKSEK); Gecikme (3000); // sarıyı kapatın, ardından 5 saniye kırmızıyı açın digitalWrite (sarı, DÜŞÜK); digitalWrite (kırmızı, YÜKSEK); gecikmesi (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 rengi açın digitalWrite (sarı, DÜŞÜK); 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 pano ve bağlantı noktasını seçtiğinizden emin olun. Araçlar > Yazı tahtası ve Araçlar > Liman menüler). Her 15 saniyede bir değişen trafik ışığına sahip olmalısınız, bunun gibi (hızlandı):

Hadi bu kodu kıralım. changeLights fonksiyonu tüm zor işleri yapar. Bu, trafik ışığını sarı ve kırmızıdan sonra tekrar yeşile döndürür. Bu içine denir gibi döngü işlevinde, Arduino bu kodu sonsuza kadar çalıştırır, her seferinde 15 saniyelik bir duraklama olur..

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

  • Yeşil açık, sarı kapalı
  • Sarı kapalı, kırmızı
  • Sarı, kırmızı
  • 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ıp kapanıyor digitalWrite. Bu, çıkış pinlerini HIGH (açık) veya LOW (kapalı) 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 belli bir süre bekletir. Bu durumda üç saniye.

Derinleşmek: Arduino Yaya Geçidi

Şimdi temelleri bildiğinize göre, onu geliştirelim. Yayaların istedikleri zaman ışığı değiştirebilmeleri için bir buton ekleyin:

Trafik ışığının önceki örnekteki ile aynı olduğuna dikkat edin. Düğmeyi dijital pin 12'ye bağlayın. Anahtarın üzerinde yüksek empedanslı 10k-ohm direnç bulunduğunu fark edeceksiniz ve bunun nedenini merak ediyor olabilirsiniz. Bu aşağı açılır bir dirençtir.

Bir anahtar, akımın akışına izin verir veya vermez. Bu yeterince basit görünüyor, ancak bir mantık devresinde, akım her zaman yüksek veya düşük bir durumda akmalıdır (unutmayın, 1 veya 0, YÜKSEK veya DÜŞÜK). Gerçekten basılmayan bir buton anahtarının DÜŞÜK bir durumda olduğunu varsayabilirsiniz, ancak aslında, 'kayan' olduğu söylenir, çünkü hiçbir akım çekilmez.

Bu değişken durumda, elektriksel parazitle dalgalanırken yanlış bir okuma yapılması olasıdır. Başka bir deyişle, değişken bir anahtar ne güvenilir bir YÜKSEK ya da DÜŞÜK okuma vermiyor. Aşağıya çekme direnci, anahtar kapandığında az miktarda akımın akmasını sağlar, böylece doğru düşük durum okumasını sağlar.

Diğer mantık devrelerinde, bunun yerine bir çekme direnci bulabilirsiniz ve bu aynı prensipte çalışır, ancak tersi yönde, belirli mantık geçidinin varsayılan olarak yüksek olduğundan emin olun.

Şimdi, kodun döngü kısmında, ışıkları her 15 saniyede bir değiştirmek yerine, bunun yerine buton anahtarının durumunu okuyacak ve yalnızca etkinleştirildiğinde ışıkları 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 pin 12'de 

Şimdi, kurulum fonksiyonunda, anahtarı giriş olarak bildirmek için yeni bir satır ekleyin. Trafik ışıklarını yeşil seviyeye ayarlamak için bir satır ekleyin. Bu başlangıç ​​ayarı olmasaydı, ilk zamana kadar kapanırlardı changeLights koşar.

pinMode (düğme, GİRİŞ); digitalWrite (yeşil, YÜKSEK);

Tüm döngü işlevini yerine aşağıdaki gibi değiştirin:

void loop () if (digitalRead (düğme) == HIGH) gecikme (15); // yazılım ifbounce if (digitalRead (button) == HIGH) // eğer anahtar HIGH ise, örn. aşağı bastı - ışıkları değiştir! changeLights (); gecikmesi (15000); // 15 saniye bekle

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 adım atıyor. Bu düğme için açılan direnç gibi, bu basit kontrol bir düğmeye basıldığında küçük girişimi tespit eden kodu durdurur.

İçinde bekleyerek Eğer 15 saniye boyunca yapılan açıklamada, trafik ışıkları en azından bu süre boyunca değişemez. 15 saniye sonra döngü tekrar başlar. Döngünün her yeniden başlatılması, düğmenin durumunu tekrar okur, ancak basılı değilse Eğer deyimi hiçbir zaman etkin olmaz, ışıklar asla değişmez ve program yeniden başlatılır.

İşte bu nasıl görünüyor (hızlandı):

Kavşaklı Arduino Trafik Işığı

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

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

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

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

// bir tane kırmızı ışık int kırmızı1 = 10; int sarı1 = 9; int yeşil1 = 8; // iki tane açı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Ş); // iki pin modunu yak (kırmızı2, ÇIKIŞ); pinMode (sarı2, ÇIKIŞ); pinMode (yeşil2, ÇIKIŞ); 

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

void loop () changeLights (); gecikmesi (15000); 

Bir kez daha, tüm iş changeLights işlevi. Gitmekten çok kırmızı > kırmızı & Sarı > yeşil, Bu kod trafik ışıklarına alternatif olacaktır. Biri yeşil olduğunda diğeri kırmızıdır. İşte kod:

void changeLights () // her iki sarıyı da digitalWrite (yeşil1, DÜŞÜK) üzerine çevirin; digitalWrite (sarı1, YÜKSEK); digitalWrite (sarı2, YÜKSEK); gecikmesi (5000); // her iki sarıyı da kapat, ve yeşil ve kırmızı zeminin karşı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); gecikmesi (5000); // her ikisi de tekrar sarıyken digitalWrite (yellow1, HIGH); digitalWrite (sarı2, YÜKSEK); digitalWrite (yeşil2, DÜŞÜK); Gecikme (3000); // her iki sarıyı da kapat, zıt yeşil ve kırmızı digitalWrite (yeşil1, YÜKSEK); digitalWrite (sarı1, DÜŞÜK); digitalWrite (kırmızı1, DÜŞÜK); digitalWrite (sarı2, DÜŞÜK); digitalWrite (kırmızı2, YÜKSEK); gecikmesi (5000); 

İşte neye benziyor (hızlandırılmış):

Arduino Trafik Işığı Gelecek Adımlar

Hepsi bugün için. Yeni Arduino LED'ler ve düğmeler anlayışı, 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 ışıklarıyla tamamlanan dört yollu (veya daha fazla) bir kavşak inşa etmiyorsunuz??

Ya da neden bu yeni DIY MIDI kontrolörü veya Xod'lu Arduino robotu gibi daha büyük bir projeyle yeni becerilerinizi geliştirmiyorsunuz? Ayrıca VS Kod ve PlatformIO kodlu Arduino kodlamasına da bakabilirsiniz VS Kod ve PlatformIO Kodlu Daha İyi Arduino Kodlaması VS Kod ve PlatformIO Kodlu Daha İyi Arduino Kodlaması Arduino kodlamaya başlamak için kolay bir yol mu istiyorsunuz? PlatformIO ve VS Code ile Arduino projelerini basitleştirebilir ve daha hızlı öğrenebilirsiniz. .

Resim Kredisi: androsvector / Shutterstock




Henüz no comments

Modern teknoloji hakkında basit ve uygun fiyatlı.
Modern teknoloji dünyasında rehberiniz. Her gün bizi çevreleyen teknolojileri ve araçları nasıl kullanacağınızı ve Internet'te ilginç şeyleri nasıl keşfedeceğinizi öğrenin.