INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Sternenhimmel mit Fernbedienung
26.10.2013, 12:44
Beitrag #1
Sternenhimmel mit Fernbedienung
Moin,
ich bin zur Zeit dabei einen Sternenhimmel zubauen. Dieser besteht aus 10 LED's die jeweils mit PWM angesteuert werden. Zusätzlich wollte ich jetzt eine Funk-Fernbedienung mit einbinden um die einzelnen LED's anzusteuern. Dafür hab ich bis jetzt 2 verschiedene Programme geschrieben bzw. vorhandene bearbeitet. Soweit funktioniert alles so wie ich es mir vorgestellt habe, nur habe ich jetzt folgendes Problem:

Sobald ich anfange die Deklaration usw. von der Fernbedienung in das PWM-Programm zu integrieren leuchten 2 LED's nur noch für einen Bruchteil einer Millisekunde auf.

Bis jetzt habe ich herausgefunden dass das Problem eintritt sobald ich die 2 rot markierten Zeilen (PWM-STEUERUNG) einfüge. Es handelt sich bei den 2 LED's um " ledPin09" und " ledPin10", alle anderen leuchten munter auf und ab. Ich hab keine Ahnung woran es liegen könnte, deshalb poste ich einfach mal teile des Quellcodes mit rein. Ich hoffe das ist kein Problem das der Post nun ewig lang wird ^^


FERNBEDIENUNG

#include <IRremote.h>

int ir_receiver = 14;

int ledPin02 = 2;
int ledPin03 = 3;
int ledPin04 = 4;
int ledPin05 = 5;

IRrecv irrecv(ir_receiver);

decode_results results;

void setup()

{
Serial.begin(9600);

irrecv.enableIRIn(); // Start the receiver

pinMode(ledPin02, OUTPUT); // sets the digital pin as output

pinMode(ledPin03, OUTPUT); // sets the digital pin as output

pinMode(ledPin04, OUTPUT); // sets the digital pin as output

pinMode(ledPin05, OUTPUT); // sets the digital pin as output
}


void loop()

{
if (irrecv.decode(&results)) {

long int decCode = results.value;

Serial.println(decCode);

switch (results.value) {

case 17921:

Serial.println("1");

digitalWrite(ledPin02, HIGH); // sets the LED on

break;

case 83458:

Serial.println("2");

digitalWrite(ledPin03, HIGH); // sets the LED on

break;

case 17923:

Serial.println("3");

digitalWrite(ledPin04, HIGH); // sets the LED on

break;

case 83460:

Serial.println("4");

digitalWrite(ledPin05, HIGH); // sets the LED on

break;

case 17925:

Serial.println("5");

digitalWrite(ledPin02, LOW); // sets the LED off

digitalWrite(ledPin03, LOW); // sets the LED off

digitalWrite(ledPin04, LOW); // sets the LED off

digitalWrite(ledPin05, LOW); // sets the LED off

break;

default:

Serial.println("Warten ...");
}
irrecv.resume();
}
}



PWM-STEUERUNG


#include <IRremote.h>

int ledPin02 = 2; // LED-Verbindung zu Digital I/O PWM 02 // Sternenbild 01
int ledPin03 = 3; // LED-Verbindung zu Digital I/O PWM 03 // Sternenbild 02
int ledPin04 = 4; // LED-Verbindung zu Digital I/O PWM 04 // Sternenbild 03
int ledPin05 = 5; // LED-Verbindung zu Digital I/O PWM 05 // Sternenbild 04

int ledPin06 = 6; // LED-Verbindung zu Digital I/O PWM 06 // Hintergrund 01
int ledPin07 = 7; // LED-Verbindung zu Digital I/O PWM 07 // Hintergrund 02
int ledPin08 = 8; // LED-Verbindung zu Digital I/O PWM 08 // Hintergrund 03

int ledPin09 = 9; // LED-Verbindung zu Digital I/O PWM 09 // Sternenbild 05
int ledPin10 = 10; // LED-Verbindung zu Digital I/O PWM 10 // Sternenbild 06
int ledPin11 = 11; // LED-Verbindung zu Digital I/O PWM 11 // Sternenbild 07

int ir_receiver = 14; // IR-Empfänger-Verbindung zu Communication 14
IRrecv irrecv(ir_receiver);
decode_results results;

long randNumber;



void setup()

{
pinMode(ledPin02, OUTPUT); // Deklaration/Initialisierung als Ausgang
pinMode(ledPin03, OUTPUT); // Deklaration/Initialisierung als Ausgang
pinMode(ledPin04, OUTPUT); // Deklaration/Initialisierung als Ausgang
pinMode(ledPin05, OUTPUT); // Deklaration/Initialisierung als Ausgang
pinMode(ledPin06, OUTPUT); // Deklaration/Initialisierung als Ausgang
pinMode(ledPin07, OUTPUT); // Deklaration/Initialisierung als Ausgang
pinMode(ledPin08, OUTPUT); // Deklaration/Initialisierung als Ausgang
pinMode(ledPin09, OUTPUT); // Deklaration/Initialisierung als Ausgang
pinMode(ledPin10, OUTPUT); // Deklaration/Initialisierung als Ausgang
pinMode(ledPin11, OUTPUT); // Deklaration/Initialisierung als Ausgang

randomSeed(analogRead(0));

Serial.begin(9600); // Kommunikation mit dem Serial Monitor wird gestartet
irrecv.enableIRIn(); // Initialisiert den IR-Empfänger



}



