Mündəricat:

Wildfire: 7 addım
Wildfire: 7 addım

Video: Wildfire: 7 addım

Video: Wildfire: 7 addım
Video: Пирожки, как ПУХ! Больше не смазываю яйцом, знаю другой способ! Выпечка в духовке простых продуктов 2024, Iyul
Anonim
Image
Image

Bu layihə, yandırıldıqda yaşıl alovlarda partlayan yaşıl rəngli bir maye olan Game of Thrones -dəki mistik meşə yanğından ilham aldı. Layihə, xüsusi rəng effektləri üçün RGB SMD5050 LED şeritlərindən istifadə etməyə yönəlib. Üç şüşə obyekt, hər biri altı RGB LED lentlə təchiz edilmişdir. Bir Arduino Uno, işıqlar üçün titrəyən naxış kimi bir atəş yaradır. RGB LED -ləri tünd yaşıldan parlaq yaşıldan ən ağa qədər gradient rəng nümunəsi yaratmaq üçün lazımdır. Sadə bir yaşıl LED kifayət deyil, parlaq ağ yaratmaq üçün qırmızı və mavi komponentlərə ehtiyac var. Bonus olaraq, bu aparat başqa rənglər istehsal edə bilər. Şüşə əşyalar işığı sındırmaq və əsl işıq mənbəyini, yəni kiçik, çox texniki görünüşlü RGB SMD5050 LED şeritlərini gizlətmək üçün lazımdır.

Fikir istədiyiniz qədər obyektə və istədiyiniz dinamik rəng sxeminə qədər uzadıla bilər. Bu təlimat, aşağıdakı rəng sxemləri ilə üç şüşə obyekti olan bir quruluşu necə həyata keçirdiyimi izah edir. Meşə yanğınlarının sxemi giriş videosunda görünür. Qalan sxemlər bu təlimatın 6 -cı səhifəsindəki bir videoda görülür.

  • Meşə yanğını. A Game of Thrones, tamaşa kimi atəşə ilham verdi.
  • Unicorn Cazibədar. Göy qurşağının rənglərindən keçən bir tamaşa.
  • Göz qırp. İki fərqli sürətdə təsadüfi rəng dəyişikliyi.
  • Solmaq. Təsadüfi rənglərin iki fərqli sürətdə hamar bir şəkildə dəyişməsi.
  • Yaşayan rənglər. Bir hissəcik rəngi ətrafında yumşaq bir şəkildə salınan işıqla obyektlərinizi rəngləyin.
  • Şamlar. LED -lərinizi təbii bir şam alovunu təqlid edin.

Quraşdırma

Əsas quruluşda, bir düyməni basmaqla altı rəng sxemində irəliləyirsiniz. Mövcud olduğu təqdirdə, bir rəng sxemi daxilində bir klik bir parametrdən digərinə keçəcəkdir. Rəng tənzimləmələri Arduino proqramını redaktə etməklə əlavə edilə bilər.

Gələcək genişləndirilmiş versiyada düymə, rəng sxemlərini idarə edəcək bir veb səhifəyə keçəcək bir ESP8266 lövhəsi ilə əvəz olunur. Veb səhifə öz növbəsində mobil cihaz brauzeri ilə idarə oluna bilər. Bu şeyləri tənzimləməkdə daha çox müxtəliflik verir:

  • dəyişmə sürətini və istiqamətini təyin edin
  • titrəyən şamlar üçün rəng seçin
  • rənglərin parlaqlığını və doyma səviyyəsini təyin edin

Bu təlimat, istifadəçi interfeysi olaraq yalnız bir düyməni ehtiva edən əsas quruluşa diqqət yetirir.

Addım 1: Nə lazımdır

Nə lazımdır
Nə lazımdır
Nə lazımdır
Nə lazımdır
  • Qısa zolaqlara kəsə biləcəyiniz ucuz RGB LED şeridi
  • Bir güc qurğusu, tercihen 12 V 1.5 RGB LED şeridi ilə birlikdə gələn bir şey
  • Bir Arduino UNO və ya bənzəri
  • İki ULN2803AP IC: s
  • Sadə bir düymə
  • Perma-Proto çörək taxtası
  • Tel
  • Elektronika üçün qutu
  • Bəzi şüşə əşyalar RGB LED şeritləri ilə işıqlandırılacaq
  • Alətlər (tel soyucu, lehimləmə dəmiri, lehim …)

Led şeridi

Təxminən 90 RGB SMD LED -dən ibarət ucuz bir LED şeridi aldım. Kiçik bir bölmə rəngləri dəyişdirərək ledləri idarə edir. Cihaz uzaqdan idarə olunur və zolaq rəngləri müxtəlif yollarla dəyişə bilər. Ancaq bütün zolaq eyni rəngdədir. Maraqlısı budur ki, zolağı hər zolaqda yalnız üç rgb LED olan kiçik zolaqlara kəsə bilərsiniz. Hər bir zolaq, nə qədər uzun olmasından asılı olmayaraq, 12 V ilə təchiz olunmalıdır. Üç rgb ledin hər bölməsində, LED -lər üçün gərginlik düşməsini nəzərə alan öz müqavimət dəsti var. Yalnız 12 V və kifayət qədər amper, yaxşı, milliamper təmin etməlisiniz. Bu layihə üçün, hər birində 6 ədəd olan və 12 V 1.0 A güc qurğusuna malik olan üç zolaqdan istifadə edirəm. İdarəetmə bölməsinə və uzaqdan idarə etməyə ehtiyac yoxdur.

ULN2803AP

Tək bir cərəyana yalnız az cərəyan lazımdır. Ümumiyyətlə, bir LED -i 5 V məlumat pinini 3 V -a endirən bir rezistorunuz olduğu müddətdə birbaşa Arduino məlumat pinindən yandıra bilərsiniz. Ancaq tək bir RGB SMD5050 LEDi üç leddən ibarətdir: qırmızı, gren və mavi. Və bu layihə üçün 6 RGB SMD5050 LED şeridindən istifadə edirəm. Arduino Uno'nun bir məlumat pimi 6 LED -i idarə edir. Ledləri yandırmaq gücü məlumat pinindən gəlsəydi, bu yalnız məlumat pinini tost edərdi. Ancaq hamısında doqquz belə məlumat pimi olacaq və bu, Arduino üçün çox cari olacaqdır. Bu səbəbdən ULN2803AP işə düşür. ULN2803AP 8 darlington tranzistorlu inteqrasiya olunmuş bir çipdir. 9 -a ehtiyacım var, buna görə yalnız iki ULN2803AP çipindən istifadə edirəm. Layihəni beş obyekt demək üçün uzatmaq istəsəm, 7 ehtiyat tranzistor mənə qalır.

RGB SMD5050 LED -in içərisində bir tək LED 20 mA çəkir. Bunlardan altısı 120 mA deməkdir. ULN2803 -də bir pin (bir darlington tranzistoru) 500 mA batıra bilər. Ancaq bütün çip, cərəyanın istehsal etdiyi maksimum 1,44 Vt istiliyi idarə edə bilir. 120 mA 0.144 W istehsal edir, ULN2803 çiplərindən birinə beş, digərinə isə dörd xətt qoyuram. Bu, bir çipdə 0,72 W, digər çipdə isə 0,58 W olacaq. Ona görə də mən yaxşı olmalıyam. Hər birində 120 mA olan bir ULN2803 -ün bütün 8 xəttini istifadə etmək, çipi 1,2 Vt ilə qızdırırdı.

Sadəcə izah edildikdə, RGB SMD LED şeridi enerji mənbəyindən 12 V alır. LED şeridindən, hər üç rəngli LED -dən gələn cərəyan ULN2803AP -dakı öz pininə və daha sonra GND -ə keçir. Dövrə bağlanır və LED yanır. Ancaq ULN2803AP Arduinodan gələn 5 V məlumat siqnalları ilə açılır/söndürülür. Bu siqnallar Arduinodan yalnız bir neçə milliamp çəkəcək.

Şüşə əşyalar və LED şeritler

Çay işıqları üçün nəzərdə tutulmuş bu qəribə şüşə əşyalarım var idi. Dayanmaq və LED şeridlərini yapışdırmaq üçün bir şeyə sahib olmaq üçün ağcaqayın ağacından lövhələr kəsdim. Fərdi LED bölmələrinin yuxarıya baxdığı halqalar halına gətirmək üçün zolaqlarda bir neçə kıvrım düzəltdim. Qıvrımlarla diqqətli olun, beləliklə xətləri kəsməyin.

Addım 2: İstifadəçi Təlimatları

Cihaz sadə bir istifadəçi interfeysinə sahib olacaq. Güc mənbəyini divar prizinə bağlayaraq açılır və Wildfire olan ilk rəng sxemindən başlayır. Fişdən ayıraraq sönür. Bir düyməni basmaq növbəti rəng sxeminə keçəcəkdir. Hər bir rəng sxeminin alt sxemlərində cüt klik irəliləyəcək. Aşağıdakı rəng sxemlərini həyata keçirəcəyəm:

  1. Meşə yanğını. A Game of Thrones, yaşıl alovların bir şüşə əşyadan digərinə keçdiyi tamaşa kimi atəşə ilham verdi. Şüşə əşyalar bir -birinə dik olaraq yerləşdirildikdə bu təsir ən möhtəşəm görünəcək. Alovların fərqli templəri ilə üç fərqli alt sxem həyata keçirilir.
  2. Unicorn Cazibədar. Göy qurşağının rənglərindən keçən bir tamaşa. Solma, hər rəng bir şüşə obyektdən digərinə keçdiyi kimi fırlanan bir şəkildə baş verir. Alt sxemlərin dəyişmə sürəti fərqli olacaq.
  3. Göz qırp. İki fərqli sürətdə təsadüfi rəng dəyişikliyi. Subchemes müxtəlif palitralara malik olacaq (yalnız tam doymuş rənglər, yarı doymuş rənglər, rəng dairəsinin yalnız yarısından rənglər)
  4. Solmaq. Təsadüfi rənglərin iki fərqli sürətdə hamar bir şəkildə dəyişməsi. #3 -də olduğu kimi oxşar alt sistemlər.
  5. Yaşayan rənglər. Bir hissəcik rəngi ətrafında yumşaq bir şəkildə salınan işıqla obyektlərinizi rəngləyin. Alt sxemlər rəngləri qırmızı, narıncı, sarı, yaşıl, mavi, indigo və ya bənövşəyi olaraq təyin edəcək. Salınma, seçilmiş rəng ətrafında 10 dərəcə bir sektorda baş verir. Üç şüşə cisim eyni seçilmiş rəngə malikdir, lakin hər bir obyektin təsadüfi dəyişən titrəmə tezliyi var və bütün dəstə canlı bir həyat rəngi verir.
  6. Şamlar. LED -lərinizi təbii bir şam alovunu təqlid edin. Üç alt sxem:

    1. "Mümkün qədər sakit"
    2. "bir yerdə açıq pəncərə"
    3. "qaranlıq və fırtınalı bir gecə idi"

Addım 3: RGB Rəngləri haqqında Bir neçə Söz

Bu bölmədə RGB rəngli məkana baxışımı müzakirə edirəm. Bu bölməni çox yaxşı atlaya bilərsiniz. RGB LED -lərin rənglərini mənim etdiyim kimi işlətməyimin səbəbini izah edirəm.

Beləliklə, RGB LED -də yalnız qırmızı, yaşıl və mavi işıq var. Bunları qarışdırmaq insan gözünün tanıya biləcəyi bütün rəngləri yaradacaq (demək olar ki). Hər hissənin miqdarı - qırmızı, yaşıl və ya mavi - rəqəmsal dünyada adətən 0 -dan 255 -ə qədər bir rəqəmlə müəyyən edilir. Tam doymuş bir rəng, rəng komponentlərindən birinin sıfır, bir rəng komponentinin 255 olması lazımdır. rəqəmsal dünyamızda yalnız 1530 fərqli tam doymuş rəngə sahib olduğumuzu hiss edirik.

