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
Springlicht für Modellbau
29.07.2014, 15:09
Beitrag #1
Springlicht für Modellbau
Hallo Gemeinde,

für ein Feuwehrfahrzeug möchte ich mittels einen Schaltmodul ein sogg. Springlicht ein- bzw. ausschalten.

Zum Springlicht: es handelt sich um zwei paar LED (Blaulicht auf dem Dach und Frontscheinwerfer) die im Wechsel aufleuchten sollen. Um den Effekt realistisch darzustellen ist ein weiches auf- und abblenden der LEDs über PWM vorgesehen.

Das Schaltmodul CTI PS4b liefert einen HIGH (5VDC) und LOW Signal.

Das Problem: der nachfolgend aufgeführte Sketch lässt die LEDs immer blinken. Einziger Unterschied: liegt an Pin 7 HIGH an, erfolgt der Wchsel deutlich schneller als bei einem LOW-Pegel.

Das Listing:

/* Springlicht - weiches überblenden zwischen 2 Paar LEDs */


int ledPin1 = 3; // LED dem analogen Ausgang Pin 3 zuweisen
int ledPin2 = 9; // LED dem analogen Ausgang Pin 9 zuweisen
int ledPin3 = 11; // LED dem digitalen Ausgang Pin 11 zuweisen

int RX = 7; // Eingang dem Ausgang A4 des CTI PS4b zuweisen

int del1 = 11; // Verzögerung zwischen den Fading Vorgängen FadeIn und FadeOut
int a = 12; // Zuweisung der Schritte für den Durchlauf des Bereiches von 0 bis 255 mit der Variablen a

void setup()

{
pinMode(RX, INPUT); // Pin 7 als Eingang definiert
pinMode(ledPin1, OUTPUT); // Pin3 als Ausgank deklariert
pinMode(ledPin2, OUTPUT); // Pin9 als Ausgank deklariert
pinMode(ledPin3, OUTPUT); // Pin 11 als Ausgang deklariert
}

void loop()
{

if (digitalRead(RX) == HIGH) // Bedingung erfüllt wenn Signal von A4 des PS4b = HIGH ist


for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=a) //Fade in von minimaler bis maximaler in a Schritten: setzen der Schrittweite (Bereich von 0 to 255):

{
analogWrite(ledPin1, fadeValue);
delay(del1); // wartet (del1) Millisekunden zwischen den Dimmeffekten
}

for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=a) // Fade out von minimaler bis maximaler in a Schritten: setzen der Schrittweite (Bereich von 0 to 255):

{
analogWrite(ledPin1, fadeValue);
delay(del1); // wwartet (del1) Millisekunden zwischen den Dimmeffekten
}

for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=a) // Fade in von minimaler bis maximaler in a Schritten: setzen der Schrittweite (Bereich von 0 to 255):

{
analogWrite(ledPin2, fadeValue);
delay(del1); // wartet (del1) Millisekunden zwischen den Dimmeffekten
}

for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=a) //Fade out von minimaler bis maximaler in a Schritten: setzen der Schrittweite (Bereich von 0 to 255):

{
analogWrite(ledPin2, fadeValue);
delay(del1); // wartet (del1) Millisekunden zwischen den Dimmeffekten
}

if (digitalRead(RX) == LOW) // Bedingung erfüllt wenn RX = LOW ist

digitalWrite (ledPin3, HIGH);
delay(50);
digitalWrite (ledPin3, LOW);
delay (50);

}

Was mache ich da verkehrt?

Lasse ich die PWM-Schleifen weg funktioniert es wie angedacht. Eine zweite IF-Bedingung im LOW hat, egal wo eingefügt, nicht zum Erfolg geführt.

Ich werde mich sehr freuen wenn mich ein Mitglied aus dem Forum erhellen würde.

LG
Armin de DO1XXY
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2014, 15:16
Beitrag #2
RE: Springlicht für Modellbau
Hi,
wenn nach dem if(...) nicht nur ein Befehl steht, dann muss das ganze in {} eingeschlossen werden. Ansonsten bezieht sich das if sozusagen nur auf den ersten Befehl danach.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2014, 16:51
Beitrag #3
RE: Springlicht für Modellbau
(29.07.2014 15:16)Thorsten Pferdekämper schrieb:  Hi,
wenn nach dem if(...) nicht nur ein Befehl steht, dann muss das ganze in {} eingeschlossen werden. Ansonsten bezieht sich das if sozusagen nur auf den ersten Befehl danach.
Gruß,
Thorsten

Cool

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2014, 21:03
Beitrag #4
RE: Springlicht für Modellbau
Hallo Thorsten,

danke für den Anstoß. Ein Problem bleibt allerdings noch: wenn ich die Schaltung von der Spannungsversorgung nehme und erneut anschließe, bleiben im LOW-Modus beide LED dunkel. Schalte ich im Betrieb von HIGH auf LOW glimmen beide LEDs. Erst ein erneutes trennen vor der Versorgungsspannung lässt sie beide zu 100% erlöschen - bis zum nächsten Wechsel auf LOW.

