İçindekiler:

Titreşen Mum Köprü: 6 Adım (Resimlerle)
Titreşen Mum Köprü: 6 Adım (Resimlerle)

Video: Titreşen Mum Köprü: 6 Adım (Resimlerle)

Video: Titreşen Mum Köprü: 6 Adım (Resimlerle)
Video: ÇOCUKLARLA CİMNASTİK YAPIYORUZ! Amut, Çember, Geri ve Öne Köprü! 🤸‍♀️ 2024, Kasım
Anonim
Image
Image

Bu talimat, statik ışıklı basit bir mum köprüsünün, sonsuz yanıp sönen ışık, parıldama, dalga desenleri ve benzeri varyasyonlarla hoş bir parlayan ruh hali ışığına nasıl dönüştürüleceğini gösterir. After Christmas Sales'den 8 €'ya bir mum köprüsü satın aldım. 7 adet led ışığı ve bazı 33 V 3 W duvar adaptörüne sahiptir. Parlak ve sıcak beyaz bir renkle parlıyor ve mumları titretmek için bir Arduino koyacağım bu proje için mükemmel olacak. En popüler Arduino, Arduino Uno'dur. Bu projede Arduino Mega 2560 kullanacağım.

30 V güç kaynağından vazgeçeceğim ve güç kaynağı olarak cep telefonları için tasarlanmış 5 V'luk basit bir güç bankası kullanacağım.

Güç bankaları hakkında bilinmesi gereken iyi bir şey, pili 3,7 V'tan 5 V'a dönüştüren bir iç devreye sahip olmalarıdır. İşlem bir miktar güç kullandığından, kullanılmadığı takdirde güç bankası kendini kapatır. Güç bankası Arduino tabanlı Kendin Yap gadget'ları için kullanılıyorsa, gadget kendini güç tasarrufu uyku moduna geçiremez ve birkaç dakika sonra yeniden başlatılamaz. Bu, güç bankasını kapatacaktır. Bu titreyen mum köprünün uyku modu yok. Güç kablosu çekilene kadar güç bankasını aktif tutarak sürekli güç kullanır.

Video, mum köprüsünü statik modda ve tam titrek olarak gösterir. Tam titreme, gözler için gerçekten çok can sıkıcı, video ise biraz yumuşatıyor. Kabloların kesilmesi, yeni bağlantıların lehimlenmesi ve bazı bileşenlerin eklenmesi dahil olmak üzere donanım sabitlendikten sonra, Arduino için kod yazılarak istenen tüm ışık desenleri oluşturulur. Bu talimata dahil ettiğim kalıplar:

  • Gerçek mumları taklit eden 4 farklı titreyen ışık
  • 2 farklı yanıp sönme (aksi halde statik ışıkların rastgele yanıp sönmesi)
  • 2 farklı dalga deseni
  • basit statik ışık

Anahtarlama kalıpları, tek kullanıcı arabirimi öğesi olan bir basma düğmesi aracılığıyla gerçekleşir. Kişi ne kadar çok desen isterse ve ne kadar çok ayarlanabilirlik isterse, o kadar çok düğme ve düğme eklemek gerekir. Ama güzellik basitlikte yatıyor. Seçilebilir desen sayısını düşük tutun. Donanıma çok sayıda kontrol ekleyerek değil, kodlama ve test ederken en iyi ayarları seçin.

Gereçler

  • 7 ampullü 1 LED mum köprüsü. Pilli veya ölümcül 110 - 240 V AC'yi 6 - 30 V DC'ye dönüştüren duvara monte güç kaynağına sahip düşük voltajlı bir DC modeli olduğundan emin olun. Bu yüzden mum köprüsünü kesmek tamamen güvenlidir.
  • 1 Arduino Mega (herhangi bir başka mikrodenetleyici yapacaktır, sadece programlayabildiğinizden emin olun)
  • 1 prototipleme devre tahtası
  • atlama telleri ve diğer tel
  • lehim aleti
  • multimetre
  • 7 direnç, 120 Ω
  • 1 basma düğmesi (Bunun yerine Arduino'daki yerleşik düğmeyi nasıl kullanabileceğinizi göstereceğim)
  • 7 transistör için bir darlington transistör IC, ULN2803AP yapacaktır (Bir Arduino Uno veya Meaga kullanıyorsanız, buna gerçekten ihtiyacınız yoktur)
  • Cep telefonları için tasarlanmış 5 V güç bankası

Adım 1: Elinizde Neler Olduğunu İnceleyin

Ne Aldığını İncele
Ne Aldığını İncele
Ne Aldığını İncele
Ne Aldığını İncele

Her bir LED'in hangi voltajda çalıştığını ve ne kadar akım geçtiğini öğrenin.

  1. Mum köprüsünün altını açın. Bir muma giden iki kabloyu bulun.
  2. Bakır telleri kesmeden, bakır telleri ortaya çıkaran kablolardan bir miktar izolasyonu sıyırın.
  3. Işıkları açın (rahatlayın, sadece birkaç volt) ve ortaya çıkan bakır tellerin üzerindeki voltajı ölçün.
  4. Kabloyu ölçüm noktalarından birinden kesin (bu noktada elbette ışıklar söner), her iki ucundan bir miktar yalıtımı (3 - 4 mm) soyun. Geçen akımı ölçün. Yaptığınız şey, multimetre ile kesilen kabloyu yeniden bağlayarak, tüm akımın multimetrenizden geçmesine izin vermek, şimdi size akım miktarını söylemek.

okumalarım

Bir mum üzerindeki voltaj (adım 3): 3,1 V

Mum köprüsüne giden güç kaynağının 33 V olduğuna dikkat edin. Yani yedi kez 3,1 V sadece 21,7 V'tur. Bazı mumlarda fazladan bir direnç olması gerekir. Bu mum voltajını ölçseydim, yaklaşık 11 V olması gerekirdi.

Mum yandığında akan akım (adım 4): 19 mA

Her şeye 5 V 2 A pil takımıyla güç vereceğim. Mumlar için voltajı 5 V'tan 3 V'a düşürmem gerekiyor. 19 mA akımda voltajı 2 V düşürecek bir dirence ihtiyacım var.

2 V / 0.019 A = 105 Ω

Güç kaybı:

2 V * 19 mA = 38 mW

Bu ihmal edilebilir. Çok daha fazlası direncin kendisini patlatabilir. Yine de, 105 Ω direnç olmadan LED'i patlatabilirim. 100 Ω ve 120 Ω dirençlerim var. 120 Ω ile gidiyorum. Daha fazla koruma sağlar.

7 mumun tümünün 3 V ile test edilmesi, yalnızca çok loş bir ışığa sahip olan ve yalnızca 0,8 mA geçen bir mum dışında, parlak bir ışık verdi. Bu benim ekstra dirençli mumumdu. Diğer mumların hiç direnci olmadığı ortaya çıktı. Avizede kullanılan LED ışıklar sadece 3 V içindir! Fazladan dirençli mumun hafif bir şiddetle açılması gerekiyordu ama hiçbir şey kırılmadı. Direnç, plastik mum ampulün içindeki küçük LED'in hemen altında bulundu. Onu söküp telleri yeniden lehimlemek zorunda kaldım. Biraz dağınıktı, çünkü havya, montaj için kullanılan bir miktar sıcak tutkalı ısıttı.

Artık hangi güç kaynağını kullanırsam kullanayım, voltaj ne olursa olsun, voltajı 3 V'a düşürmem ve 19 mA'nın geçmesine izin vermem gerektiğini biliyorum.

LED teknolojisine daha aşina olsaydım, kullanılan LED türünü tanır ve 3 V'a ihtiyacı olduğunu bilirdim.

Adım 2: Biraz Lehimleme

Bazı Lehimleme
Bazı Lehimleme
Bazı Lehimleme
Bazı Lehimleme

Bu adımda 5 mumdan gelen tüm pozitif (+) kabloları bir kabloya bağlarım. Sonra her mum için ayrı bir negatif (-) tel ekliyorum. Bir LED ışığı yalnızca '+' ve '-' sağa gittiğinde yanar. Her mumdan sadece iki özdeş kablo ucuna sahip olduğunuz için hangisinin '+' hangisinin '-' olduğunu test etmeniz gerekir. Bunun için 3 V'luk bir güç kaynağına ihtiyacınız var. İki adet AAA pil içeren küçük bir pil paketim vardı. 3 V'luk bir madeni para pil de test için harika çalışıyor.

Mum köprüsünün Arduino ile köprü arasında çalışması için 8 kabloya ihtiyacı vardır. 8 yalıtılmış telli bir kablo bulursanız, bu harika olurdu. Bir tel 120 mA tutmalıdır, geri kalanı en fazla 20 mA taşır. Sahip olduğum 4 çift telli kablo kullanmayı seçtim.

İlk resim, mumlardan gelen tüm '+' kabloları bağlamak için ortak bir kabloyu nasıl hazırladığımı gösteriyor. Her mum için ortak telin bir miktar yalıtımını soyun. Her bir bağlantı için bir parça büzüşmeli yalıtım tüpü (resimdeki sarı şerit) ekleyin ve bunu ortak kablonun doğru noktasına yerleştirin. Her mumdan '+' teli ek yerine lehimleyin, ek yerini büzülme borusuyla kapatın ve küçültün. Tabii ki, basit yapışkan bant da iyidir, sonunda her şey kapatılacaktır.

İkinci resim, her mumun ihtiyaç duyduğu '-' telleri gösterir. Ortak '+' kablosu doğrudan Arduino'nun 5 V pinine (veya belki de devre tahtası üzerinden) gider. Her '-' tel, transistör IC'nin kendi pinine gider (yine, muhtemelen devre tahtası aracılığıyla).

Arduino'ya genellikle prototipleme panosu denir. Breadboard, prototiplerde kullandığınız bir şeydir. Bu talimatta anlattığım şey bir prototip. Her şeyi güzel plastik kasalarda saklayan lüks, parlak bir ürün haline getirmeyeceğim. Prototipten bir sonraki seviyeye geçmek, devre kartını baskılı devre kartı ve lehimli bileşenlerle değiştirmek ve hatta Arduino'yu sadece basit bir mikrodenetleyici çipiyle değiştirmek anlamına gelir (aslında böyle bir çip Arduino'nun beynidir). Ve her şeyin plastik bir kutuya ya da hacklenmiş mum köprünün içine sığması.

Adım 3: Bağlantılar

Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar

Bu sayfadan alınan Arduinos hakkında:

  • Giriş/çıkış pini başına toplam maksimum akım: 40mA
  • Tüm giriş/çıkış pinlerinden çıkan akımların toplamı: 200mA

Mumlarım 3 V ile beslendiğinde her biri 19 mA çekiyor. Yedi tane var ki bu da 133 mA yapıyor. Böylece onları doğrudan çıkış pinlerinden çalıştırabilirim. Ancak, bazı yedek darlington transistör IC'lerim var. Bu yüzden neden olmasın diye düşündüm. Devrem işi doğru şekilde yapıyor: veri pinleri sadece sinyaller içindir, güç için değil. Bunun yerine LED ışıklarına güç sağlamak için Arduino'daki 5 V pini kullanıyorum. Test çalışırken, dizüstü bilgisayarımı Arduino'ya bağladım. Her şeye 5 V veren dizüstü bilgisayar USB'sinden güç verilir. Arduino Mega'nın bilgisayarı korumak için 500 mA'da atan kendine ait bir sigortası vardır. Mumlarım en fazla 133 mA çekiyor. Arduino muhtemelen çok daha az. Dizüstü bilgisayar tarafından çalıştırıldığında her şey yolunda gidiyor, bu nedenle Arduino'nun USB bağlantı noktasına bağlı 5 V'luk bir pil takımı kullanmak gayet iyi.

D3 - D9 veri pinleri IC ULN2803APGCN'ye gider. LED'ler 3 V ile çalışır. Her ampul 5 V kaynağa ve ayrıca 120 Ω dirence bağlanır. Son olarak devreyi IC'deki bir darlington transistörü aracılığıyla toprağa bağlayan IC'nin bir kanalına ek olarak.

Bazı kullanıcı eylemlerini etkinleştirmek için devreye bir basma düğmesi eklenir. Mum köprüsü böylece birkaç kullanıcı tarafından seçilebilir programa sahip olabilir.

Devredeki buton RESET ve GND'ye bağlıdır. Yerleşik sıfırlama düğmesinin yaptığı tam olarak budur. Her şeyi plastik bir kasaya koymadığım için programı kontrol etmek için Arduino'daki reset butonunu kullanıyorum. Görsele göre bir buton eklemek tam olarak board reset butonu gibi çalışacaktır. Program, en son çalıştırıldığında hangi ışık programının kullanıldığını hatırlayarak çalışır. Böylece, her sıfırlama bir sonraki ışık programına ilerleyecektir.

Fotoğraflar köprüden yeni kabloların nasıl çıktığını, transistör IC'yi ve dirençleri breadboard'a nasıl yerleştirdiğimi ve jumper kablolarının Arduino Mega'ya nasıl bağlandığını gösteriyor. Mum köprüsünden çıkan 8 kabloya lehimlediğim 4 adet erkek-erkek jumper kablosunu 8 adet yarım tele kestim. Bu şekilde kabloları breadboard'a yapıştırabilirim.

Transistörsüz alternatif

Bir önceki adımda, transistör IC'den toprağa giden mumlar için ortak bir '+' teli ve ayrı '-' teller hazırladım. Bir veri pini yükseldiğinde, karşılık gelen '-' teli transistörü aracılığıyla topraklanır ve LED yanar.

'-' kablolarını doğrudan Arduino'nun veri pinlerine bağlamak da işe yarayacaktır, ancak veri pinlerinin ne kadar akıma dayanabileceğine her zaman dikkat edin! Bu yaklaşımın programımda bir değişikliğe ihtiyacı olacak. Mumları yakmak için veri pinlerinin alçalması gerekir. Programımı olduğu gibi kullanmak için mumlarda '+' ve '-' arasında geçiş yapmanız gerekir. Arduino'da GND'ye giden mumlar için ortak bir '-' teli var. Ve ayrı teller, mumun '+' kablosu ile Arduino'nun bir veri pini arasında çalışır.

Adım 4: Işık Programları

Bir sonraki adımda sunduğum programım 9 ışık programından geçiyor. Düğmeye basmak ışıkları bir saniyeliğine karartacak, ardından aşağıdaki ışık programı başlayacaktır. Programlar aşağıdaki gibidir:

  1. Güçlü titreme. Mumlar rastgele titriyor. Bu, onlara yakın mesafeden baktığınızda çok can sıkıcı görünüyor, ancak uzaktan ve belki de soğuk bir çatı penceresinin arkasından iyi görünebilir. Yine de komşunuz itfaiyeyi arayabilir.
  2. Yumuşak titrek. Çok iyi görünüyor. Hava akımı olmayan bir odadaki gerçek mumlar gibi.
  3. Değişken titrek. Mumlar, yaklaşık 30 saniyelik aralıklarla güçlü ve yumuşak titreme arasında yumuşak bir şekilde değişiyor.
  4. Değişken titrek. #3 gibi, ancak her mum 30 s ile 60 s arasında kendi hızında değişir.
  5. Hızlı pırıltı. Mumlar statik soluk bir seviyede parlıyor ve rastgele parlıyor. Ortalama olarak her saniye bir pırıltı var.
  6. Yavaş pırıltı. # 5 gibi, ancak çok daha yavaş bir oranda.
  7. Orta üst mumdan alt mumlara hızlı dalga.
  8. Orta üst mumdan alt mumlara doğru yavaş dalga.
  9. Statik parlak ışık. Bunu eklemek zorunda kaldım, orijinal işlevden kurtulmak istemedim.

Adım 5: Kod

/*

FLICKERING CANDLE BRIDGE */ // Bir sıfırlama işlemi aracılığıyla // durumu tutacak mod değişkenini bildirin _attribute_((section(".noinit"))) unsigned int mode; // Program bir sıfırlamadan sonra başladığında, bu bellek parçası // başlatılmaz, ancak sıfırlamadan önceki // değerini tutar. // programı ilk çalıştırıldığında rastgele bir değer tutar. /* * Mum sınıfı, titreyen bir mumun * ışık seviyesini hesaplamak için gereken her şeyi içerir. */ sınıf mum { özel: uzun maxtime; uzun mintime; uzun maxlit; uzun minlite; uzun ortalama; uzun origmaxtime; uzun origmintime; uzun origmaxlite; uzun origminlit; uzun origmeanlit; uzun deltamaxtime; uzun deltamintime; uzun deltamaklit; uzun deltaminlit; uzun deltameanlit; uzun lforat; uzun eşitleme; uzun başlangıç; uzun hedef; yüzer faktör; uzun hedef süresi; uzun başlangıç zamanı; uzun deltatime; void yeni hedef(void); uzun onetarget(void); genel: mum(uzun mat, uzun mit, uzun mal, uzun mil, uzun mel, uzun eo); uzun levelnow(void); void initlfo(uzun deltamat, uzun deltamit, uzun deltamal, uzun deltamil, uzun deltamean, uzun oran); void setlfo(void); }; mum::mum(uzun mat, uzun mit, uzun mal, uzun mil, uzun mel, uzun eo): maxtime(mat), mintime(mit), maxlite(mal), minlite(mil), ortalama(mel), eşit (eo), origmaxtime(mat), origmintime(mit), origmaxlite(mal), origminlite(mil), origmeanlite(mel) { hedef = ortalamalit; yeni hedef(); } /* * levelnow() mumun şu anda sahip olması gereken ışık seviyesini döndürür. * Fonksiyon, yeni bir rastgele ışık seviyesi ve * bu seviyeye ulaşmak için gereken süreyi tanımlamayı önemser. Değişim lineer değil * ama sigmoid bir eğriyi takip ediyor. Yeni bir * seviyesi tanımlamanın zamanı gelmediğinde, fonksiyon basitçe ışık seviyesini döndürür. */ uzun mum::levelnow(void) { uzun yardım, şimdi; yüzer t1, t2; şimdi = millis(); if (şimdi >= hedefzaman) { yardım = hedef; yeni hedef(); dönüş yardımı; } else { //help = hedef * (millis() - başlangıç zamanı) / deltatime + başlangıç * (targettime - millis()) / deltatime; t1 = kayan nokta(hedef zaman - şimdi) / deltazaman; t2 = 1. - t1; // Bu sigmoid hesaplama yardımıdır = t1*t1*t1*start + t1*t1*t2*start*3 + t1*t2*t2*target*3 + t2*t2*t2*target; dönüş yardımı; } } void mum::newtarget(void) { uzun toplam; toplam = 0; for (uzun i = 0; i < eşitleme; i++) toplam += onetarget(); başlangıç = hedef; hedef = toplam / eşitleme; başlangıç zamanı = millis(); hedefzaman = başlangıç zamanı + rastgele(mintime, maxtime); deltatime = hedefzaman - başlangıç zamanı; } uzun mum::onetarget(void) { if (random(0, 10) lastcheck + 100) { lastcheck = şimdi; /* * "hız milisaniyesinden sonra" parıldama algosu: * Hız / 2 milisaniye sonra kontrole başlayın * Hız / 2 milisaniyelik bir süre boyunca, * parlama şansını % 50 yapın. * Hız 10000 ms ise, 5000 ms boyunca jeton * 50 kez çevrilir. * 1/50 = 0.02 * Eğer rastgele(10000) başlangıç zamanı + oran / 2) { if (rastgele(oran) hedefzaman) geri dönüş lowlite; dönüş (başlangıç - lowlite) * (targettime - şimdi) / (targettime - starttime) + lowlite; } void twinkler::twink(void) { starttime = millis(); hedefzaman = rastgele(minzaman, maxtime) + başlangıç zamanı; başlangıç = rastgele(minlite, maxlite); } geçersiz kurulum() { int led; // En son hangi ışık programının çalıştırıldığını söylemesi gereken // sihirli mod değişkenini okuyun, artırın // ve taşma durumunda sıfıra sıfırlayın. mod++; mod %= 9; // Bu, Arduino'nun bu programı ilk çalıştırdığı // değeri ne olursa olsun ilgilenir. /* * ÖNEMLİ NOT * ============== * * Bu programın yaptığı temel şey, PWM * sinyallerini LED ışıklarına vermektir. Burada 3 ila 9 arasındaki pinleri * çıkış moduna ayarladım. Bir Arduino Mega2560'ta bu pinler * güzel bir şekilde PWM sinyalleri verir. Başka bir Arduino'nuz varsa, hangi pinleri (ve kaç tane) kullanabileceğinizi kontrol edin. Arduino'nuz * yeterli donanım PWM pini sağlayamıyorsa, PWM yazılımını kullanmak için kodu her zaman * yeniden yazabilirsiniz. * */ pinMode(3, ÇIKIŞ); pinMode(4, ÇIKIŞ); pinMode(5, ÇIKIŞ); pinMode(6, ÇIKIŞ); pinMode(7, ÇIKIŞ); pinMode(8, ÇIKIŞ); pinMode(9, ÇIKIŞ); pinMode(LED_BUILTIN, OUTPUT); analogWrite(LED_BUILTIN, 0); // Arduino mumundaki can sıkıcı kırmızı led'i kapatmanız yeterli *can[7]; // kullansanız da kullanmasanız da titreyen mumları kullanmaya hazırlanın twinkler *twink[7]; // parıldayan mumları kullanmaya hazırlanın… if (mode == 8) { for (int i = 3; i < 10; i++) analogWrite(i, 255); while (doğru); // Bu program her çalıştığında, reset // düğmesine basılana kadar // bu tür sonsuz döngüye girer. } if (mod < 2) // titreyen { long maxtime_; uzun mintime_; uzun maxlite_; uzun minlite_; uzun ortalık_; uzun bile_; if (mod == 0) { maxtime_ = 250; mintime_ = 50; maxlite_ = 256; minlite_ = 0; orta değer_ = 128; çift_ = 1; } if (mod == 1) { maxtime_ = 400; mintime_ = 150; maxlite_ = 256; minlite_ = 100; orta değer_ = 200; çift_ = 1; } for (int i = 0; i < 7; i++) { can = yeni mum(maxtime_, mintime_, maxlite_, minlite_, ortalama_, çift_); } while (true) // Titreyen mumlar için sonsuz döngü { for (int i = 0; i levelnow()); } } if (mod < 4) // titremeye lfo eklendi { if (mod == 2) // tüm mumlar için aynı lfo (30 s) { for (int i = 0; i initlfo(75, 50, 0), 50, 36, 30000); } } if (mod == 3) // mumlar için lfo:s değişkeni { for (int i = 0; i initlfo(75, 50, 0, 50, 36, 20000); can[1]->initlfo(75, 50, 0, 50, 36, 25000); can[2]->initlfo(75, 50, 0, 50, 36, 30000); can[3]->initlfo(75, 50, 0, 50, 36, 35000); can[4]->initlfo(75, 40, 0, 50, 36, 40000); can[5]->initlfo(75, 30, 0, 50, 26, 45000); can[6]->initlfo(75, 20, 0, 50, 16, 50000); can[7]->initlfo(75, 10, 0, 50, 6, 55000); } while (true) // Titreşen mumlar için lfo { long lastclock = 0; for (int i = 0; i levelnow()); if (millis() > lastclock + 4000) { lastclock = millis(); for (int i = 0; i setlfo(); } } } if (mod < 6) // parıldayan mumlar { int speedo; if (mod == 4) speedo = 6000; else speedo = 22000; for (int i = 0; i < 7; i++) twink = new twinkler(300, 295, 255, 250, speedo); while (true) { for (int i = 0; i levelnow()); } } // Dalgalar. // Bu bölüm, çakışan değişken adları olmadığından emin olmak için // yalnızca küme parantezleriyle başlar. // Parantezlere gerek yok, kontrol etmeye gerek yok // modun değerini.{ int lolit = 2; int hilite = 255; int ortalama; int ampl; yüzer fasedelta = 2.5; yüzer yüz; int uzun; yüzer faktör; uzun dönem; ortalama = (lolit + hilite) / 2; ampl = hilite - ortalama; if (mod == 6) periyot = 1500; başka dönem = 3500; faktör = 6.28318530718 / dönem; while (true) { fase = faktör * (milis() % nokta); uzama = ortalama + ampl * sin(fase); analogWrite(7, uzun); analogWrite(9, uzun); fase = faktör * ((milis() + nokta / 4) % nokta); uzama = ortalama + ampl * sin(fase); analogWrite(3, uzun); analogWrite(8, uzun); fase = faktör * ((milis() + nokta / 2) % nokta); uzama = ortalama + ampl * sin(fase); analogWrite(4, uzama); analogWrite(5, uzun); fase = faktör * ((millis() + 3 * nokta / 4) % nokta); uzama = ortalama + ampl * sin(fase); analogWrite(6, uzun); } // Mum tellerini Arduino'ya bağlarken // Karıştırdım ve bir türlü düzene sokmadım. // Sıra, dalga desenleri oluşturmak için önemlidir, // bu yüzden benim için bu küçük tabloyu yazdım: // // Köprüde Mum#: 2 3 5 4 7 6 1 // Arduino'daki veri pini: 3 4 5 6 7 8 9 } } void loop() { // Her ışık programı kendi sonsuz döngüsü olduğundan, // tüm döngüleri start() bölümüne yazdım // ve bu loop() bölümü için hiçbir şey bırakmadım. }

Adım 6: PWM Hakkında

Ledler 3 V ile beslendiğinde parlak bir şekilde parlıyor. Sadece 1,5 V kullanıldığında hiç yanmıyorlar. LED ışıklar, akkor lambaların yaptığı gibi, solma voltajı ile güzel bir şekilde solmaz. Bunun yerine tam voltajla açılmaları ve ardından kapatılmaları gerekir. Bu saniyede 50 kez gerçekleştiğinde, aşağı yukarı %50 parlaklıkla güzelce parlarlar. Yalnızca 5 ms açık ve 15 ms kapalı olmalarına izin verilirse, %25 parlaklık ile parlayabilirler. Bu teknik, LED ışığı kısılabilir yapan şeydir. Bu tekniğe darbe genişlik modülasyonu veya PWM denir. Arduino gibi bir mikrodenetleyicide genellikle açma/kapama sinyalleri gönderebilen veri pinleri bulunur. Bazı veri pinleri, PWM için yerleşik yeteneklere sahiptir. Ancak yerleşik PWM'li yeterli sayıda pin yoksa, "yazılım PWM pinleri" oluşturmak için özel programlama kitaplıkları kullanmak genellikle mümkündür.

Projemde 3 - 9 pinlerinde donanım PWM'si olan bir Arduino Mega2560 kullandım. Bir Arduino UNO kullanıyorsanız, sadece altı PWM pininiz var. Bu durumda 7. (hatta daha fazla) bir muma ihtiyacınız varsa, burada bulabileceğiniz Brett Hagman'ın yazılım PWM kitaplığını önerebilirim.

Önerilen: