styra RGB LED

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
davrex
Inlägg: 149
Blev medlem: 18 januari 2009, 22:05:15

styra RGB LED

Inlägg av davrex »

Hej! har nu spenderat en dag eller 2 för att försökt hitta något enkelt exempel men hittar inget i alla fall inte till C kod:(
Det jag vill göra är att styra en RGB led via en ATmega8. Den ska bara fadda i alla färger.

Det råkar inte finns någon som har en sådan kod snutt som kan kan få kika lite på?

tack på förhand
Användarvisningsbild
AndLi
Inlägg: 18308
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: styra RGB LED

Inlägg av AndLi »

Hur långt har du kommit? Kan du slå på och av dem?
Användarvisningsbild
netrunner
Inlägg: 5510
Blev medlem: 4 februari 2005, 12:26:05
Ort: 127.0.0.1

Re: styra RGB LED

Inlägg av netrunner »

Jag körde två "snurror" inne i varandra.

1.
Först en variabel "p" som i procent säger hur mycket ljus det ska vara.
En snurra som går från 1 till 100 byter från den ena färgen till den andra när den når "p".

[är variabeln 70, så kommer tex grön att vara "på" dom första 70 varven och tex gul dom 30


2.
En större snurra som ställer tillbaka till start färg och ökar "p".
Den byter även färger när "p" når hundra.

På så sätt får du alltid samma strömförbrukning.

Ska du ha många lysdioder använder du en NPN-transistor:
http://www.kpsec.freeuk.com/trancirc.htm
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: styra RGB LED

Inlägg av MicaelKarlsson »

Enklast är väl att använda en PWM-kanal per färg.

Jag skulle börja med att få fart på PWM-n och sedan koppla till din lysdiod. Beroende på vilken det är kan du behöva transistorer för att inte överlasta din mega8
davrex
Inlägg: 149
Blev medlem: 18 januari 2009, 22:05:15

Re: styra RGB LED

Inlägg av davrex »

problemet är ju att atmega8 bara har 2 PWM.

så nu testa att göra lite loopar se hur det går det där dom som är mitt största problem. Med hur jag får den att gå av och på lagom mycket
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: styra RGB LED

Inlägg av snigelen »

problemet är ju att atmega8 bara har 2 PWM.
Enligt databladet har den tre, två på timer1 och en på timer2.
davrex
Inlägg: 149
Blev medlem: 18 januari 2009, 22:05:15

Re: styra RGB LED

Inlägg av davrex »

netrunner skrev:Jag körde två "snurror" inne i varandra.

1.
Först en variabel "p" som i procent säger hur mycket ljus det ska vara.
En snurra som går från 1 till 100 byter från den ena färgen till den andra när den når "p".

[är variabeln 70, så kommer tex grön att vara "på" dom första 70 varven och tex gul dom 30


2.
En större snurra som ställer tillbaka till start färg och ökar "p".
Den byter även färger när "p" når hundra.

På så sätt får du alltid samma strömförbrukning.

Ska du ha många lysdioder använder du en NPN-transistor:
http://www.kpsec.freeuk.com/trancirc.htm
Du kan inte utvecka det lite eller ge exempel har nu försökt men blir inget vidare samma ljus sken än :( eller att den börja blinka :S

kan också tillvägga omd et gör skiland att jag just nu testar på en led bara, inget rgb
Användarvisningsbild
netrunner
Inlägg: 5510
Blev medlem: 4 februari 2005, 12:26:05
Ort: 127.0.0.1

Re: styra RGB LED

Inlägg av netrunner »

Börja med den första snurran.

Lysdioden ska vara på 50% och av 50%. Lägg en fördröjning på 1ms innan varje byte.

Nu har du 50% ljusstyrka.

Genom att bygga ut koden i små steg, så kan du styra ljusstyrkan med en variabel, flyta över till en annan lysdiod osv...
Användarvisningsbild
netrunner
Inlägg: 5510
Blev medlem: 4 februari 2005, 12:26:05
Ort: 127.0.0.1

Re: styra RGB LED

Inlägg av netrunner »

Vad du gör är att du blinkar med den, men snabbare än 100Hz.

Procentuellt sett så varierar du tiden den är av och på, utan att du blinkar långsammare än 100Hz.

Hårdvaru-PWM suger för RGB-lampor, troligen bättre för motorer och så.
davrex
Inlägg: 149
Blev medlem: 18 januari 2009, 22:05:15

Re: styra RGB LED

Inlägg av davrex »

Hur galet är denna koden?

Kod: Markera allt

		
while(p<100){
			while(fart<f){
				fart++;
			}
			PORTB ^= 0x01;
			fart =0;
			p++;

		} 
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: styra RGB LED

Inlägg av sodjan »

> while(fart<f){
> fart++;
> }

Lite taskig i magen ? :-)

I alla fall, sådana här lösningar blir ofta väldigt specifika till hur var och
en vill ha det, så du lär nog inte få mycket annat än generella beskrivningar
hur det i princip kan gå till, alltså vad du mer eller mindre har fått här. Alternativet
är att någon skriver hela hela koden precis så som du vill ha det, men det är inte
lika lätt... :-)

Den där koden som du postade säger inte speciellt mycket. För det första är det nog
alldeles för lite för att göra någon större nytta, sen är det inte kommenterat så ingen
vet vad du tänkte på när du skrev den.
davrex
Inlägg: 149
Blev medlem: 18 januari 2009, 22:05:15

Re: styra RGB LED

Inlägg av davrex »

NU vet jag inte om du har ens läst övriga tråden men får väll ta det igen. försöker just nu bara få en led att fade:a ut/in men problmet är att den aningen blinkar eller lyster skarpt... Och frågan var hur fel den där koden var då det inte funkar med att den dimmar sig...
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: styra RGB LED

Inlägg av Icecap »

Den kod fungerar inte!

Loopen kommer att ge en <kort> puls ut som beror på värdet, javisst, men med PWM är det viktiga att den puls återkommer regelbundet.

Enklast är att ha en snabb timer-interrupt:
static unsigned char Counter;
if(R_Intensity > Counter) R_Out = true;
else R_Out = false;
if(G_Intensity > Counter) G_Out = true;
else G_Out = false;
if(B_Intensity > Counter) B_Out = true;
else B_Out = false;
if(++Counter > 99) Counter = 0;

I mainloopen kan man sedan styre R_Intensity (och de andra) för att ändra, timer-interrupten tar hand om resten.
Senast redigerad av Icecap 24 september 2009, 21:15:35, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: styra RGB LED

Inlägg av sodjan »

> Nu vet jag inte om du har ens läst övriga tråden men får väll ta det igen.

Jag har läst allt och det hjälper nog inte mycket att du "tar det igen".

Och angående koden så har jag redan svarat. Det är ganska osannolikt
att de där rederna skulle få en LED att göra det du vill. Om det hade varit
50-100 rader så vore det mer sannolikt att det i alla fall ligger nära.

Men å andra sidan så har du fått flera principiella beskrivningar över hur
den funktion du vill ha ska fungera. Och det ligger så vitt jag kan se
ganska långt från din kod. Det jag försöker säga är bara att du får
försöka gå "tillbaka till ritbordet" och fundera lite mer i detalj över funktionen.
Som Icecap säger så är det sannolikt enklast att lösa med lite timers.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: styra RGB LED

Inlägg av bos »

netrunner skrev:Börja med den första snurran.
Vad för snurra?
Skriv svar