In dit artikel zullen we enkele zeer nuttige effecten voor het interieur bekijken die kunnen worden gecreëerd met behulp van een ledstrip. We zullen ook praten over algoritmen, over hoe wiskundige berekeningen LED's in staat stellen de illusie van warmte en comfort te creëren, namelijk een vlam, een echte digitale vlam.
Alle broncodes die later worden geparseerd, kunnen dat download van de projectpagina auteur (AlexGyver).
Laten we eerst eens kijken e component. Voor jezelf doe het zelf maak thuis zo'n schoonheid De volgende componenten zijn vereist:
- Driver voor RGB-tape;
- RGB-tape;
- Voeding 12V voor RGB tape;
- Arduin® Nano.
Ieder van jullie kan de firmware downloaden en downloaden en je digitale haard krijgen. In dit voorbeeld zullen we de LED-strips van de microcontroller aansturen Arduino Nano.
Laten we beginnen met de eenvoudigste, nuldimensie - een punt (of een hele band met punten).
Dit is de meest gewone RGB ledstrip, die wordt gevoed door 12V en voor elke kleur driekanaals aanstuurt.
Met behulp van het PWM-signaal (we hebben het 8-bit), kun je de helderheid van elke kleur instellen en zo 16,7 miljoen kleuren en tinten krijgen. Maar we zijn geïnteresseerd in vuur, of liever de nabootsing ervan. Om een vlam te simuleren, werd besloten om in de hsv-kleurruimte te werken (kleur, verzadiging, helderheid).
Met deze 3 parameters kunt u 255 basistinten krijgen, plus elke tint om 255 verzadigingsgradaties te maken, d.w.z. mengt zich met witte kleur. Welnu, de derde parameter is helderheid, in een eenvoudige taal - een mengsel van schaduw met zwarte kleur.
Er zijn verschillende algoritmen voor het converteren van een handige hsv-ruimte naar RGB, gebruik er gewoon een.
Vervolgens moet u het gedrag van de brand specificeren. Stel dat de vlamsterkte een bepaalde hoeveelheid is, die in de minimumwaarde de leds verzadigde rode kleur en lage helderheid geeft, en in de maximumwaarde witgele en maximale heldere kleur geeft.
Om het vlameffect te krijgen, moeten we ervoor zorgen dat deze waarde willekeurige oscillerende bewegingen maakt, de bewegingen moeten willekeurig zijn, maar tegelijkertijd vrij soepel, dat wil zeggen iets dat lijkt op een trillend licht. Na deze waarde zullen respectievelijk de kleur en helderheid van de vlam langs het verloop veranderen.
De auteur stelt voor om dit probleem als volgt op te lossen: er is zo'n heel eenvoudig filteralgoritme, lopend gemiddelde, dat een scherpe waardeverandering omzet in een soepel proces, slechts één coëfficiënt en een vrij eenvoudige berekening.
Het idee is dit: het is nodig, zeg 5 keer per seconde, om een nieuwe willekeurige positie in te stellen voor de waarde van de brand, en ergens ongeveer 50 keer per seconde om deze waarde te filteren, en deze geleidelijk te veranderen. Als resultaat wordt zo'n willekeurig proces gevormd.
In een echt voorbeeld werkt alles zoals bedoeld.
Nu moeten we onze waarde vertalen in de kleur van de vlam volgens de bovengenoemde wet en een eendimensionaal vuur krijgen.
De op deze manier geprogrammeerde LED-strip kan bijvoorbeeld worden verborgen door de plint of door een uitsteeksel. Ook kan zo'n lint achtergrondverlichting bieden, het ziet er best interessant en ongebruikelijk uit.
Ook kan de tape van een korte afstand naar de vloer worden gestuurd en daarmee ook een vrij interessant effect bereiken.
En natuurlijk kan een stukje tape worden gebruikt om een open haard te verlichten of te simuleren. En als je de felle kleur van geel naar oranje verwijdert, krijg je een imitatie van smeulende kolen.
Omdat we RGB tape hebben, kunnen we elke kleur vuur zelf maken. Je wilt doodgroen - zo gemakkelijk!
We hebben een magisch blauw vuur nodig - geen probleem!
Installeer vervolgens het programma en de stuurprogramma's, zoals beschreven in de instructies op projectpagina, download en voer de firmware uit.
Helemaal aan het begin zijn er alle noodzakelijke instellingen. Met hun hulp kun je het vuur volledig voor jezelf aanpassen, namelijk: kleur, gedrag en dergelijke.
Dit was eigenlijk de gemakkelijkste manier om de ledstrip te laten "branden". Laten we nu eens kijken naar interessantere voorbeelden. Voor verder werk heb je nodig adres led strip.
Met deze tape kunt u elk van de LED's afzonderlijk bedienen en elk bevat een van 16,7 miljoen kleurtinten.
Alles is heel eenvoudig verbonden, volgens dit schema:
Er zijn geen stuurprogramma's nodig, maar een weerstand wordt aanbevolen. Je kunt het zonder doen, maar er is een kans op doorbranden van de eerste LED, en als dit gebeurt, zullen de volgende ook niet werken.
Met directe verlichting, bijvoorbeeld van onder de bank, krijg je een uitstekende helse bank met het effect van smeulende kolen.
Ook kan zo'n tape in een gewone worden geschoven licht profiel en gebruik als een onafhankelijk element van het interieur.
Het ziet er redelijk goed uit, mee eens, maar laten we toch proberen individuele vlammen te bereiken.
We laten het algoritme hetzelfde. We breken de tape in zones met verschillende breedtes, elke zone heeft zijn eigen willekeurige proces. Om dit proces nog meer op een echte vlam te laten lijken, vullen we de zones van de randen tot het midden, waarbij we onze willekeurige waarde geleidelijk verhogen tot de huidige waarde. Ook tijdens het "branden" moet de grootte van de zones ook willekeurig veranderen.
Zo ziet het eruit:
Laten we nu eens kijken naar een ander interessant willekeurig proces genaamd Perlin-ruis, dat Ken Perlin in 1983 bedacht.
Met Perlin's ruis kunt u een willekeurige afgevlakte verdeling van de grootte in een willekeurig aantal dimensies creëren. Het bekende cloudfilter in Photoshop is een voorbeeld van tweedimensionale Perlin-ruis.
Maar de driedimensionale ruis van Perlin maakt het mogelijk om bijvoorbeeld een bergachtig landschap te genereren en het zeer willekeurig en eindeloos te genereren, en tegelijkertijd praktisch zonder een belasting van computercomponenten te veroorzaken, aangezien het algoritme daar niet erg computationeel duur is.
Het actieplan is als volgt: creëer eerst een tweedimensionaal Perlin-ruisgebied en beweeg het op een bepaalde manier, scan de lijn van pixels en voer deze uit naar de LED's.
Het algoritme zoals hierboven vermeld is niet erg ingewikkeld en Arduino ga rustig met hem om.Het resultaat is zo'n heel gaaf effect, zo soepel mogelijk, willekeurig en al erg vergelijkbaar met de echte vlam met eindverlichting.
Bij directe verlichting ziet het er zo uit:
Maar dit waren allemaal brandalgoritmen voor één tape. En hoe zit het met het plakken van de tape in een zigzagpatroon en proberen om tweedimensionaal vuur op de matrix te maken?
Dergelijke matrices kunnen bij de Chinezen worden gekocht. Boven de matrix plaatsen we een diffusor en glas getint met autofilm, dat wil zeggen, dit is een echt amolead-scherm met ultralage resolutie.
Het ziet er trouwens redelijk realistisch uit. Bekijk de originele video van de auteur voor meer details:
Dat is alles. Bedankt voor je aandacht. Tot binnenkort!