SVETELEKTRO

5. júna 2021   Verzia pre tlač Verzia pre tlač

Simulácia ohňa


roboulbricht

Tento článok popisuje algoritmus, ktorý simuluje horenie ohňa. Je to môj prvý pokus o jeho simuláciu. Simulácia sa skúša na NeoPixel Ringu s 24 LED diódami. Simulátor nie je určený na priame pozeranie. Predpokladá sa jeho umiestnenie pri bielej stene, na ktorej vytvára mihotanie podobné reálnemu ohňu v kozube.

Výsledky simulácie by som chcel využiť v LED pásiku, dlhom 5 metrov. Jedným z efektov by mal byť aj tento oheň.

Súčiastky

Budeme potrebovať nasledovné súčiastky:

  • Arduino Uno alebo Mini
  • Breadboard
  • NeoPixel Ring s 24 diódami. Ja som môj kupoval od Banggood. Dá sa kúpiť aj na Ebay (pod názvom led ring 24bit) a priemerná cena v čase nákupu bola 5,6 USD za kus.
  • Ochranný rezistor 470R.
  • Ochranný kondenzátor 1000 uF.

Ochranné súčiastky sú nutné preto, aby sa NeoPixel Ring nepoškodil. Podrobnosti ochrany sú uvedené v článku o napájaní týchto diód.

Na obrázku je Ring s 12 diódami. Ring s 24 diódami sa nijako mimoriadne od neho nelíši a je preto možné použiť aj menší ring po príslušnej úprave kódu.

Algoritmus

Simulácia ohňa je jednoduchá. Potrebujeme poznať RGB hodnotu ohňa. Hodnoty 156,42,0 a 255,153,0 predstavujú odtiene oranžovej farby, z ktorých budeme vychádzať. LED WS2812 majú zelenú farbu trochu intenzívnejšiu, takže z nej budeme trochu uberať, aby sme výslednú farbu mali viac červenu než zelenú. Pretože tieto diódy svietia dosť silno, uberieme trochu aj z intenzity farby, aby sme dostali jas menšieho ohníka namiesto blčiaceho ohňa, ktorý taví kov.

Samotný algoritmus pozostáva z dvoch krokov:

  • Nastavenie všetkých bodov na maximálnu hodnotu farby ohňa.
  • Výber náhodného čísla pre každú diódu. Túto hodnotu odpočítame od maximálnej hodnoty ohňa. Náhodné číslo vyberáme tak, aby sme vytvorili širší rozsah tmavších odtieňov pôvodnej farby.
  • Po nastavení všetkých diód nasleduje krátky časový úsek s nepravidelnou dĺžkou, ktorý spomaľuje efekt na rýchlosť, akou by približne horel aj skutočný oheň.

Programovanie

Samotný program pre arduino sa nachádza v prílohe. Vychádzal som z môjho predchádzajúceho kódu na ovládanie NeoPixel Ring hodín. Do kódu som doplnil funkciu na odčítanie hodnôt, pomocou ktorej tlmím farbu na jednotlivých diódach.

 

Video

Nik nemá takú dobrú predstavivosť, preto si môžete pozrieť výsledné video na Youtube.

 

Video

 

 

Download

  • NeoPixel Ring Fire Simulation Sketch – Arduino simulation of fire using NeoPixel Ring 24
  • WS2812 – Datasheet WS2812 – Intelligent control LED integrated light source
  • WS2812B – Datasheet WS2812B – Intelligent control LED integrated light source

 

Článok prevzatý zo stránky: https://www.arduinoslovakia.eu/blog/2015/9/simulacia-ohna.

Ako sa vám páčil tento článok?
  • Páči sa mi (12)
  • Súhlasím (0)
  • Zábavné (1)
  • Informatívne (0)
Najnovšie články od roboulbricht (zobraziť všetky)

Komentáre (2)

  1. Artenkowski píše:

    pekne ale mozno by bolo lepsie pridat na tie ledky effekt kde by dochadzalo k stmievaniu a rozsvecovaniu roznymi rychlostami toto blikanie mi pride trosku moc invazivne na mna =D ale super praca.

Pridaj komentár