Arduino ile Knight Rider LED Tarayıcı yap

  • Gabriel Brooks
  • 0
  • 2032
  • 121
reklâm

Hiç kendi Knight Industries İki Bin (KITT) arabanız olmasını dilediyseniz - Knight Rider’dan biliyor musunuz? Bir LED tarayıcı oluşturarak hayalinizi gerçeğe bir adım daha yaklaştırın! İşte sonuç:

Neye ihtiyacın var

Bu proje için ihtiyaç duyulan çok fazla parça yok ve zaten birçoğunuz olabilir:

  • 1 x Arduino UNO veya benzeri
  • 1 x Breadboard
  • 8 x kırmızı LED
  • 8 x 220 ohm dirençler
  • 1 x 10k ohm potansiyometre
  • Erkek-erkek telleri bağla

Arduino başlangıç ​​kitiniz varsa, Arduino Başlangıç ​​Setine Neler Dahil? [MakeUseOf Açıklar] Bir Arduino Başlangıç ​​Kitine Neler Dahil? [MakeUseOf Açıklıyor] Arduino açık kaynaklı donanımını daha önce MakeUseOf'ta tanıtmıştım, ancak bir şey oluşturmak ve gerçekten başlamak için gerçek Arduino'dan daha fazlasına ihtiyacınız olacak. Arduino "başlangıç ​​kitleri"… muhtemelen bu parçaların hepsine sahip olabilirsiniz (başlangıç ​​kitiyle neler yapabilirsiniz? 5 Yeni Başlayanlar İçin Yapabileceğiniz Yeni Başlayanlar İçin Benzersiz Arduino Projeleri Yeni Başlangıç ​​Kitiyle Yapabileceğiniz Yeni Benzersiz Arduino Projeleri Başlangıç ​​Seti).

Neredeyse herhangi bir Arduino, sekiz pimi olduğundan emin olarak çalışacaktır (Daha önce hiç Arduino kullanmadın mı? Buradan başlayın: Arduino ile Başlarken: Başlangıç ​​Kılavuzu Arduino ile Başlarken: Başlangıç ​​Kılavuzu Arduino, esnek tabanlı, açık kaynaklı bir elektronik prototip platformudur. , kullanımı kolay donanım ve yazılım. Sanatçılar, tasarımcılar, hobiler ve etkileşimli nesneler veya ortamlar yaratmak isteyen herkes için tasarlanmıştır.). Arduino Programlama - Vardiya Kayıtları ile Çalma (a.k.a Daha Fazla LED) Arduino Programlama - Vardiya Kayıtları ile Çalma (a.k.a Daha Fazla LED) Bugün size biraz size Kaydırma Kaydı hakkında biraz bilgi vermeye çalışacağım. Bunlar, Arduino programlamasının oldukça önemli bir parçasıdır, çünkü temel olarak, LED'leri kontrol etmek için kullanabileceğiniz çıkış sayısını arttırırlar, bunun için Arduino'nun yeterli pinleri olduğundan, bu proje için gerekli olmasa da.

Plan Oluştur


Bu çok basit bir proje. Çok sayıda kablodan karmaşık görünse de, her bir parça çok basittir. Her Işık Yayan Diyot (LED) kendi Arduino pimine bağlanmıştır. Bu, her bir LED'in ayrı ayrı açılıp kapatılabileceği anlamına gelir. Arduino analoguna tarayıcının hızını ayarlamak için kullanılacak pimler cinsinden bir potansiyometre bağlanır.

Devre


Potansiyometrenin dış sol pimini (aşağıya bakacak şekilde, aşağıya bakacak şekilde) toprağa bağlayın. Ters dış pimi + 5v'ye bağlayın. Düzgün çalışmıyorsa, bu pimleri ters çevirin. Orta pimi Arduino analoguna 2’ye bağlayın..

Her LED'in anodunu (uzun bacak) bir ila sekiz arasındaki dijital pinlere bağlayın. Katotları (kısa bacak) Arduino toprağına bağlayın.

Kod

Yeni bir çizim oluşturun ve kaydedin “KnightRider”. İşte kod:

const int led [] = 1,2,3,4,5,6,7,8; // Led pinleri const int totalLeds = 8; int zamanı = 50; // Varsayılan hız void setup () // Tüm çıktıları sıfırla (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT);   void loop()  for(int i = 0; i  0; --i) // Sağdan sola tarama süresi = analogRead (2); digitalWrite (ledler [i], YÜKSEK); gecikme süresi); digitalWrite (ledler [1 - 1], YÜKSEK); gecikme süresi); digitalWrite (ledler [i], DÜŞÜK); 

Yıkalım. Her LED pimi bir dizide saklanır:

const int led [] = 1,2,3,4,5,6,7,8;

Bir dizi aslında ilgili öğeler topluluğudur. Bu elemanlar sabit olarak tanımlanır (“const”), bu daha sonra değiştirilemeyecekleri anlamına gelir. Bir sabit kullanmak zorunda değilsiniz (kaldırırsanız, kod mükemmel çalışacaktır. “const”), tavsiye edilmesine rağmen.

Bir dizinin öğelerine köşeli parantezler (“[]”) ve indeks adı verilen bir tam sayı. Endeksler sıfırdan başlar “LED'ler [2]” dizideki üçüncü öğeyi döndürür - pim 3. Diziler, kodun daha hızlı yazılmasını ve okunmasını kolaylaştırır, bilgisayarın zorlanmasını sağlar!

Her forma bir çıktı olarak yerleştirmek için bir for loop kullanılır:

(int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT); 