RGB məkanını modelləşdirməyin bir yolu bir kubdur. Kubun bir ucu qara rəngdədir. Bu nöqtədən qırmızı, mavi və ya yaşıl kənar boyunca gedə bilərik. Kubdakı hər hansı bir nöqtə qırmızı, yaşıl və mavi koordinatları ilə təyin olunan bir rəngdir. Qara nöqtədən ən uzaq nöqtəyə səyahət edərək, ağ nöqtəyə çatırıq. Qara və ağ istisna olmaqla altı təpəyə diqqət yetirərək, kənarları izləyərək bütün altı təpəni keçən bir yol yarada bilərik. Hər kənarda 256 nöqtə və ya rəng var. Hər bir nöqtə iki kənarla bölünür, buna görə də xalların ümumi sayı 6 * 255 = 1530 -dur. Bu yolu izləyərək rəng spektrində bütün 1530 tam doymuş rəngləri keçir. Ya da göy qurşağı. Tepeler qırmızı, sarı, yaşıl, mavi, mavi və magenta rənglərini təmsil edir.

Kubdakı hər hansı digər nöqtə tam doymamış bir rəngi təmsil edir.

  • Ya nöqtə kubun içərisindədir, yəni qırmızı, yaşıl və mavi koordinatlar sıfırdan fərqlənir. Qara nöqtədən ağ zirvəyə qədər olan diaqonalı bütün boz çalarların xətti kimi düşünün. Və kubun içindəki bütün "doymamış rənglər" kənarındakı tam doymadan bu "sıfır doyma" diaqonalına doğru solur.
  • Və ya nöqtə, qara zirvəyə toxunan kubun üç düz səthindən birindədir. Belə bir rəng tamamilə doymuş hesab edilə bilər, ancaq qaralmışdır. Daha çox qaraldırsan, algıladığı rəng doyma qabiliyyətini bir o qədər itirər.

Bütün doymuş rəngləri təsvir edən kubun ətrafında altı kənar yolun olması əvəzinə, bu 1530 rəngi 60 dərəcə bir sektorda 255 fərqli rəngə sahib olduğumuz bir dairədə yerləşdirə bilərik - buna qırmızıdan sarıya yaşıl əlavə edərək solğunlaşmaq kimi.. Rəng dairəsindəki bütün rəngləri keçmək, biri növbədə, digər ikisi bir -birinin əksinə olan üç rəng nəzarətçisini sürüşdürmək kimidir. Bəzi rəng sxemlərində rəng dairəsini və ya göy qurşağı spektrini istifadə edəcəyim üçün, öz 1530 miqyasımdan istifadə edərək bir rəngi (çalarları) dairənin bir nöqtəsi olaraq təyin edəcəyəm:

1530 miqyaslı standart 360 miqyaslı

============================= qırmızı 0 0 narıncı 128 30 sarı 256 60 yaşıl 512 120 firuzəyi 768 180 mavi 1024 240 indigo 1152 270 bənövşəyi 1280 300 çəhrayı 1408 330

Bu 1530 miqyası, göy qurşağı rənglərinin RGB LEDləri üçün dəyərlərə çevrilməsini asanlaşdırır.

Niyə hər bölmədə 255 rəng var? Niyə 256 deyil? Yaxşı, bir sektorun 256 -cı rəngi növbəti sektorun 1 -ci rəngidir. Bu rəngi iki dəfə saya bilməzsən.

PWM haqqında bir neçə kəlmə

Tipik bir LED, müəyyən bir gərginlikdə parlaq parıltı üçün nəzərdə tutulmuşdur. Bu gərginliyin aşağı salınması parlaqlığı azalda bilər, ancaq LED -in özü yalnız gərginliyi aşağı salmaqla qaralmaq üçün nəzərdə tutulmamışdır. Gərginliyin yarısında heç açılmaya da bilər. Bunun əvəzinə, karartma tam gərginlik ilə sıfır gərginlik arasında keçid yolu ilə əldə edilir. Kommutasiya nə qədər sürətli olarsa, insan gözünün o qədər titrəməsini tanıya bilməz. Əgər LED yarı vaxt açıq və yarı fasilə vaxtında olarsa, insan gözü işığı tam parlaq bir LED -in yarısının təsiri ilə parladığı kimi qəbul edir. Tam təsir müddəti ilə sıfır təsir müddəti arasındakı nisbətin tənzimlənməsi, bir LED -in qaralması ilə əlaqədardır. Bu PWM və ya nəbz genişliyi modulyasiyasıdır.

Bu layihə üçün aldığım ucuz RGB SMD LED şeridi, PWM -ə qulluq edən bir cihazı ehtiva edir. Bu layihədə Arduino UNO ilə PWM yaradıram. RGB rəngli məkan, adətən kompüter ekranında tətbiq olunduğu kimi, hər rəng kanalının 0 -dan 255 -ə qədər bir dəyərə sahib olduğunu və kanalın parlaqlığının xətti olaraq dəyəri izlədiyini düşündüyü nəzəri bir quruluşdur. Kompüterin qrafik kartı, həqiqi ledlərin ola biləcəyi bu xətti gözləntinin hər hansı bir qısaltmasını kompensasiya edə bilər. Bu layihədə istifadə olunan SMD LED -lərinin istifadə olunan PWM dəyərlərini xətti olaraq izləyib -izləməməsi bu layihənin əhatə dairəsinə daxil deyil. 255 PWM dəyəri ən parlaq işıq yaradır. Ancaq 128 -in dəyəri 255 -in parlaqlığının yarısı kimi qəbul edilən bir parlaqlıq ola bilməz. Və 1925 -in tam olaraq 255 və 128 -in ortasında bir parlaqlıq kimi qəbul edilə bilməz.

Addım 4: Şematik

Sxemalar
Sxemalar

Burada elektronikanın sxemlərini təqdim edirəm. Şəkil bağlantımın necə göründüyünü göstərir. Çipləri, telləri və düyməni perma proto lövhəsinə lehimləmişəm. İndiyə qədər komponentlər yalnız tellərlə bağlıdır, amma onları gözəl bir qutuya necə yerləşdirəcəyinizi və telləri LED şeridlərinə necə çəkəcəyinizi dizayn etməyi sizə həvalə edirəm. 4 telli düz bir kabel taparsanız, istifadə edin, çünki bir LED şeridinin 4 telə ehtiyacı var. Cəmi 3 telli düz kabelim var idi, buna görə bir az çirkin görünən əlavə bir telə ehtiyacım var idi.

Addım 5: Kod

Kod bir Arduino Uno üçün yazılmışdır. Uno -da yalnız 6 PWM qabiliyyətli pin var, amma bunlardan 9 -na ehtiyacım var. Brett Hagman tərəfindən yazılmış xüsusi bir PWM kitabxanasından istifadə edirəm. Bu Arduino IDE -də quraşdırılmalıdır.

wildfire.ino, əsas layihə sənədidir, quraşdırma () və loop () funksiyalarını, eləcə də bütün sxemlər üçün bəzi digər ümumi funksiyaları ehtiva edir.

wildfire.h ümumi başlıq sənədidir.

Müxtəlif sxem faylları layihədə ayrıca sekmeler kimi yapışdırıla bilər.

Addım 6: Fəaliyyətdə

Image
Image

Addım 7: Əlavə İnkişaf

  • İstifadəçi interfeysinin sxemləri idarə etmək üçün bir veb səhifəsi olduğu bir Android telefonu ilə simsiz əlaqəni təmin etmək üçün bir düyməli interfeysi ESP8266 ilə əvəz edin.
  • İstifadə ediləcək şeriddə hələ də təxminən 70 RGB SMD LED qalıb. Bu, hər birində 3 olan 24 zolaqdır. Daha 24 kanalın yeni bir yanaşmaya ehtiyacı var. Arduino Mega 2560 və bir az daha ULN2803AP çipinə, alternativ olaraq LEDlər üçün istifadə olunan iki 16 kanallı servo lövhəyə ehtiyac olardı.
  • Orijinal LED şeridi və qəbuledicisi üçün uzaqdan idarəetmə də istifadə edilməmişdir. Qəbulu hələ açmamışam, amma bəlkə də birtəhər yenidən istifadə oluna bilər. Bir Arduinonun məntiqlərini ələ keçirməsinə və işıq şousunu idarə etmək üçün rəqəmsal məlumatları Arduinoya çatdırmasına icazə verilə bilər.

Tövsiyə: