Go Down

Topic: RGB-LED: Anfängerfragen (Read 1 time) previous topic - next topic

romar

Hi liebe com,

ich habe mir heute eine RGB-LED geholt und diese gleich an meinen Arduino Nano angeschlossen.
Aufgrund der 6-beinigen LED tat ich mir am Anfang schwer herauszufinden, wie diese anzuschließen ist, aber nach einiger Zeit des Probierens klappte es (denke ich zumindest).

Deswegen wollte ich mir als Übung ein Programm schreiben, welches je eine Farbe "pulsieren" lässt, d.h. langsam an und langsam ausgehen lässt.

Sowohl beim Eingang pinB2 (blau), als auch beim eingang pingG (grün) funktioniert dies ohne Probleme, bei pinR (rot) jedoch geht die LED entweder an oder aus, ohne Dimmstufen dazwischen. Warum?

Desweiteren frage ich mich ob ich etwas falsch gemacht habe, da ich 2 blaue Ports habe?

Würde mich freuen wenn ihr etwas Licht ins Dunkel bringen könntet, fals ich etwas vergessen habe zu erwähnen einfach schreiben. Dankeschön :)

Code: [Select]
int pinR  = 2;
int pinG  = 3;
int pinB1 = 4;
int pinB2 = 5;

void setup()
{
  Serial.begin(9600);    
  pinMode(pinR, OUTPUT);   
  pinMode(pinG, OUTPUT);
  pinMode(pinB1, OUTPUT);
  pinMode(pinB2, OUTPUT);
}

void loop()
{
  for(int i=0; i<=255; i++)
  {
  analogWrite(pinR,  0);
  analogWrite(pinG,  i);
  analogWrite(pinB1, 0);
  analogWrite(pinB2, i);
  delay(10);
  }
  for(int i=255; i>=0; i--)
  {
  analogWrite(pinR,  0);
  analogWrite(pinG,  i);
  analogWrite(pinB1, 0);
  analogWrite(pinB2, i);
  delay(10);
  }
}


gloob

Code: [Select]

  analogWrite(pinR,  0);
 analogWrite(pinG,  i);
 analogWrite(pinB1, 0);
 analogWrite(pinB2, i);



pinR und pinB1 wird doch bei dir immer nur auf 0 gesetzt, sollte dort nicht auch i stehen?

gloob

Dann fehlt bei dir immer noch die Loop für die rote LED

Code: [Select]
for(int i=255; i>=0; i--)
 {
 analogWrite(pinR,  i);
 analogWrite(pinG,  0);
 analogWrite(pinB1, 0);
 analogWrite(pinB2, 0);
 delay(10);
 }


romar

#3
Mar 28, 2011, 10:34 pm Last Edit: Mar 28, 2011, 10:39 pm by romar Reason: 1
Bei dem Programmtext, welchen ich gepostet habe, wird nun immer die blaue und die grüne zusammen heller und wieder dunkler.
Wenn ich nun anstelle der 2 for-schleifen dies schreibe, müsste normalerweise die Rote LED langsam an und wieder ausgehen, dies tut sie aber nicht! warum?

Code: [Select]
for(int i=255; i>=0; i++)
 {
 analogWrite(pinR,  i);
 analogWrite(pinG,  0);
 analogWrite(pinB1, 0);
 analogWrite(pinB2, 0);
 delay(10);
 }

for(int i=255; i>=0; i--)
 {
 analogWrite(pinR,  i);
 analogWrite(pinG,  0);
 analogWrite(pinB1, 0);
 analogWrite(pinB2, 0);
 delay(10);
 }


EDIT: Ich habe nun anstatt dem digitalen Port 2, an welchem der anschluss für die rote LED angeschlossen war den digitalen Port 5 genommen, und nun funktioniert es. Dennoch frage ich mich warum?

Und meine zweite Frage lautet, ob es normal ist, dass ich zwei blaue Anschlüsse habe?

uwefed

Ich hoffe Du hast Vorwiderstände für die LED verwendet.
Nicht alle digitalen pins sind PWM-Ausgänge die Du mit analogWrite ansteuern kannst.
Nur 3,5,6,9,10 und 11 sind PWM Ausgänge.
Analoge PWM Ausgänge mußt Du nicht über pinMode(pin, OUTPUT); als Ausgänge definieren. pinMode kannst Du weglassen.

Die LED hat 2 Blaue da diese weniger stark leuchten als die rote und grüne LED. So wird das ausgeglichen.

Grüße Uwe
   

Go Up