Forum: Projekte & Code Ansteuerung einer RGB LED (PWM)


von Th. de Buhr (Gast)


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

von Stefan Noll (Gast)


Lesenswert?

hi,

ich habe eine RGB Ansteuerungsplatine für 1 Watt RGB LEDs entworfen,
Schaltung gibts bei mir auf Anfrage. Wenn größeres Interesse besteht
werde ich es als wiki Eintrag festhalten.

von Franzis (Gast)


Lesenswert?

@Stefan Noll
Habe Dir eine Mail geschieckt..

von Stefan Noll (Gast)


Lesenswert?

@Franzis:
ist leider nichts angekommen

von Domi N. (paradoxon)


Lesenswert?

Hallo. ich habe das Problem beim Forum "Mikroprozessor und Elektronik"
- die Power-LED-Ansteuerung mit PWM in Assembler (PIC16F84).

Das Programmieren bereitet mir ein bisschen Probleme, aber es muss
Assembler sein - Könnt ihr mir helfen? Guckt doch mal dort hinein, wäre
nett.

Gruss und bis bald

von Jörg Pferdmenges (Gast)


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

von Thomas W. (firefox)


Lesenswert?

@Stefan Noll

hast du die Schaltung irgendwo eingestellt?

MfG
Thomas

von Ghadieh (Gast)


Lesenswert?

hi leute,

wo kann ich so was finden, ich meine elektronische Ansteuerung des 
Motors mit 12V Spannung durch PWM.

MfG

von Stephan (Gast)


Lesenswert?

kanns du mir den Plan vielleicht an ucon@gmx.de schicken? wäre super!!!

von Stefanie B. (sbs)


Lesenswert?

Stephan wrote:
> kanns du mir den Plan vielleicht an ucon@gmx.de schicken? wäre super!!!

warum nicht hier im Forum veröffentlichen?
Dann haben alle etwas davon. ;-)

Gruss
Stefan

von Andre K. (andre2208)


Lesenswert?

Hallo!
Würde mich auch für die Schaltung Interessieren könntest du mir das per 
Mail zuschicken  ?
Wäre Super !!
a.klimasch@arcor.de

von Andre K. (andre2208)


Lesenswert?

Hätte da noch eine Frage mit welcher Software ist das geschrieben mit 
C++?

von rookie (Gast)


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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.