Bu kod içinde “kurmak()” fonksiyonu, programın başlangıcında sadece bir kez çalışması gerektiğinden. Çünkü döngüler çok kullanışlıdır. Her seferinde farklı bir değerle aynı kodu tekrar tekrar çalıştırmanıza izin verir. Dizilerle çalışmak için mükemmeldirler. Bir tam sayı “ben” bildirilir ve yalnızca döngü içindeki kod bu değişkene erişebilir (bu, “kapsam”). İ değeri sıfırdan başlar ve döngünün her tekrarlaması için, i bir artırılır. Bir kez i değeri, değerinden küçük veya eşittir. “totalLeds” değişken, döngü “sonları” (Durak).

İ değeri erişmek için kullanılır. “led” dizi. Bu döngü dizideki her öğeye erişir ve onu bir çıktı olarak yapılandırır. Manuel olarak yazabilirsiniz “pinMode (pin, ÇIKIŞ)” Sekiz kez, ama neden üç tane yazabiliyorken sekiz satır yaz?

Bazı programlama dilleri bir dizide kaç tane eleman olduğunu söyleyebilse de (genellikle array.length gibi bir sentaksla), Arduino o kadar basit yapmaz (biraz daha fazla matematik içerir). Dizideki öğelerin sayısı zaten bilindiğinden, sorun değil.

Ana döngünün içinde (geçersiz döngü ()) döngüler için iki tane daha vardır. İlk önce LED'leri AÇIK ve sonra KAPALI'yı 1 - 8 arasında ayarlar. İkinci döngü LED'leri AÇIK ve sonra KAPALI'yı 8 - 1 olarak ayarlar. Mevcut pimin nasıl ayarlandığına ve mevcut pinin artı bir ayarının nasıl yapıldığına dikkat edin. Bu, aynı anda her zaman iki LED'in yanmasını sağlayarak tarayıcının daha gerçekçi görünmesini sağlar.

Her döngünün başlangıcında, tencerenin değeri “zaman” değişken:

zaman = analog Okuma (2);

Bu, iki kere yapılır, her bir döngü içinde bir kez. Bunun sürekli kontrol edilmesi ve güncellenmesi gerekiyor. Bu, döngülerin dışında olsaydı, yine de işe yarayacaktı, ancak küçük bir gecikme yaşanacaktı - yalnızca bir döngü yürütmeyi bitirdiğinde çalışırdı. Saksılar analog, bu yüzden neden? “analogRead (iğne)” kullanıldı. Bu, sıfır (minimum) ve 1023 (maksimum) arasındaki değerleri döndürür. Arduino bu değerleri daha yararlı bir şeye dönüştürebilir, ancak bu kullanım için mükemmeldir..

Değişen LED'ler (veya tarayıcının hızı) arasındaki gecikme milisaniye (1/1000 saniye) olarak ayarlanmıştır, bu nedenle maksimum süre sadece 1 saniyedir.

Gelişmiş Tarayıcı

Şimdi temelleri bildiğinize göre, daha karmaşık bir şeye bakalım. Bu tarayıcı, LED'leri dışarıdan başlayıp içeri doğru çalışan çiftler halinde aydınlatacaktır. Daha sonra bunu tersine çevirir ve içeriden dışarıya çiftlere gider. İşte kod:

const int led [] = 1,2,3,4,5,6,7,8; // Led pinleri const int totalLeds = 8; const int halfLeds = 4; int zamanı = 50; // Varsayılan hız void setup () // Tüm çıktıları sıfırla (int i = 0; i <= totalLeds; ++i)  pinMode(leds[i], OUTPUT);   void loop()  for(int i = 0; i <(halfLeds - 1); ++i)  // Scan outside pairs in time = analogRead(2); digitalWrite(leds[i], HIGH); digitalWrite(leds[(totalLeds - i) - 1], HIGH); delay(time); digitalWrite(leds[i], LOW); digitalWrite(leds[(totalLeds - i) - 1], LOW); delay(time);  for(int i = (halfLeds - 1); i> 0; --i) // Çiftlerin içini tara süresi = = AnalogRead (2); digitalWrite (ledler [i], YÜKSEK); digitalWrite (ledler [(totalLeds - i) - 1], YÜKSEK); gecikme süresi); digitalWrite (ledler [i], DÜŞÜK); digitalWrite (ledler [(totalLeds - i) - 1], DÜŞÜK); gecikme süresi); 

Bu kod biraz daha karmaşık. Her iki döngünün de sıfırdan nasıl geçtiğine dikkat edin “halfLeds - 1” (3). Bu daha iyi bir tarayıcı yapar. Her iki ilmek de 4 - 0 ve 0 - 4'ten geçerse, aynı LED'ler aynı sırada iki kez yanıp söner - bu çok iyi görünmez.

Artık çalışan bir Knight Rider LED tarayıcısına sahip olmalısınız! Daha fazla veya daha büyük LED kullanmak veya kendi düzeninizi uygulamak için bunu değiştirmek kolay olacaktır. Bu devre bir Raspberry Pi'ye taşınması çok kolaydır (Pi'ye yeni mi geliyorsunuz? Buradan başlayın Raspberry Pi: Resmi olmayan Eğitim Öğretmeni Raspberry Pi: Resmi Olmayan Eğitim Öğretmeni Daha fazla bilgi edinmek isteyen bir Pi sahibi ya da potansiyel olarak bu kredinin sahibi olmak istersiniz kart boyutunda bir cihaz, bu kaçırmak istediğiniz bir rehber değil.) veya ESP8266 Arduino Katiliyle Tanışın: ESP8266 Arduino Katiliyle Tanışın: ESP8266 Size, dahili Wi-Fi özellikli bir Arduino uyumlu geliştirme kartı olduğunu söylersem 10 dolardan az bir fiyata Fi? Peki, var. .

KITT kopyası kullanıyor musunuz? Yorumlarda her şeyi Knight Rider görmek isterim.




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.