Hängt das mit der Konfiguration der analogen Ausgänge zusammen?

Gruß
Armin de DO1XXY

(29.07.2014 16:51)Hilgi schrieb:  
(29.07.2014 15:16)Thorsten Pferdekämper schrieb:  Hi,
wenn nach dem if(...) nicht nur ein Befehl steht, dann muss das ganze in {} eingeschlossen werden. Ansonsten bezieht sich das if sozusagen nur auf den ersten Befehl danach.
Gruß,
Thorsten

Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2014, 21:12
Beitrag #5
RE: Springlicht für Modellbau
Hi,
das liegt wohl daran, dass fadeValue nie wirklich auf 0 geht. Wenn man von 255 so lange 12 abzieht, dass es gerade so >= 0 bleibt, dann erhält man 3. Das ist nicht 0. D.h. das letzte, was die Ausgänge mitbekommen ist ein analogWrite(pin,3). So lange nichts anderes reingeschrieben wird bleibt das auch dabei.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2014, 21:36
Beitrag #6
RE: Springlicht für Modellbau
Fehler gefunden: ich hatte vergessen beide LED mit LOW auszuschalten


(29.07.2014 21:03)do1xxy schrieb:  Hallo Thorsten,

danke für den Anstoß. Ein Problem bleibt allerdings noch: wenn ich die Schaltung von der Spannungsversorgung nehme und erneut anschließe, bleiben im LOW-Modus beide LED dunkel. Schalte ich im Betrieb von HIGH auf LOW glimmen beide LEDs. Erst ein erneutes trennen vor der Versorgungsspannung lässt sie beide zu 100% erlöschen - bis zum nächsten Wechsel auf LOW.

Hängt das mit der Konfiguration der analogen Ausgänge zusammen?

Gruß
Armin de DO1XXY

(29.07.2014 16:51)Hilgi schrieb:  
(29.07.2014 15:16)Thorsten Pferdekämper schrieb:  Hi,
wenn nach dem if(...) nicht nur ein Befehl steht, dann muss das ganze in {} eingeschlossen werden. Ansonsten bezieht sich das if sozusagen nur auf den ersten Befehl danach.
Gruß,
Thorsten

Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.07.2014, 06:26
Beitrag #7
RE: Springlicht für Modellbau
Dank der oben erwähnten LOW Anweisung bleiben die LEDs nach dem Ende des HIGH-Signales dunkel.

Der Hinweis darauf dass fadeValue nicht aus 0 geht ist für meine weitere Projekte eine wichtige Aussage. Danke dafür.

Jetzt fehlt mir noch das i-Tüpfelchen: die Ansteuerung des Springlicht über einen Modelbauempfängers statt eines CTI-Schaltmodul. Der Empfänger gibt ein 50 Hz (20ms) Signal aus, dass je nach Funktion einen 1 ms bis 2ms lang ist. Hat da vielleicht noch jemand eine Idee?

Viel Spaß beim gemeinsamen Hobby
Armin de DO1XXY


(29.07.2014 21:12)Thorsten Pferdekämper schrieb:  Hi,
das liegt wohl daran, dass fadeValue nie wirklich auf 0 geht. Wenn man von 255 so lange 12 abzieht, dass es gerade so >= 0 bleibt, dann erhält man 3. Das ist nicht 0. D.h. das letzte, was die Ausgänge mitbekommen ist ein analogWrite(pin,3). So lange nichts anderes reingeschrieben wird bleibt das auch dabei.
Gruß,
Thorsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.07.2014, 08:09
Beitrag #8
RE: Springlicht für Modellbau
(30.07.2014 06:26)do1xxy schrieb:  Jetzt fehlt mir noch das i-Tüpfelchen: die Ansteuerung des Springlicht über einen Modelbauempfängers statt eines CTI-Schaltmodul. Der Empfänger gibt ein 50 Hz (20ms) Signal aus, dass je nach Funktion einen 1 ms bis 2ms lang ist. Hat da vielleicht noch jemand eine Idee?
Schau Dir mal das hier an:
http://arduino.cc/en/pmwiki.php?n=Reference/PulseIn
Falls das nicht reicht, dann ggf. noch das hier:
http://electronics.stackexchange.com/que...put-method
...und die Links darin.
Das ist halt etwas komplexer, daher würde ich es erst einmal mit pulseIn versuchen.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino-Projekte von dqb312 (Modellbau) dqb312 4 4.154 19.04.2015 17:08
Letzter Beitrag: dqb312
  Franzis Verlag "Arduino im RC-Modellbau" gesucht do1xxy 0 1.207 13.08.2014 18:28
Letzter Beitrag: do1xxy
Lightbulb Modellbau andibaba 10 6.067 01.05.2014 11:51
Letzter Beitrag: Scherheinz
  Fahrstuhlprojekt im Modellbau Gottfried 2 3.665 17.10.2013 19:52
Letzter Beitrag: Lothar

Gehe zu:


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