Springlicht für Modellbau
|
30.07.2014, 13:40
Beitrag #9
|
|||
|
|||
RE: Springlicht für Modellbau
Hallo Thorsten,
danke für den Tipp. Soweit klappt die Abfrage. So peinlich mir das ist, jetzt habe ich die beiden einzelnen Blöcke funktionsbereit, finde aber nicht das missing link um beide miteinander zu verbinden. Hast Du eine Idee? Das Listing des Sketch ist mittlerweile desolat, da ich viel daran herum geschrieben habe. /* Abfrage eines RC-Empfänger über eine Tastfunktion und Ausgabe auf eine LED */ int pwin = 4; // Signal aus dem Empfänger, entsprechend gewählter Kanal int rk = 8; // Ausgang für Kontroll LED int spl1 = 11; // legt die LED für Springlicht 1 auf Pin 11 int spl2 = 12; // legt die LED für Springlicht 2 auf Pin 12 byte valw = 75; byte rkon = 0; unsigned long durationw; void setup() { pinMode(pwin, INPUT); pinMode (spl1, OUTPUT); pinMode (spl2, OUTPUT); pinMode(rk, OUTPUT); digitalWrite(rk, HIGH); } void loop() { durationw = pulseIn(pwin, HIGH, 20000); // int pwin = 1; INPUT valw = map(durationw, 1090, 1929, 0, 150); if(valw < 30) { springlicht(); } } void springlicht() { if(rkon == 0) { digitalWrite(rk, LOW); rkon = 1; delay(1200); } else { digitalWrite(rk, HIGH); rkon = 0; delay(1200); if (digitalWrite® == HIGH) // Bedingung erfüllt wenn das Eingangssignal HIGH ist /* Ansteuerung der ersten LED*/ { 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); } 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); } /* Ansteuerung der zweiten LED*/ 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); } 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); } { analogWrite(ledPin1, LOW); analogWrite(ledPin2, LOW); } } } Danke im voraus Armin (30.07.2014 08:09)Thorsten Pferdekämper schrieb:(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: |
|||
30.07.2014, 14:29
Beitrag #10
|
|||
|
|||
RE: Springlicht für Modellbau
(30.07.2014 13:40)do1xxy schrieb: Hast Du eine Idee? Das Listing des Sketch ist mittlerweile desolat, da ich viel daran herum geschrieben habe.Dann räum den Sketch doch mal auf. Was hindert Dich daran? ...auch Einrückungen und der übliche Kram wären nett. Dann noch das ganze so verpacken: Code: ... Ansonsten: Das Coding sieht doch gar nicht so schlecht aus. Was macht es denn und was möchtest Du anders haben? 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. |
|||
30.07.2014, 14:49
Beitrag #11
|
|||
|
|||
RE: Springlicht für Modellbau
Noch mal Moin.
Folgendes will ich erreichen: wird an der Fernsteuerung ein zuvor definierter Taster betätigt, wird ein sogg. Springlicht (Wechsellicht zwischen Abblendlicht und Blaulicht) aktiviert, dass über weiche Wechsel funktioniert. Ein erneutes Betätigen des Tasters beendet die ganze Prozedur. Mein Status ist der dass ich die einzelnen Funktionsgruppen, also Springlicht mit HIGH und LOW ein- und ausschalten kann, sowie die Ansteuereung einer LED Ein/Aus über den Knüppelschalter der Fernsteuerung. Was mir fehlt ist das missing link, also der Programmcode der die beiden Sketches zu einem macht, der die o.g. Aufgabe erfüllt. Diesen Übergang bekomme ich nicht hin.Was ich bekomme sind massig Errormeldungen. Der Code: /* Abfrage eines RC-Empfänger über eine Tastfunktion und Ausgabe auf eine LED */ int pwin = 4; // Signal aus dem Empfänger, entsprechend gewählter Kanal int rk = 8; // Ausgang für Kontroll LED int spl1 = 11; // legt die LED für Springlicht 1 auf Pin 11 int spl2 = 12; // legt die LED für Springlicht 2 auf Pin 12 byte valw = 75; byte rkon = 0; unsigned long durationw; void setup() { pinMode(pwin, INPUT); pinMode (spl1, OUTPUT); pinMode (spl2, OUTPUT); pinMode(rk, OUTPUT); digitalWrite(rk, HIGH); } void loop() { durationw = pulseIn(pwin, HIGH, 20000); // int pwin = 1; INPUT valw = map(durationw, 1090, 1929, 0, 150); if(valw < 30) { springlicht(); } } void springlicht() { if(rkon == 0) { digitalWrite(rk, LOW); rkon = 1; delay(1200); } else { digitalWrite(rk, HIGH); rkon = 0; delay(1200); if (digitalWrite® == HIGH) // Bedingung erfüllt wenn das Eingangssignal HIGH ist /* Ansteuerung der ersten LED*/ { 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); } 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); } /* Ansteuerung der zweiten LED*/ 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); } 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); } { analogWrite(ledPin1, LOW); analogWrite(ledPin2, LOW); } } } LG Armin (30.07.2014 14:29)Thorsten Pferdekämper schrieb:(30.07.2014 13:40)do1xxy schrieb: Hast Du eine Idee? Das Listing des Sketch ist mittlerweile desolat, da ich viel daran herum geschrieben habe.Dann räum den Sketch doch mal auf. Was hindert Dich daran? |
|||
30.07.2014, 16:05
Beitrag #12
|
|||
|
|||
RE: Springlicht für Modellbau
Hi,
dann geh doch mal die Fehlermeldungen durch und ändere Dein Coding entsprechend... Außerdem: BITTE räume mal Dein Coding auf, so dass es lesbarer wird. So kann man kaum was erkennen. Was mir auffällt: Code: if (digitalWrite® == HIGH) 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. |
|||
30.07.2014, 16:22
(Dieser Beitrag wurde zuletzt bearbeitet: 30.07.2014 16:36 von do1xxy.)
Beitrag #13
|
|||
|
|||
RE: Springlicht für Modellbau
Hallo Thorsten,
im Moment blicke ich durch die zusammengelegten Listings nicht mehr durch. Ich habe viel zusammengestrickt und weiß nicht mehr genau wo was hingehört oder hingehörte. Dabei kam dann auch die Stelle mit der ominösen if-Anweisung zustande. Mein nächster Schritt wird es sein beide Sketches als solches wiederherzustellen. mal sehen was dann ist. Noch einmal Danke und Gruß aus Lüneburg Armin de DO1XXY (30.07.2014 16:05)Thorsten Pferdekämper schrieb: Hi, (30.07.2014 16:05)Thorsten Pferdekämper schrieb: Hi, Hallo Thorsten, so sehen beide Programme im Orignal aus. Ich habe sie beide in einem Sketch reinkopiert um sie beim Bearbeiten besser im Überblick zu haben - wobei deise Methode zum Chaos geführt hat. Gruß Armin de DO1XXY |
|||
01.08.2014, 07:22
(Dieser Beitrag wurde zuletzt bearbeitet: 01.08.2014 07:37 von do1xxy.)
Beitrag #14
|
|||
|
|||
Modellbau: Wechselblinker über Fernsteuerung
Hallo Gemeinde,
nach dem der erste Thread meinerseits an die Wand gefahren wurde, hier das überarbeitete Listing bzw. beide Teile des Sketch, getrennt durch Kommentare. Angedacht ist ein Wechselblinker dessen Übergänge mit PWM weich erfolgen sollen. Ein- und ausgeschaltet wird die Funktion über einen Empfänger einer Modellbaufernsteuerung. Vielleicht mag sich jemand das Listing ansehen und mir seine Gedanken dazu mitteilen. Ein schönes Wochenende Armin de DO1XXY (01.08.2014 07:22)do1xxy schrieb: Hallo Gemeinde, /* Modellbau PWM Wechselblinker über Fernsteuerung aktiviert*/ /* Programmteil 1: auslesen des Empfängers der Fernsteuerung mit dem Ziel ein ein Ansteuerungssignal für den PWM Wechselblinker im zweiten Programmteil zu erhalten */ int RX = 4; // Eingang für das Signal des Empfängers int SL = 8; // Ausgang für blaue LED als Statusanzeige des Schaltkanals byte valw = 75; // byte rkon = 0; // unsigned long durationw; //Variable für Pulsdauer durationw void setup() { pinMode(RX, INPUT); // definiert pwin als Eingang pinMode(SL, OUTPUT); // definiert rk als Ausgang digitalWrite(SL, HIGH); // gibt Ausgabe wenn rk = HIGH } void loop() { durationw = pulseIn(RX, HIGH, 20000); // Dauer valw = map(durationw, 1090, 1929, 0, 150); if(valw < 30) { rundumlicht(); } } void rundumlicht() { if(rkon == 0) { digitalWrite(SL, LOW); rkon = 1; delay(1200); } else { digitalWrite(SL, HIGH); rkon = 0; delay(1200); } } // Ende des ersten Programmes /* Programmteil 2: Wechselblinker mit PWM geführten weichen Übergang zwischen 2 Gruppen von LEDs, angesteuert durch das HIGH Signal des ersten Programmes */ int ledPin1 = 3; // LED dem analogen Ausgang Pin 3 zuweisen int ledPin2 = 9; // LED dem analogen Ausgang Pin 9 zuweisen int SK1 = 7; // Eingang für Ansteuerung mit Logisch HIGH 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(SK1, INPUT); // Pin 7 als Eingang definiert pinMode(ledPin1, OUTPUT); // Pin3 als Ausgank deklariert pinMode(ledPin2, OUTPUT); // Pin9 als Ausgank deklariert } void loop() { if (digitalRead(SK1) == HIGH) // Bedingung erfüllt wenn das Eingangssignal HIGH ist /* Ansteuerung der ersten LED*/ { 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); } 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); } /* Ansteuerung der zweiten LED*/ 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); } 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); } { analogWrite(ledPin1, LOW); analogWrite(ledPin2, LOW); } } } |
|||
01.08.2014, 08:41
Beitrag #15
|
|||
|
|||
RE: Springlicht für Modellbau
Hi,
packe das Coding der loop-Funktion im zweiten Coding in die rundumlicht-Funktion des ersten Codings. Außerdem müssen die globalen Variablen aus dem zweiten Coding auch ins erste rein. 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. |
|||
01.08.2014, 09:18
Beitrag #16
|
|||
|
|||
RE: Springlicht für Modellbau
Hallo Thorsten,
das werde ich nachher ausführen. Zwischenzeitlich habe ich etwas anderes ausprobiert, in dem ich den Ausgang des RX-Sketches (SL Pin 8) mit dem Eingang des Wechselblinkers Sketches (SK1 Pin 7) verbunden habe. Das funktioniert im groben, wenn man ausser acht lässt das es ca 1 Sekunde dauert bis es anfängt zu blinken und nach einem Blinkvorgang Schluß ist. Ein interressantes Resultat, das aber sicher nicht im Sinne eines vernünftig funktionierendes Sketches ist. /* Modellbau PWM Wechselblinker über Fernsteuerung aktiviert*/ /* Programmteil 1: auslesen des Empfängers der Fernsteuerung mit dem Ziel ein ein Ansteuerungssignal für den PWM Wechselblinker im zweiten Programmteil zu erhalten */ int RX = 4; // Eingang für das Signal des Empfängers int SL = 8; // Ausgang für blaue LED als Statusanzeige des Schaltkanals byte valw = 75; // byte rkon = 0; // unsigned long durationw; //Variable für Pulsdauer durationw // aus Programmteil 2 int ledPin1 = 3; // LED dem analogen Ausgang Pin 3 zuweisen int ledPin2 = 9; // LED dem analogen Ausgang Pin 9 zuweisen int SK1 = 7; // Eingang für Ansteuerung mit Logisch HIGH 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 // Initialsierung beider Programmteile abgeschlossen void setup() { pinMode(RX, INPUT); // definiert pwin als Eingang pinMode(SL, OUTPUT); // definiert rk als Ausgang digitalWrite(SL, HIGH); // gibt Ausgabe wenn rk = HIGH // aus Programmteil 2 pinMode(SK1, INPUT); // Pin 7 als Eingang definiert pinMode(ledPin1, OUTPUT); // Pin3 als Ausgank deklariert pinMode(ledPin2, OUTPUT); // Pin9 als Ausgank deklariert } // Zuordnungen beider Programmteile abgeschlossen void loop() { durationw = pulseIn(RX, HIGH, 20000); // Dauer valw = map(durationw, 1090, 1929, 0, 150); if(valw < 30) { rundumlicht(); } } void rundumlicht() { if(rkon == 0) { digitalWrite(SL, LOW); rkon = 1; delay(1200); } else { digitalWrite(SL, HIGH); rkon = 0; delay(1200); } // void loop() Dateien Programmteil 2 if (digitalRead(SK1) == HIGH) // Bedingung erfüllt wenn das Eingangssignal HIGH ist /* Ansteuerung der ersten LED*/ { 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); } 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); } /* Ansteuerung der zweiten LED*/ 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); } 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); } { analogWrite(ledPin1, LOW); analogWrite(ledPin2, LOW); } } } // Ende des ersten Programmes /* Programmteil 2: Wechselblinker mit PWM geführten weichen Übergang zwischen 2 Gruppen von LEDs, angesteuert durch das HIGH Signal des ersten Programmes */ Gruß Armin de DO1XXY |
|||
|
|
|
Möglicherweise verwandte Themen... | |||||
Thema: | Verfasser | Antworten: | Ansichten: | Letzter Beitrag | |
Arduino-Projekte von dqb312 (Modellbau) | dqb312 | 4 | 6.346 |
19.04.2015 17:08 Letzter Beitrag: dqb312 |
|
Franzis Verlag "Arduino im RC-Modellbau" gesucht | do1xxy | 0 | 1.675 |
13.08.2014 18:28 Letzter Beitrag: do1xxy |
|
![]() |
Modellbau | andibaba | 10 | 7.926 |
01.05.2014 11:51 Letzter Beitrag: Scherheinz |
Fahrstuhlprojekt im Modellbau | Gottfried | 2 | 4.792 |
17.10.2013 19:52 Letzter Beitrag: Lothar |
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste