
styra RGB LED
Re: styra RGB LED
Loop är mer begripligt än snurra, jag satt och funderade på vad sjutton det är för (mekanisk) snurra med LEDs han pratade om 

Re: styra RGB LED
Du kan få kika lite på följande.davrex skrev:Det råkar inte finns någon som har en sådan kod snutt som kan kan få kika lite på?
Kod: Markera allt
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#define RGBPORT PORTB
#define RGBDDR DDRB
#define RPIN 1
#define OCRR OCR1A
#define GPIN 3
#define OCRG OCR2
#define BPIN 2
#define OCRB OCR1B
#define RGBMASK ((1<<RPIN)|(1<<GPIN)|(1<<BPIN))
#define pwm_set(r,g,b) do {OCRR = r; OCRG = g; OCRB = b; } while(0)
// Binary count with fading steps.
void rgb_fade_step(void)
{
static uint8_t dir = 1, r = 0, g = 0, b = 0, steps = 255;
// Red is first bit
if (dir & 1) { if (r < 255) r++; } // going up
else { if (r > 0) r--; } // going down
// Green is second
if (dir & 2) { if (g < 255) g++; }
else { if (g > 0) g--; }
// Blue is third
if (dir & 4) { if (b < 255) b++; }
else { if (b > 0) b--; }
pwm_set(r,g,b);
if (--steps == 0) {
if (++dir > 7) // Period complete
dir = 0;
}
}
int main(void)
{
RGBDDR = RGBMASK; // RGB-pins output
// Timer1, set OC1X on comp. match (inv. mode). 8-bit fast PWM.
TCCR1A = (1<<COM1A1)|(1<<COM1A0)|(1<<COM1B1)|(1<<COM1B0)|(1<<WGM10);
// presc. 1:8
TCCR1B = (1<<WGM12)|(1<<CS11);
// Timer2
TCCR2 = (1<<COM21)|(1<<COM20)|(1<<WGM21)|(1<<WGM20)|(1<<CS21);
while (1) {
rgb_fade_step();
_delay_ms(10);
}
}
Re: styra RGB LED
med den koden får man väl ungefär max 6 färg-steg, eller hur?
röd, röd-grön, grön, grön-blå, blå, blå-röd
men man får aldrig vit då, har jag rätt? går det att få vit för övrigt?
för när jag testat lite grann, jag är fortfarande ny på programmering så allt vad som gås igenom i denna tråd är visserligen
inte helt nytt men ganska så.. hur som helst när jag testat och bara kopplat på spänning så går det att blanda grön och blå
men så fort jag kopplar in röd så dör grön och blå..
sen om man faktiskt kör en pwm kod så vet jag ju att det går att blanda röd med grön eller blå, så det är ju ok..
men går det att blanda alla tre för att få vit?
röd, röd-grön, grön, grön-blå, blå, blå-röd
men man får aldrig vit då, har jag rätt? går det att få vit för övrigt?
för när jag testat lite grann, jag är fortfarande ny på programmering så allt vad som gås igenom i denna tråd är visserligen
inte helt nytt men ganska så.. hur som helst när jag testat och bara kopplat på spänning så går det att blanda grön och blå
men så fort jag kopplar in röd så dör grön och blå..
sen om man faktiskt kör en pwm kod så vet jag ju att det går att blanda röd med grön eller blå, så det är ju ok..
men går det att blanda alla tre för att få vit?
Re: styra RGB LED
> ...men så fort jag kopplar in röd så dör grön och blå..
Det är lite oklart om du har en fråga kring det där eller om du bara
berättade det ändå. Om det var något du undrade kring varför det
fungerade såsom du beskriver så får du nog också tala om vad
du gjorde (d.v.s hur du kopplade). Utan att veta mer än det du
berättade så kan man bara gissa att du sannolikt gjorde fel.
(Sen har du även något strul med ditt tangentbord, det blir inte stor
bokstav i början av dina meningar så dina inlägg ser lite trista ut. Du
kanske skulle kolla på det...)
Det är lite oklart om du har en fråga kring det där eller om du bara
berättade det ändå. Om det var något du undrade kring varför det
fungerade såsom du beskriver så får du nog också tala om vad
du gjorde (d.v.s hur du kopplade). Utan att veta mer än det du
berättade så kan man bara gissa att du sannolikt gjorde fel.
(Sen har du även något strul med ditt tangentbord, det blir inte stor
bokstav i början av dina meningar så dina inlägg ser lite trista ut. Du
kanske skulle kolla på det...)
Re: styra RGB LED
Jaså du Sodjan tycker du det, då får jag väl ta och patcha skräpet framför datorn då 
Nja, just hur jag kopplade var väl ingen direkt fråga, men jag kopplade vardera katod (gemensam katod rgb led) till
vardera pwm pinne på min mega32, PortD har jag för mig och just själva "rullandet" mellan de tre färgerna gick ju bra..
Men om man kopplar alla tre katoderna till jord och sen kopplar in anoden till +5 med tillhörande motstånd
så funkar bara grön och blå tillsammans men när röd kopplas in så dör blå och grön..
Blev det bättre förklarat nu?

Nja, just hur jag kopplade var väl ingen direkt fråga, men jag kopplade vardera katod (gemensam katod rgb led) till
vardera pwm pinne på min mega32, PortD har jag för mig och just själva "rullandet" mellan de tre färgerna gick ju bra..
Men om man kopplar alla tre katoderna till jord och sen kopplar in anoden till +5 med tillhörande motstånd
så funkar bara grön och blå tillsammans men när röd kopplas in så dör blå och grön..
Blev det bättre förklarat nu?
Re: styra RGB LED
Ja, det förklarar ju varför det "inte fungerade". Du har helt enkelt
inte läst på om lysdioder tillräckligt. Läs på, gör rätt, så kommer det
att "fungera". Jag tänker inte ta detaljerna här, vilken LED tutorial som
helst kommer att förklara allt...
EDIT:
Kort förklaring:
> Men om man kopplar alla tre katoderna till jord och sen kopplar in anoden till +5 med tillhörande motstånd
Gör tvärtom. 3 motstånd, ett till varje färg/katod.
Kolla upp Vf för varje färg i datablandet för RGB lysdioden så ser du varför.
inte läst på om lysdioder tillräckligt. Läs på, gör rätt, så kommer det
att "fungera". Jag tänker inte ta detaljerna här, vilken LED tutorial som
helst kommer att förklara allt...
EDIT:
Kort förklaring:
> Men om man kopplar alla tre katoderna till jord och sen kopplar in anoden till +5 med tillhörande motstånd
Gör tvärtom. 3 motstånd, ett till varje färg/katod.
Kolla upp Vf för varje färg i datablandet för RGB lysdioden så ser du varför.
Re: styra RGB LED
Huuuu... sodjan är modig och vågar göra en vild gissning:

toffie: Jo, du behöver läsa på lite om lysdioder. Kanske räkna ohms lag? Vi lägger ju en del tid på att hjälpa dig men inte att lära dig grunderna här på forumet. Lite skälv studier får du nog göra. Uppenbarligen funkar inte lysdioden utan mikrodator, ta då "ett steg i taget" och lös det först.
Utan att veta mer än det du berättade så kan man bara gissa att du sannolikt gjorde fel.

toffie: Jo, du behöver läsa på lite om lysdioder. Kanske räkna ohms lag? Vi lägger ju en del tid på att hjälpa dig men inte att lära dig grunderna här på forumet. Lite skälv studier får du nog göra. Uppenbarligen funkar inte lysdioden utan mikrodator, ta då "ett steg i taget" och lös det först.
Re: styra RGB LED
Sodjan:
Du får ursäkta men vad är det som är svårt med en lysdiod? Då måste det vara speciellt just med RGB lysdioder
eftersom det både går att PWMa RGB lysdioden och det går att köra lysdioderna separat..
Skulle det vara så att strömmen går speciellt i RGB lysdioden kanske? I sådant fall kan jag acceptera det, men
varför skulle en lysdiod tutor ta upp just det?
Plus, även fast det är tre lysdioder i en så borde de fungera som tre separata lysdioder, även om de har
en gemensam ledare..
netrunner
Ohms lag kan jag räkna, det är inga problem.
Jag ber er inte att lära mig, detta är en hobby för mig och jag gör detta för att jag tycker det är roligt.
Jag har inte gått någon utbildning så jag kan inte alla grunder, jag försöker lära mig.
Men det är lite svårt att lära sig om man inte får hjälp på traven..
Att ni har gått alla möjliga utbildningar och jobbar med elektronik och så vidare betyder inte att ni har
rätt att vara högfärdiga, vill ni inte hjälp, svara inte på tråden.. Svårare än så är det inte!
Du får ursäkta men vad är det som är svårt med en lysdiod? Då måste det vara speciellt just med RGB lysdioder
eftersom det både går att PWMa RGB lysdioden och det går att köra lysdioderna separat..
Skulle det vara så att strömmen går speciellt i RGB lysdioden kanske? I sådant fall kan jag acceptera det, men
varför skulle en lysdiod tutor ta upp just det?
Plus, även fast det är tre lysdioder i en så borde de fungera som tre separata lysdioder, även om de har
en gemensam ledare..
netrunner
Ohms lag kan jag räkna, det är inga problem.
Jag ber er inte att lära mig, detta är en hobby för mig och jag gör detta för att jag tycker det är roligt.
Jag har inte gått någon utbildning så jag kan inte alla grunder, jag försöker lära mig.
Men det är lite svårt att lära sig om man inte får hjälp på traven..
Att ni har gått alla möjliga utbildningar och jobbar med elektronik och så vidare betyder inte att ni har
rätt att vara högfärdiga, vill ni inte hjälp, svara inte på tråden.. Svårare än så är det inte!
Re: styra RGB LED
Har du redan kollat upp Vf för de olika färgerna ?
Och det gav ingen ledtråd till varför det uppträdde så som du beskrev ?
> Plus, även fast det är tre lysdioder i en så borde de fungera som tre separata lysdioder,
Exakt, det är just det de gör. Så koppla dom så då så kommer det att fungera !
Vf för de olika färgerna är "nyckeln" till att förstå detta, låter tjatigt men så är det.
EDIT:
Så som du kopplade de tre färgerna ska man *ALDRIG* koppla lysdioder. Helt oavsett
om det råkar vara RGB eller tre (eller något annat antal > 1) likadana lysdioder.
Och det gav ingen ledtråd till varför det uppträdde så som du beskrev ?
> Plus, även fast det är tre lysdioder i en så borde de fungera som tre separata lysdioder,
Exakt, det är just det de gör. Så koppla dom så då så kommer det att fungera !
Vf för de olika färgerna är "nyckeln" till att förstå detta, låter tjatigt men så är det.
EDIT:
Så som du kopplade de tre färgerna ska man *ALDRIG* koppla lysdioder. Helt oavsett
om det råkar vara RGB eller tre (eller något annat antal > 1) likadana lysdioder.
Re: styra RGB LED
Du tänker på att det blir för mycket för kretsen att hantera med att koppla flera lysdioder så direkt?EDIT:
Så som du kopplade de tre färgerna ska man *ALDRIG* koppla lysdioder. Helt oavsett
om det råkar vara RGB eller tre (eller något annat antal > 1) likadana lysdioder.
Det kan jag ju visserligen hålla med om och det är dumt av mig förstås.
Ah jag tror jag förstår vad du menar där, med Vf, att den röda lysdioden som "bara" drar 1.95V medan
de andra två drar 3.3V vardera, den röda lysdioden blir då den enklaste vägen för strömmen att gå.
Det är sånt jag "vet" men ändå inte tänker på, det var många år sen jag jobbade med elektronik så jag har
tappat "tänket" när det gäller att bygga.. Men förhoppningsvis kommer det tillbaka snart

Re: styra RGB LED
> Du tänker på att det blir för mycket för kretsen att hantera med att koppla flera lysdioder så direkt?
Nej, det är inte det.
Men din andra "uppenbarelse" är "spot on"...
All ström går genom den lysdiod som har lägst Vf.
Och detta är anledningen till att man inte ska koppla lysdioder
som är "likadana" så heller, för de har aldrig exakt samma Vf och det
blir lätt obalans mellan lysdioderna och mellan strömmarna.
Nej, det är inte det.
Men din andra "uppenbarelse" är "spot on"...

All ström går genom den lysdiod som har lägst Vf.
Och detta är anledningen till att man inte ska koppla lysdioder
som är "likadana" så heller, för de har aldrig exakt samma Vf och det
blir lätt obalans mellan lysdioderna och mellan strömmarna.
Re: styra RGB LED
Nej, blå-röd-grön (dvs vit) är med samt alla av, så det blir åtta steg. Men det var bara ett exempel, du kan ju göra precis som du vill.toffie skrev:med den koden får man väl ungefär max 6 färg-steg, eller hur?
röd, röd-grön, grön, grön-blå, blå, blå-röd
men man får aldrig vit då, har jag rätt? går det att få vit för övrigt?
Vad har du för resistanser? Du behöver typiskt ha större på röd eftersom den nog vill ha lägre spänning än de andra två för att ge likvärdig intenitet. Men diskussionen verkar ju balla ur kring detta tema så det reder du nog ut.för när jag testat lite grann, jag är fortfarande ny på programmering så allt vad som gås igenom i denna tråd är visserligen
inte helt nytt men ganska så.. hur som helst när jag testat och bara kopplat på spänning så går det att blanda grön och blå
men så fort jag kopplar in röd så dör grön och blå..
Sen kör den inverterad pwm eftersom mina rgb-dioder har gemensam anod. Men det borde bara ge omvänd sekvens om du har gemensam katod.
Re: styra RGB LED
> Vad har du för resistanser?
Han hade bara *ett* motstånd på den gemensamma pinnen, vilket framgick i senare inlägg. Läs gärna dom också.
> Du behöver typiskt ha större på röd eftersom den nog vill ha lägre spänning än de andra två för att ge likvärdig intenitet.
Visst, om man ha ett motstånd per gärg, vilket inte var fallet här...
Han hade bara *ett* motstånd på den gemensamma pinnen, vilket framgick i senare inlägg. Läs gärna dom också.
> Du behöver typiskt ha större på röd eftersom den nog vill ha lägre spänning än de andra två för att ge likvärdig intenitet.
Visst, om man ha ett motstånd per gärg, vilket inte var fallet här...