void loop()

{
randNumber = random(1, 11); // Zufällige Zahl bzw. Auswahl von 1 bis 11

switch(randNumber) // Zufälliger Wechsel zwischen den einzelnen Funktionen
{
case 1:
Funktion1();
break;

case 2:
Funktion2();
break;

case 3:
Funktion3();
break;

case 4:
Funktion4();
break;

case 5:
Funktion5();
break;

case 6:
Funktion6();
break;

case 7:
Funktion7();
break;

case 8:
Funktion8();
break;

case 9:
Funktion9();
break;

case 10:
Funktion10();
break;
}

}



void Funktion1()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin02, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin02, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}



void Funktion2()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin03, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin03, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}



void Funktion3()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin04, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin04, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}



void Funktion4()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin05, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin05, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}



void Funktion5()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin06, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin06, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}



void Funktion6()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin07, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin07, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}



void Funktion7()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin08, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin08, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}



void Funktion8()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin09, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin09, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}



void Funktion9()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin10, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin10, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}



void Funktion10()

{
for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
{
analogWrite(ledPin11, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
{
analogWrite(ledPin11, fadeValue);
delay(5); // Verzögerung zwischen Auf- und Abdimmung
}

}

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.10.2013, 15:59 (Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2013 09:25 von rkuehle.)
Beitrag #2
RE: Sternenhimmel mit Fernbedienung
Hallo the_ape (du weißt schon was ape in deutsch heißt Rolleyes ;
du kannst Code über das Symbol # in den Editor reinpacken.

Soweit ich das sehe machst du ja bei jeder LED das gleiche. Daher habe ich mal den Code gekürzt. So kann man dann Schreibfehler ausschließen.
Code:
#include <IRremote.h>
int ir_receiver = 14; // IR-Empfänger-Verbindung zu Communication 14
IRrecv irrecv(ir_receiver);
decode_results results;
long randNumber;
void setup()
{
  for(int ledpin = 2 ; ledpin<=11; ledpin+=1)
  {
    pinMode(ledpin, OUTPUT); // Deklaration/Initialisierung als Ausgang
  }
  randomSeed(analogRead(0));
  Serial.begin(9600); // Kommunikation mit dem Serial Monitor wird gestartet
  irrecv.enableIRIn(); // Initialisiert den IR-Empfänger
}
void loop()
{
  randNumber = random(1, 11); // Zufällige Zahl bzw. Auswahl von 1 bis 11
    switch(randNumber) // Zufälliger Wechsel zwischen den einzelnen Funktionen
  {
  case 1:
    Funktion(2);
    break;
  case 2:
    Funktion(3);
    break;
  case 3:
    Funktion(4);
    break;
  case 4:
    Funktion(5);
    break;
  case 5:
    Funktion(6);
    break;
  case 6:
    Funktion(7);
    break;
  case 7:
    Funktion(8);
    break;
  case 8:
    Funktion(9);
    break;
  case 9:
    Funktion(10);
    break;
  case 10:
    Funktion(11);
    break;
  }
}
void Funktion(int ledpin_x)
{
  for(int fadeValue = 120 ; fadeValue <= 255; fadeValue +=1) // Dimmung vom Minimum "0" zum Maximum "255" mit einer Steigerung von "x" (in dem Fall min. 120 // max. 255 // stei. +1)
  {
    analogWrite(ledpin_x, fadeValue);
    delay(5); // Verzögerung zwischen Auf- und Abdimmung
  }
  for(int fadeValue = 255 ; fadeValue >= 120; fadeValue -=1) // Dimmung vom Maximum "255" zum Minimum "0" mit einer Steigerung von "x" (in dem Fall max. 120 // min. 255 // stei. -1)
  {
    analogWrite(ledpin_x, fadeValue);
    delay(5); // Verzögerung zwischen Auf- und Abdimmung
  }
}

Was die Hardware angeht sollte man die Hinweise hier vielleicht beachten:
http://arduino.cc/de/Reference/AnalogWrite

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Infrarot Fernbedienung grinsemaennchen 3 853 22.07.2016 08:52
Letzter Beitrag: hotsystems
  433Mhz Fernbedienung Empfänger Haustechno 5 2.005 21.11.2015 17:06
Letzter Beitrag: hotsystems
  Video Player Fernbedienung mit Industrietastern Arduinoob 3 1.189 05.10.2015 09:16
Letzter Beitrag: hotsystems
  IR - Fernbedienung Georg 0 2.056 16.05.2014 16:07
Letzter Beitrag: Georg

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste