Efterlikna en vedbrasa med LED-lampa?
Efterlikna en vedbrasa med LED-lampa?
Jag har en LED-matris om 100 röda LED som jag kan styra intensiteten på med
en signal mellan 0V och 1V. (se mitt projekt "Tangentbordsbelysning"-http://elektronikforumet.com/forum/view ... sbelysning)
Jag har sett röda belysningar som efterliknar flammande eld typ öppen brasa.
Det jag undrar är om det finns någon "standard" signal/algoritm jag kan utnyttja för att få det
verklighetstroget? Jag har en tanke om att sampla ljuset från en öppen brasa och spela in
på en vanlig CD för att sedan låta utgången från CD-spelaren styra matrisen men det kanske
inte fungerar som jag tänkt.
Tacksam för alla tips.
en signal mellan 0V och 1V. (se mitt projekt "Tangentbordsbelysning"-http://elektronikforumet.com/forum/view ... sbelysning)
Jag har sett röda belysningar som efterliknar flammande eld typ öppen brasa.
Det jag undrar är om det finns någon "standard" signal/algoritm jag kan utnyttja för att få det
verklighetstroget? Jag har en tanke om att sampla ljuset från en öppen brasa och spela in
på en vanlig CD för att sedan låta utgången från CD-spelaren styra matrisen men det kanske
inte fungerar som jag tänkt.
Tacksam för alla tips.
Re: Efterlikna en vedbrasa med LED-lampa?
Jag vet att en del billiga "elektriska ljus" använder ljudet från sådana där kort som spelar en melodi när man öppnar dem som signal. Kanske inte fungerar så lysande bra för att simulera en brasa dock 
Re: Efterlikna en vedbrasa med LED-lampa?
Det känns lite som det handlar om en slumpmässig signal.
Kanske rent av en slumptalsgenerator kan fungera?
Kanske rent av en slumptalsgenerator kan fungera?
- prototypen
- Inlägg: 11108
- Blev medlem: 6 augusti 2006, 13:25:04
- Ort: umeå
Re: Efterlikna en vedbrasa med LED-lampa?
De brasor som görs av ljustekniker består ofta av 3 lampor, 2 gula och 1 röd som sedan fipplas lite upp och ned på.
Slumptal ger alltför stora "hopp". en räknare som räknar uppåt o nedåt lite slumpartat är bättre. Jag har gjort "stearinljus" som ser så realistiska ut att jag själv trodde det var riktiga ljus (hemma hos en kompis), samma teknik har fått securitas att bryta upp en dörr för att släcka ett kvarglömt "ljus".
Till en brasa använder man 3 sådana ljus.
Protte
Slumptal ger alltför stora "hopp". en räknare som räknar uppåt o nedåt lite slumpartat är bättre. Jag har gjort "stearinljus" som ser så realistiska ut att jag själv trodde det var riktiga ljus (hemma hos en kompis), samma teknik har fått securitas att bryta upp en dörr för att släcka ett kvarglömt "ljus".
Till en brasa använder man 3 sådana ljus.
Protte
Re: Efterlikna en vedbrasa med LED-lampa?
Räknare är alltså ett tips!
Jag får ta och bygga 2 moduler med gula LED för att få det bättre.
Fast lite av effekten borde gå att ordna med enbart en röd färg även om
det du uppger känns bättre.
Jag får ta och bygga 2 moduler med gula LED för att få det bättre.
Fast lite av effekten borde gå att ordna med enbart en röd färg även om
det du uppger känns bättre.
Re: Efterlikna en vedbrasa med LED-lampa?
Såg även det här projektet med att sända morse-kod med en sändare.
Tänke faktiskt på det i går hurvida fort det skulle gå att kommunicera med en vanlig
lampa tvärs över gatan med morse-kod. Mottagaren skulle bestå av en typ tubkikare
ansluten till en LDR.
http://sci-toys.com/scitoys/scitoys/com ... itter.html
Tänke faktiskt på det i går hurvida fort det skulle gå att kommunicera med en vanlig
lampa tvärs över gatan med morse-kod. Mottagaren skulle bestå av en typ tubkikare
ansluten till en LDR.
http://sci-toys.com/scitoys/scitoys/com ... itter.html
Re: Efterlikna en vedbrasa med LED-lampa?
Finns det någon algoritm som skulle vara tänkbar för en sån här effekt?
Re: Efterlikna en vedbrasa med LED-lampa?
Jag vet inte direkt om det liknar en brasa, det är väl upp till betraktaren. Men här är årets upplaga av läskig pumpabelysning. För att göra den extra läskig så använder jag flyttal, men den går ändå att pressa in i en attiny25. (Jag har precis kastat pumpan, den började mögla.) (Om någon undrar så är det en AR(1)-process)
Edit: Bytt till vettigare siffror.
Kod: Markera allt
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <stdlib.h>
// Random integer between 0 and n-1
#define randint(n) (random()/(RANDOM_MAX/(n) + 1))
const int8_t PROGMEM norminv[256] =
{-127,-109,-100,-95,-90,-87,-83,-81,-78,-76,-74,-72,-71,-69,-68,-66,-65,-63,-62,
-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49,-49,-48,-47,-46,-46,-45,-44,-43,
-43,-42,-41,-41,-40,-39,-39,-38,-37,-37,-36,-36,-35,-34,-34,-33,-33,-32,-32,-31,-31,
-30,-29,-29,-28,-28,-27,-27,-26,-26,-25,-25,-24,-24,-23,-23,-22,-22,-22,-21,21,-20,
-20,-19,-19,-18,-18,-17,-17,-16,-16,-16,-15,-15,-14,-14,-13,-13,-12,-12,-12,-11,-11,
-10,-10,-9,-9,-9,-8,-8,-7,-7,-6,-6,-6,-5,-5,-4,-4,-4,-3,-3,-2,-2,-1,-1,-1,-0,0,1,1,1,2,2,3,
3,4,4,4,5,5,6,6,6,7,7,8,8,9,9,9,10,10,11,11,12,12,12,13,13,14,14,15,15,16,16,16,
17,17,18,18,19,19,20,20,21,21,22,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,
29,30,31,31,32,32,33,33,34,34,35,36,36,37,37,38,39,39,40,41,41,42,43,43,44,45,
46,46,47,48,49,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,65,66,68,69,71,72,
74,76,78,81,83,87,90,95,100,109,127};
// Truncated standard normal from table lookup.
float randn()
{
return pgm_read_byte(&norminv[randint(256)])*0.0235;
}
void init()
{
DDRB = 0b10011;
// Timer 0
// Timer0, Set OC0[AB] on comp. match (inv). Mode 3: Fast PWM
TCCR0A = (1<<COM0A1)|(1<<COM0A0)|(1<<COM0B1)|(1<<COM0B0)|
(1<<WGM01)|(1<<WGM00);
// 1:8 presc.
TCCR0B |= (1<<CS01);
// Timer 1
// Enable PWM1B, Clear OC1B on comp. match.
GTCCR = (1<<PWM1B)|(1<<COM1B1)|(1<<COM1B0);
TCCR1 |= (1<<COM1A1)|(1<<COM1A0); //Bug fix.
// Timer 1; 1:8 presc.
TCCR1 |= (1<<CS12);
}
void fade_to(uint8_t new)
{
uint8_t i, current = OCR0A;
if (new > current)
for (i = current; i < new; i++) {
OCR0A = OCR0B = OCR1B = i;
_delay_us(200);
}
else
for (i = current; i > new; i--) {
OCR0A = OCR0B = OCR1B = i;
_delay_us(200);
}
}
int main(void)
{
float x = 0.0;
init();
while(1) {
x = x*0.9 + randn()*10.0;
fade_to(x+180.0);
_delay_ms(20);
}
return 0;
}
Senast redigerad av snigelen 8 november 2010, 15:37:29, redigerad totalt 2 gånger.
Re: Efterlikna en vedbrasa med LED-lampa?
Borde helt klart gå applicera i ett JAVA-program då det är det som gäller för mig.

Re: Efterlikna en vedbrasa med LED-lampa?
Funderade på samma sak för en vecka sedan.. 
Dom tankar som dök var:
* RGB för att kunna blanda, fast kanske man kan eliminera blå ?
* Färgmodell så att referensen till vitt blir korrekt (vitbalans?).
* Additiv RGB modell.
* Olika lumen/ampere responser för lysdioderna i kombination med olika känslighet i ögat för basfärg.
* Räcker en punkt, eller behöver man flera ?
* Om man t.ex bara använder röd, blir det mest verklighetstroget att spela in en riktigt eld med endast det röda spektrat. Eller bör man blanda RGB till en luminanssignal som sedan används till den röda färgen ?
Antingen kan man "spela in" genom att filma och plocka ut ett fält som man medelvärdesbildar. Och klippa ut det i flera delar som kombineras slumpvalt. Eller så efterliknar man det med en algoritm. Metoder kan vara kurvanpassning eller analys av funktionen även om den är rätt slumpvis kan jag tänka mig.
Fast med google kan man säkert hitta någon vettig algoritm.
Dom tankar som dök var:
* RGB för att kunna blanda, fast kanske man kan eliminera blå ?
* Färgmodell så att referensen till vitt blir korrekt (vitbalans?).
* Additiv RGB modell.
* Olika lumen/ampere responser för lysdioderna i kombination med olika känslighet i ögat för basfärg.
* Räcker en punkt, eller behöver man flera ?
* Om man t.ex bara använder röd, blir det mest verklighetstroget att spela in en riktigt eld med endast det röda spektrat. Eller bör man blanda RGB till en luminanssignal som sedan används till den röda färgen ?
Antingen kan man "spela in" genom att filma och plocka ut ett fält som man medelvärdesbildar. Och klippa ut det i flera delar som kombineras slumpvalt. Eller så efterliknar man det med en algoritm. Metoder kan vara kurvanpassning eller analys av funktionen även om den är rätt slumpvis kan jag tänka mig.
Fast med google kan man säkert hitta någon vettig algoritm.
Re: Efterlikna en vedbrasa med LED-lampa?
Jag byggde för ett tag sedan en ljuslykta med "värmeljus" som hade ganska verklighetstrogen effekt, se denna tråd
Re: Efterlikna en vedbrasa med LED-lampa?
Jag kollade på Film1 där och det ser riktigt bra ut.
Fast det handlar om många lyktor där så de skapar väl
lite av effekten tillsammans?
Läser också om den "Autoregressive model" och den kräver en del tid att sätta sig in i
men den verkar väldigt intressant. Vitt brus ska tydligen finnas med på något sätt.
Fast det handlar om många lyktor där så de skapar väl
lite av effekten tillsammans?
Läser också om den "Autoregressive model" och den kräver en del tid att sätta sig in i
men den verkar väldigt intressant. Vitt brus ska tydligen finnas med på något sätt.
Re: Efterlikna en vedbrasa med LED-lampa?
Jo det finns väl många sätt att få till något som mer eller mindre liknare ett flimrande ljus eller en brasa.
Vill man göra något som baseras på slumptal så kan man väl tänka sig som följer, utan gräva ner sig i teoretiska detaljer.
I mitt fall hade jag 8 bitars PWM kopplad till lysdioden(erna). Så ett slumptal mellan kanske 80 och 250 kunde vara lämpligt. Men tar man en helt okorrellerad sekvens av slumptal blir det väldigt hoppigt och ser inte alls naturligt ut. Man kan kanske tänka sig en smallare fördelning eller så men då fladdrar det kanske för lite i stället.
Så i stället för att låta slumpen bestämma det nya värdet, så kan man, t.ex, ta lite av föregående värde och lägga till ett (mindre) slumptal. Så slumpen bestämmer i stället förändringen av signalen.
För att detta skall funka (så att det bara inte brakar iväg) så måste man bara ta en del av föregående värde (inte hela eller mer) samt slumpstörningen bör vara "vitt brus" (en okorrellerad likafördelad sekvens som i medeltal är noll (som väl är en av definitionerna av vitt brus)). Då har man fått en (stabil) AR(1)-process.
I mitt fall så valde jag att ha x = 0.9*x + randn()*10.0; där randn() ger ett normalfördelat slumptal (som i medeltal är noll). Men det behöver inte vara normalfördelning (som går att generera på bättre sätt, men jag brände min tiny45 (min första brända AVR) och hade bara tiny25 i lådan så jag fick snabb-banta programmet så det fick plats). Detta x håller sig i krokarna av -60 -- 60 så jag skalar om det som x + 180 innan det skickas på PWM-kanalerna. Sen kan man ju prova att ändra lite på parametrarna (0.9, 10.0, 180 och tiden mellan uppdateringar) för att få lite olika effekter.
Man kan förståss tänka sig andra modeller, t.ex. att även ta lite av förr-förra värdet (AR(2)). Sedan finns det ju metoder för att välja en modell och dess parametrar utifrån en uppmätt sekvens. Men det får bli till Jul eller nästa höst.
Vill man ha olika färger kan man kanske välja en (het) färgskala som man indexerar med den genererade sekvensen (modellera t.ex. RGB var för sig blir nog lite komplicerat).
Edit: Bytt till vettigare siffror, motsvarande i förra inlägget.
Vill man göra något som baseras på slumptal så kan man väl tänka sig som följer, utan gräva ner sig i teoretiska detaljer.
I mitt fall hade jag 8 bitars PWM kopplad till lysdioden(erna). Så ett slumptal mellan kanske 80 och 250 kunde vara lämpligt. Men tar man en helt okorrellerad sekvens av slumptal blir det väldigt hoppigt och ser inte alls naturligt ut. Man kan kanske tänka sig en smallare fördelning eller så men då fladdrar det kanske för lite i stället.
Så i stället för att låta slumpen bestämma det nya värdet, så kan man, t.ex, ta lite av föregående värde och lägga till ett (mindre) slumptal. Så slumpen bestämmer i stället förändringen av signalen.
För att detta skall funka (så att det bara inte brakar iväg) så måste man bara ta en del av föregående värde (inte hela eller mer) samt slumpstörningen bör vara "vitt brus" (en okorrellerad likafördelad sekvens som i medeltal är noll (som väl är en av definitionerna av vitt brus)). Då har man fått en (stabil) AR(1)-process.
I mitt fall så valde jag att ha x = 0.9*x + randn()*10.0; där randn() ger ett normalfördelat slumptal (som i medeltal är noll). Men det behöver inte vara normalfördelning (som går att generera på bättre sätt, men jag brände min tiny45 (min första brända AVR) och hade bara tiny25 i lådan så jag fick snabb-banta programmet så det fick plats). Detta x håller sig i krokarna av -60 -- 60 så jag skalar om det som x + 180 innan det skickas på PWM-kanalerna. Sen kan man ju prova att ändra lite på parametrarna (0.9, 10.0, 180 och tiden mellan uppdateringar) för att få lite olika effekter.
Man kan förståss tänka sig andra modeller, t.ex. att även ta lite av förr-förra värdet (AR(2)). Sedan finns det ju metoder för att välja en modell och dess parametrar utifrån en uppmätt sekvens. Men det får bli till Jul eller nästa höst.
Vill man ha olika färger kan man kanske välja en (het) färgskala som man indexerar med den genererade sekvensen (modellera t.ex. RGB var för sig blir nog lite komplicerat).
Edit: Bytt till vettigare siffror, motsvarande i förra inlägget.
