Ansteuerung einer RGB LED (PWM)

Gast #370871
Lesenswert?

Hi Leutz,

hier ein kleiner Beitrag von mir, vllt kanns wer brauchen.
Ist in erster Linie für Einsteiger gedacht, die Ideen zum Proggen
suchen.
Controller ist ein AT Mega8.

-------------- Code -----------------

#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <inttypes.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdlib.h>


/****************************
 RGB-LED-Steuerung
 26.02.06 Th. de Buhr

 Ansteuerung einer RGB-LED
 Port B: 0=R, 1=G, 2=B
****************************/


#define CLK 8000000

#define delay_ms(ms) _delay_loop_2(ms * (CLK/4000))
#define delay_us(us) _delay_loop_2(us * (CLK/4000000))

#define bit_on(BYTE, BIT)  BYTE |= 1 << BIT;
#define bit_off(BYTE, BIT) BYTE &= ~(1 << BIT);


volatile char colour=1, led_out=0;
volatile int time=0, pwm=0;
volatile char palette[12]={0,1,2,4,1,2,3,4,5,6,7};


SIGNAL(SIG_OVERFLOW0)
{
  TCNT0 = 0x80;
  time++;

  if(time>=100) time=0;

  if(time>pwm)
  {
    led_out=0;
  }

  else
  {
    led_out=palette[colour];
  }

  PORTB = led_out;
}



int main()
{
  char i=0;
  //pwm = 0...100%, colour = 0...10

  DDRB=0xFF;
  PORTB=0x00;

  DDRD=0xFF;
  PORTD=0x00;

  //Timer 8Bit setup
  bit_off(TCCR0, CS00);    //Int. CLK/8
  bit_on(TCCR0, CS01);
  bit_off(TCCR0, CS02);

  TCNT0 = 0x00;        //Timer-Reg. löschen

  bit_on(TIMSK, TOIE0);    //Overflow-Int. enable


  sei();

  delay_ms(20);        //Pause, falls Programmierfehler den 
Programmierport
überschreibt


  while(1)
  {
    for(i=0; i<=100; i++)
    {
      pwm=i;
      PORTD = 16;

      delay_ms(20);
      PORTD = 0;
    }

    if((colour++) > 10) colour=1;
   }
}


Viel Spass damit!

MfG,
Th. de Buhr
Gast #370876
Lesenswert?

Also für einen Beispiel Code in Assembler wie man eine PWM für einen
ATMEL ATtiny13 programmiert, wäre ich auch sehr dankbar.
Hat da evtl. jemand etwas adäquates für mich.
Gruß und vielen Dank im Vorraus
Gast #849650
Lesenswert?

hallo stefan,

ich suche einen code um mit einer rgb-led farbwechsel zu erzeugen.
hab mich mal umgeschaut und mich informiert und mir wurde gesagt, dass 
eine rgb led mit 6 pins besser zum farbmischen sei als eine led mit 4 
pins.
als controller wollte ich einen avr nehemen.
hast du zufällig einen passenden code ???
Beitrag #5001883 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren