styra RGB LED

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
toffie
Inlägg: 1888
Blev medlem: 22 juli 2004, 21:38:07
Ort: Töreboda / Stockholm
Kontakt:

Re: styra RGB LED

Inlägg av toffie »

netrunner tänker nog på "loop" när han säger snurra.. :)
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: styra RGB LED

Inlägg av vfr »

Ja, så tolkade jag det också.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: styra RGB LED

Inlägg av bos »

Loop är mer begripligt än snurra, jag satt och funderade på vad sjutton det är för (mekanisk) snurra med LEDs han pratade om :D
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: styra RGB LED

Inlägg av snigelen »

davrex skrev:Det råkar inte finns någon som har en sådan kod snutt som kan kan få kika lite på?
Du kan få kika lite på följande.

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);
   }
}
Användarvisningsbild
toffie
Inlägg: 1888
Blev medlem: 22 juli 2004, 21:38:07
Ort: Töreboda / Stockholm
Kontakt:

Re: styra RGB LED

Inlägg av toffie »

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?
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 »

> ...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...)
Användarvisningsbild
toffie
Inlägg: 1888
Blev medlem: 22 juli 2004, 21:38:07
Ort: Töreboda / Stockholm
Kontakt:

Re: styra RGB LED

Inlägg av toffie »

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?
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 »

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.
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 »

Huuuu... sodjan är modig och vågar göra en vild gissning:
Utan att veta mer än det du berättade så kan man bara gissa att du sannolikt gjorde fel.
:wink:

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.
Användarvisningsbild
toffie
Inlägg: 1888
Blev medlem: 22 juli 2004, 21:38:07
Ort: Töreboda / Stockholm
Kontakt:

Re: styra RGB LED

Inlägg av toffie »

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!
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 »

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.
Användarvisningsbild
toffie
Inlägg: 1888
Blev medlem: 22 juli 2004, 21:38:07
Ort: Töreboda / Stockholm
Kontakt:

Re: styra RGB LED

Inlägg av toffie »

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.
Du tänker på att det blir för mycket för kretsen att hantera med att koppla flera lysdioder så direkt?
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 :)
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 »

> 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.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: styra RGB LED

Inlägg av snigelen »

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?
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.
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å..
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.
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.
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 »

> 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...
Skriv svar