Hauptmenü

Cylon Raider (Moebius 1/32) - Beleuchtungseffekte (fertig)

Begonnen von Flugwuzzi, 06. Dezember 2015, 19:24:45

0 Mitglieder und 1 Gast betrachten dieses Thema.

Chowhound

 :P Hurra! Noch einer der den Arduino genial findet :P. Ich habe mich am Anfang auch nicht so recht rangetraut, aber wenn man sich erstmal ein wenig reinkniet, staunt man, was so alles möglich ist. Und das Tolle ist, daß man in diversen Foren unheimlich schnell Hilfe kriegt, wenn mal etwas nicht so klappt. Sonst hätte ich damals auch meine B-17 nicht "zum laufen" gekriegt!
Ich bin schon gespannt was ihr so alles veranstaltet :winken:. Auf jeden Fall werde ich hier mal öfters vorbeischauen :6:!

Gruß
Jürgen
Alle elektrischen Geräte funktionieren intern mit Rauch. Wenn er entweicht, sind sie defekt.

Riker

Hey Flugwuzzi,

wieder schön erklärt und eine gute Bebilderung  :klatsch:
ja klar, gerne kannst bei den "komplizierteren" Sachen Fragen ;)

Mir ist bei dem Schaltplan mit der Steckbrett LED-Schaltung allerdings was aufgefallen. Der Vorwiderstand hat, so wie er gesteckt
ist, keinerlei Wirkung da die Querverbindung im Steckbrett ihn Überbrückt.
Du kannst die Drahtverbindung vom Arduinoboard zum Vorwiderstand weglassen und stattdessen den Vorwiderstand direkt
vom Arduino zur LED stecken.

Gruß,
Sven  :winken:
Derzeit im Bau:
Eine Menge.....

Flugwuzzi

@Chowhound ... Freut mich dass du auch dabei bist ... hab erst jetzt deinen Baubericht zur B-17 so richtig würdigen können ... toll wie du das gemacht hast!

@Riker ... Danke für den Hinweis mit dem Steckbrett, auweia ... du hast natürlich völlig Recht, da habe ich die falsche Zeile erwischt und das Bild vom Schaltplan korrigiert.

lg
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

Flugwuzzi

#28
Dank des Feiertages in Österreich war heute wieder ein wenig Zeit um mit blinkenden LEDs zu spielen.

2 LEDS gleichzeitig blinken

Wir räumen zuerst unser Breadboard auf und machen eine übersichtichere Schaltung ...

- 2 LED mit Widerständen (rot und blau) sollen am pin 8 und 9 angeschlossen werden und beide sollen gleichzeitig blinken
- die Kathode (Minus) der LEDS laufen über die gelben Steckverbindungen auf die Minus-Leiste des Breadboards und von der Minus-Leiste über die Orange Steckverbindung zum Masse Pin (Ground Pin GND) des Pro Micro Boards.



Hier der Code ... wir sagen dem Board dass wir einen weiteren Pin benötigen und wir lassen beide LEDs gleichzeitig starten und pausieren.



Video:
https://youtu.be/0DUpCuYTxKo

2 LEDs Wechselblinker - rot/blau
Auf der gleichen Schaltung machen wir mit den beiden einen Wechselblinker ... wie der upload funktioniert wisst Ihr ja schon.



Video:
https://youtu.be/9mbO9G_pMyE

2 LEDs Doppelflasher abwechselnd rot/blau



Video:
https://youtu.be/G6LHIhDNDKY

Prima, jetzt laufen die Schaltungen ja wie geschmiert, der Code schaut ganz gut aus .... ABER ....

... was wenn ich mal schnell die Zeiten ändern möchte, dann muss ich viele Werte überschreiben, oder wenn ich ganz schnell mal das Kabel an einem anderen Pin anstecken möchte? Grüss Gott Frau Holle ... da wartet Schreibarbeit bei Änderungen oder Anpassungen  :pffft:

Es wäre doch schön wenn man einiges verbessern könnte ...
- die Wartezeiten delay(250) kommt oft vor, das wäre toll wenn man diese Zahl an einer Stelle angeben könnte
- wie kann ich schnell den Pin umschreiben wenn ich umstecken möchte ...

Glücklicherweise sind Programmierer faule Menschen (ich darf das sagen, weil das ein Teil meiner täglichen Arbeit ist ;-) und Codeschreiber haben sich schon vor langer Zeit Lösungen für diese Probleme einfallen lassen. Auf die können wir jetzt zurückgreifen ...

Variablen und Datentypen .... jetzt nicht weglaufen, so schlimm ist das nicht ...

VARIABLEN ... ERKLÄRUNGSVERSUCH FÜR MODELLBAUER

Variablen sind wie Boxen,
Behälter in denen Dinge sind die ich in der Werkstatt herumtragen kann.
Ich kann Dinge in die Box hinein und heraus geben. Die Dinge (Inhalte) ändern sich, aber die Box bleibt gleich. Jedenfalls ist das so wenn ich ein ordnungsliebender Modellbauer bin ;-)

Ich habe in der Werkstatt eine Box für Decals ... hier kommen Decals rein, schön flach gelagert. Ich kaufe Decals, lege diese rein, baue Projekte und nehme Decals raus, trage die Box mal an einen Tisch, die Decals darin ändern sich aber die Box bleibt die gleiche.
... die Box ist in der Programmierung also die Variable.

Für verschiedene Arten von Inhalten gibt es verschiedene Boxen in der Werkstatt - eine stabile Box für Decals, eine Kartonbox für Spritzlingsreste, eine dichte, kleine Plastikbox für Diorama-Streusand. Wir haben also für jede Box eine bestimmte Art von Inhalt ... wenn wir den Dioramensand in die Decalbox schütten dann gibts Probleme.

Diese Inhalte für die Boxen gibts in der Programmierung auch und die heißen ... Datentyp (engl. data type).
Diese Inhalte können sein:
- ganze Zahlen
- Dezimalzahlen
- Buchstaben/ Zeichen
- und noch viele mehr ....

Also wir haben eine Box (= Variable) und diese beinhaltet nur den Inhalte (=Datentyp) den ich dafür vorgesehen habe!

Sehen wir uns den Wechselblinker an und überlegen was wir durch Variablen und Datentypen flexibler machen könnten:



- die vielen 9er und 8er der pins könnten wir in Variablen packen (gelbe und orange Punkte im obigen Bild)
- die verschiedenen delay Zeiten wären auch durch Variablen einfacher einstellbar und änderbar(blaue Punkte im obigen Bild)

Toll ... äh, aber welche Datentypen sind das nun  ?(
-> beides sind ganze Zahlen (wir haben keinen pin2,5 und auch keine Buchstaben  :6: )
-> dieser Datentyp heißt in der Programmierung Integer ... oder auch int


Okay, aber wie erschaffen wir eine Variable?
... wir deklarieren Sie in der Arduino IDE vor dem setup() Bereich. Dem Arduino muss ich nun sagen, dass ich ganze Zahlen (Datentyp int) in die Box (Variable) schmeissen will.

... wir schreiben nun für die rote und blaue Leds an den Pins... dafür gibts Vorgaben an die wir uns halten müssen ... aber so sieht das aus:

inhaltstyp namemeinerVariablen=Wert;

Im Arduino Sketch sieht das so aus:

int redLedPin=9;
int blueLedPin=8;

Variablennamen müssen mit Kleinbuchstaben anfengen. Unterstrich, Raute und Leerzeichen sind im Variablennamen verboten und der Variablenname soll nicht mit einer Zahl beginnen. In der Namenswahl ist man völlig frei. Bezeichnung wie ... ichHabMeinSchatziLieb ist zwar nett, aber ein Name der die Funktion irgendwie beschreibt ist auf Dauer sinnvoller;-)
Ich schreibe Variablen mit zusammengesetzten Wörten mit Großbuchstaben darin, das kann ich leichter lesen.
Der Wert darf in Arduino zwischen -32.768 und + 32.768 liegen. Zum Schluss den Strichpunkt/Semikolon nicht vergessen.

Okay ... nun schreiben wir das Programm ein wenig um .. ersetzen Zahlen und Bezeichnungen durch Variablennamen ...



Wir haben jetzt zwar ein paar Zeilen mehr Programmcode, aber dafür können wir durch die Verwendung von Variablen die Pins, die On- und Off-Zeiten der Blinker wesentlich bequemer ändern. Am Blinken ändert sich zur vorigen Codeversion NIX!

Allerdings sind diese Wiederholungen der Blinkfrequenz im Code ein wenig umständlich ... man stelle sich vor man benötigt eine Blinkwiederholung von 25x  :D ... das könnte man mit einer for-Schleife und einem Zähler einfacher gestalten.
Machen wir vielleicht in einem nächsten Update, falls euch überhaupt noch der Sinn danach ist.

Außerdem wird euch beim experimentieren sicher auffallen, dass diese delay() Sache bei mehreren unterschiedlich blinkende LEDs ganz schön in die Quere kommen kann ;-)

OK, das wars für heute ... mit den bisherigen Informationen könnt Ihr schon mal diverse Blinkvarianten für euer Modell umsetzen.


Happy Blinking.
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

Flugwuzzi

Weil bald Weihnachten ist .... beschäftigen wir uns kurz mit Schleifen  :1:

for-Schleife (for-loop)
ist für uns eine Zählschleife mit Zähler


Im letzten Sketch haben wir gesehen dass es ziemlich nervig sein kann diese Blöcke für eine Anzahl von Blinkwiederholungen zu schreiben. Dafür gibt es ein tolles Konzept ... die for-Schleife.
Mit einer for-Schleife kann ich eine Reihe von Anweisungen (Blinks, Servobewegungen usw.) nacheinander so oft ausführen lassen wie ich es möchte.

- Ich möchte nun die rote LED in einer for-Schleife 10x blinken lassen ohne den ganzen Quatsch ewig lange immer wieder zu schreiben und danach die blaue LED 2x blinken und danach das ganze wieder von vorne.

Unsere for-Schleife platzieren wir in den void loop  ... und in der runden Klammer nach dem for ist unser "Zähler".

Dieser loop läuft und zählt bei jedem Durchgang +1 dazu, so lange bis die Anzahl 10 erreicht ist und hüpft danach in den nächsten loop für die blaue LED). Wie man sieht haben wir etliches an Schreibarbeit für die 10 Wiederholungen gespart.

Schön wäre noch wenn wir die Anzahl der Wiederholungen ... in unserem Fall 10 auch über eine Variable einstellen können und aus dem Code für die blaue LED machen wir auch einen for-loop.



Video
https://www.youtube.com/watch?v=rAucYGH9brk&feature=youtu.be

Na das Ergebnis sieht ja schon besser aus und wir wissen nun dass uns die for-Schleife (for-loop) viel Schreibarbeit ersparen kann, wenn wir viele Wiederholungen benötigen  :1:


while-Schleife (while-loop)

Ähnlich der for-Schleife ist die while-Schleife. Diese wiederholt einen Vorgang solange bis in einer Abfragelogik eine Bedingung nicht mehr erfüllt ist. Die Schreibweise ist ein wenig anders als bei der for-schleife.

Wir können die obige Schaltung  mit einer while-Schleife darstellen z.B. als kleinen Unterschied haben wir die rot blinkende LED auf 7x gestellt und die blaue auf 3 Wiederholungen.




Folgende Themen sind für das Verständnis der Arduino Programmierung als Basiswissen wichtig, aber das sprengt locker den gewünschten Umfang den Bauberichts, deswegen bis zum nächsten mal als Hausarbeit selbständig durcharbeiten ;-)

Weitere Datentypen ....
boolean (wahr/falsch)
int (ganze Zahl)
unsigned int (positive ganze Zahl)
long (für große Zahl)
float (Kommazahl)
char (einzelner Buchstabe)
string (Zeichenkette - mehrere Buchstaben)

Operatoren ....
< (kleiner)
<= (kleiner gleich)
> (größer)
>= (größer gleich)
== (ist gleich)
! (negieren oder Wert umkehren)

Verknüpfungen ....
&& (und)
|| (oder)

Bedingte Anweisungen ....
IF (wenn - dann)
IF ELSE (wenn - dann - sonst)

Datenstruktur ....
Arrays (Felder ... Anzahl von Werten des gleichen Datentyps in einer Variablen)



Prima dass ihr bisher durchgehalten habt  :P
Beim morgigen Update machen wir was mit Pulsweitenmodulation und fragen uns warum delay() beschi**en sein kann ... klingt wie eine Folge aus der Serie "Big Bang Theory", also bleibt dran  :D

lg
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

Riker

Hallo Walter,

echt ne schöne Exkursion in sachen Programmierung und schön aufbauend erklärt.  :P

Darf ich mal nach Zeigern und Adressen fragen?  :pffft: :7:
Bin auf deine fertige Elektronik und dem dazugehörigem Programm gespannt.

Werd dran bleiben
Schöne Grüße,
Sven  :winken:
Derzeit im Bau:
Eine Menge.....

Flugwuzzi

Sven ...  :D Fragen darfst du ... aber wenn ich hier Zeiger/Adressen einbinde dann bekomme ich wohl Boardverbot  :aerger:
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

Flugwuzzi

#32
Dimm-Effekte oder Fading-Effekt mit PULSWEITENMODULATION (PWM)

Bisher haben wir LEDs nur HIGH oder LOW geschaltet. Das heißt nur volle pulle ON oder komplett OFF.

Was wenn ich LEDs langsam ein- oder ausblenden (faden, dimmen) lassen möchte?

Es gibt am Pro Micro Board 5 digitale Pins die man auch als analoge Ausgänge nutzen kann. Durch Pulsweitenmodulation ... kurz PWM ... hat man dann die Möglichkeit eine LED zu dimmen. (oder z.B ein Servo in eine gewisse Position bringen oder eine E-Motor Drehzahl steuern).

Diese PWM fähigen Pins am Pro Micro Board sind Pin 3,5,6,9 und 10. Man erkennt Sie durch die Kreismarkierung am Pinloch. Beim Arduino UNO usw. sind diese Pins als Tilde ~ erkennbar.



Pulsweitenmanipulation klingt erst einmal total kompliziert und jeder Science Buster Fan (Österreicher wissen was ich damit meine ;-) wird glänzende Augen bekommen ;-) .. in Wahrheit ist die Sache sehr simpel.

Mit PWM kann man in sehr kurzer Zeit die Werte von 0 - 255 senden. Über ein sehr, sehr schnelles ein/ausschalten der LED kann man für das menschliche Auge einen Dimmeffekt erzeugen. Wir schalten immer noch ON(5Volt)- OFF(0Volt) wie bisher und verändern einfach die Pausen zwischen den Zuständen.

Wie Bitte?  ?(

Unser menschliches Auge kann so um die 25-30 Bilder pro Sekunde warnehmen. Es kann das einzelne Flackern, das durch die kurzen OFF-Zeiten verursacht wird, nicht mehr erkennen. Wir sehen die LED nur mehr heller oder dunkler ... geil oder?
D.h. eine LED kurz eingeschaltet erscheint unserem Auge dunkler als wenn diese LED länger eingeschaltet ist ... obwohl die LED beide Male gleich hell ist ... crazy ... und manche Menschen vertrauen nur dem was Sie sehen ;-)

Mehr Infos zu den Grundlagen zur Puslweitenmodulation kann man hier nachlesen und sich die Formeln reinziehen ... https://de.wikipedia.org/wiki/Pulsweitenmodulation oder http://www.mikrocontroller.net/articles/Pulsweitenmodulation

Dann lasst uns mal so ein pulsieren oder fading machen ...



Der Arduino Code:

- Wir deklarieren Pin und beachten hier einen Pin mit einem Kringel zu nehmen wenn wir am Pro Micro Board arbeiten (Pin 3,5,6,9,10) ... falls man einen Pin ohne Kringel verwendet dann gibts kein fading sondern nur blinking.
- das Setup können wir bei analogWrite bei PWM Pins leer lassen .. allerdings empfiehlt es sich aus der Praxis hier doch pinMode  einzutragen, damit man eine Übersicht hat.
- falls Ihr keine Lust ein paar hundert mal die einzelnen Schritte aufzuschreiben können wir hier zwei for-Schleifen (Zählschleifen und Zähler für Werterhöhung) ideal anwenden
- also verwenden wir eine for-Schleife um hinauf zu zählen (von LED dunkel nach LED hell)
- und eine weitere for-Schleife um herunter zu zählen (von LED hell nach LED dunkel)
- 1. for Schleife .. die Variable fadingSchritte ist unser Zähler und startet dunkel indem wir im Schleifenkopf fadingschritte=0 setzen ( d.h. 0 = dunkel)
- die Schleife läuft nun so lange die Variable fadingSchritte kleiner oder gleich 255 ist, nach jedem Schleifendurchgang wird der Wert um 5 hochgezählt
- wir übergeben der Funktion analogWrite() eine Pin Nummer und einen Wert zwischen 0 und 255 aus der vorigen for-Schleife
- das passiert solange bis 255 erreicht ist und wir springen zur nächsten for-Schleife
- 2. for Schleife .. hier geht es von hell wieder nach dunkel zurück zur dekrementieren von 5
- zum Schluss ein kleines Delay ... damit alles nicht so schnell geht.



VIDEO
https://www.youtube.com/watch?v=OZpi7sCcuMM&feature=youtu.be


PS: Liebe Programmiercracks und Code-Evangelisten (die ihr gerne via YouTube mitlest und mir schreibt)... ich weiss es rollt euch bei dieser Schreibweise die Zähennägel auf und ich freue mich schon auf die nächsten Emails von euch ...  aber hey ... wir dürfen doch erst mal die Abläufe verstehen bevor wir Code für fading auf dieser Weise oder jener Weise schreiben. Außerdem machen wir hier Modellbau und solange das Spaß macht und wir mit den Ergebnissen zufrieden sind ist jeder Code OK. Punkt!  :blabla:

.. diese Weise ..



.. jene Weise ..



Genug gefaded ... lasst uns mal was flackern!
Das einzige was wir dafür benötigen und noch nicht kennen ist eine gewisse Zufälligkeit ... dann nehmen wir gleich mal die Funktion random().

random(min,max) generiert uns eine zufällige Nummer zwischen den Werten die wir als min und max eingegeben haben.

Arduino Code:

- Pin 9 wird wieder deklariert ... muss PWMfähiger Pin sein
- wir deklarieren die Variable helligkeit
- mit random ändern wir zufällig die Variable helligkeit die dann mit analogWrite an den Pin 9 ausgegeben wird
- zufällige an Zeiten der ausgewählten helligkeit scheinen jetzt die Led flackern zu lassen




VIDEO
https://www.youtube.com/watch?v=7OjSMdaBuVA&feature=youtu.be


Was könnte ich mit PWM und Fading/Flackern im Modellbau umsetzen?
Man kann damit einen Brenneffekt, Feuer in einer Ötonne im kalten Stalingrad,  Lagerfeuer im Diorama oder auch ein Triebwerksflackern eines Jets umsetzen. Abseits von Lichteffekten kann man PWM natürlich auch für die Ansteuerung von Servos, Motoren usw. verwenden.


Hier eine schnelle Umsetzung eines Feuereffekts mit 3 LEds (eine rote LED und zwei gelbe LEDs) ... wenn man mit den Zufallswertgrenzen spielt kann man sehr realistische Effekte erzeugen.




Arduino Code:
- Pin 5, 6, 9 sind PWM Pins und werden deklariert
- jede LED bekommt ihren eigene random() Funktion




Hier ein Video des Effekts mit LED pur:
https://www.youtube.com/watch?v=3ztIuCaUs8w&feature=youtu.be


Hier habe ich ein Butterbrotpapier über die Leds gestülpt um den Effekt ein wenig besser zur Geltung zu bringen:
https://www.youtube.com/watch?v=5UD6_MGktc0&feature=youtu.be


Zum Schluss dieses Updates noch ein kleiner Hinweis.

Wir wollen unsere Beleuchtung ja irgendwann in die freie Wildbahn schicken. Wie versorgen wir das Board dann mit Energie z.B. einem 9V-Block, Lipo-Akkus oder Alkalines?

Dazu gibts am Pro Micro Board 2 Möglichkeiten:

- RAW Pin ... damit kann das Board extern versorgt werden. Hier den pos. Pol der 9V-Batterie hin .. der Anschluss wird vom Board auf 5V (oder auf 3,3V falls man diese Einstellung hat) herunterreguliert. Maximal sollte man 12V verwenden.

- VCC Pin ... ist unreguliert ... benötigt sehr saubere Betriebsspannung.

- GND Hier wird der neg. Pol der Batterie verbunden.




Liebe Kollegen, das wars schon wieder, ich hoffe es war etwas Interessantes dabei.
Bis zum nächsten Update.

lg
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

Riker

Dachte ich mir fast, Walter....  :7:
Dann halte ich mal lieber die Klappe...

:winken:
Derzeit im Bau:
Eine Menge.....

Puchi

Schritt für Schritt verständlich aufgebaut! :P

Und Deine Art der Codierung unterstützt das noch zusätzlich. Passt! :1:


Liebe Grüße,

Karl

Olaf

Klasse Walter!

Ich hatte schon Deine Enterprise bewundert und da ich erwäge auch allerhand mit Beleuchtungseffekten zu machen. schaue ich hier mal gespannt zu. Danke für die große Mühe, die Du dir für uns unwissende machst!  :1: :P :klatsch:

Lg Olaf  :winken:
Das nächste Modell wird besser!

Flugwuzzi

Danke Olaf und Karl ... schön wenn es passt ...


Warnung vorweg ... keine Bilder, keine Videos ... purer Text.


SO VIELE PINS ... ABER EIN PROBLEM ... delay()
Als Modellbauer, der sein Modell mit Blink- und Leuchteffekten aufpeppen möchte, ist man bisher ganz weg was die kleine Pro Micro Platine alles kann. Und es gibt auch noch stattliche 18 I/O Pins auf dem Pro Micro Board die man für LEDs nutzen kann. Was liegt da näher die vielen schönen Pins auch zu nutzen?

Gute Idee ... nur leider haben wir uns ein massives Problem eingehandelt. Wir haben in den bisherigen Schaltungen die LEDs mit der delay() Funktion ein/ausgeschaltet. Das ist auch OK solange man nur eine Schaltung benötig, die Blinkabfolge nacheinander sein kann, man alles in if-Schleifen verpacken kann.

Wenn wir nun beginnen umfangreichere Schaltungen mit delay() zu timen dann merken wir ganz rasch ... hier bremst doch was. Man kann nicht auf inputs reagieren (Taster, Schalter), keine Daten weiterverarbeiten, keine outputs ändern usw. Warum funktioniert das nun scheinbar nicht korrekt?

Was macht dieses delay() ?
Die delay() Funktion im loop stoppt zwar die Power auf dem Pin, aber sie beansprucht auch den kompletten Prozessor für sich und da geht nix mehr.

Aber warum macht das Board das?
Nun ja, unser Board hat keinen Mehrkern-CPU und kann kein Multitasking. Es kann immer nur eine Anweisung auf einmal ausführen und wenn ich ihm mit delay() sage "Warte für 10 für Sekunden" ... dann ist er damit beschäftigt 10 Sekunden zu warten und kann in dieser Zeit keine anderen Dinge parallel machen.

Warum haben wir dann die ganze Zeit mit der delay() Funktion gearbeitet?
Weil Sie so wunderbar simpel ist, für Einsteiger sehr schnell zu verstehen ist und in einfachen Szenarien auch völlig ausreicht.

Wie kann man das Problem lösen?

- Verwende nicht die delay() Funktion für Timing ... haha, ja klar, jetzt wo man das endlich kapiert hat kommt der Flugwuzzi mit dem Käse um die Ecke ... schönen Dank auch!  :5:
- Verwende für Timing die Funktion millis()
- Verwende nicht die delay() Funktion ... kann man nicht oft genug erwähnen  :D
- Pfeiff auf die millis() kauf ein zweites Pro Micro Board für 4€ und mach dort die zweite Schaltung (für Modellbauer wegen Platzmangel leider oft nicht möglich) ;-)

- Benutze Interrupts (machen wir hier nicht)
- Benutze Libraries wie Time Scheduler (machen wir auch nicht)
- uvm.


Äh ... OK ... was macht das millis() nun und wo finde ich die millis()?
Am Anfang ist die Verwendung der Funktion millis() nicht ganz so trivial wie delay() und ich habe auch das Gefühl, dass ich hier schon an der Grenze des Erträglichen im Baubericht kratze ... trotzdem möchte ich noch darauf eingehen, da es wichtig ist das Konzept dahinter zu verstehen.

Schaut euch hier mal die Blinkfunktion mit millis() genauer an, der Code ist deutsch kommentiert und ganz gut erklärt .....http://playground.arduino.cc/Learning/BlinkWithoutDelayDe

Kurz gesagt ... wir arbeiten mit einer Stoppuhr.

- die millis() Funktion merkt sich die abgelaufene Zeit seit das Pro Micro Board gestartet hat. Wenn das Board seit 5 Sekunden läuft, dann erhalten wir über millis() den Wert 5000 zurück (= 5 Sekunden). Der Wert millis() wird aber im Programmverlauf immer größer!

- Wir haben jetzt einen Zeitachse auf die wir zugreifen können. Wir haben einen Startwert 0.

- Das Programm speichert und rechnet wann es z.B. die LED das letze Mal ein/ausgeschaltet hat und jedesmal wenn der loop durchlaufen wird kontrolliert die millis-Stoppuhr, ob eine von mir bestimmte Zeit (unsigned long interval = 1000) verstrichen ist. Wenn dieser Wert erreicht ist, dann wird umgeschaltet (die LED) und die Stoppuhr neu gestartet.

- diese Berechnungen macht der Prozessort sehr schnell und schaltet auch schnell. Das passiert tatsächlich so schnell, dass unser menschliche Auge nicht wahrnimmt, dass die Schaltungen gar nicht parallel erfolgen, sondern sehr schnell nacheinander. Wir sind also immer noch seqenziell unterwegs!

Wir stellen fest: Parallel geht nicht ... aber sehr schnell hintereinander geht sehr wohl.  :P


Wie man sieht erfordert dieses Konzept und diese Schreibweise ein wenig mehr Einarbeitungszeit als eine simple delay() Funktion. Deswegen soll auch an dieser Stelle Schluss sein mit der allgemeinen Einführung zu Beleuchtungseffekten mit Arduino  - wer mehr wissen möchte findet auf der Arduine Website aurduino.cc prima Tutorials und eine hilfsbereite deutschsprachige Community unter http://forum.arduino.cc/index.php?board=31.0

Nur noch ein allerletzter Hinweis ... es gibt verschiedene Libraries auf der Arduino Website. Die kann man sich herunterladen, in die korrekten Ordner der IDE kopieren und anschließen durch Import in den eigenen Sketches verwenden und darauf aufbauen. Damit kann man so manches Problem elegant umschiffen : https://www.arduino.cc/en/Reference/Libraries


Ich hoffe ich konnte euch ein wenig vermitteln wieviel Potential dieses kleine Board hat (wir haben nur mit LEDs gearbeitet und nicht mal mit Schaltern, Sensoren, Motoren usw) und vielleicht findet Ihr auch Spaß daran tiefer in diese Materie einzutauchen ... dann hat der nichtmodellbauerische Ausflug in die Arduino Welt seinen Zweck erfüllt.

Danke euch allen fürs Durchhalten ... ich bin Stolz auf euch Jungs!

Um wieder an den Start des Bauberichts zurückzukommen ... was benötigen wir nun eigentlich an Beleuchtungseffekten für den Cylon Raider?

1) Larson Scanner für das rote Cylonen Auge
2) Blitze aus den beiden Laserkanonen
3) Flimmernde Triebwerke

Also gehts mit diesen Themen beim nächsten Update weiter.
Liebe Modellbaugrüße
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

Flugwuzzi

#37
Nachdem ich alle Weihnachtsfeiern ohne bleibende Schäden überstanden habe  :D ... ein kurzes Update mit den letzen Codeschnipseln ... versprochen  :pffft:

Laserkanone
In meiner derzeit spärlichen Freizeit habe ich ein wenig mit den Laserkanone gespielt ... dh. ich habe das Blitzen der Laserkanonen zuerst mit reinen Zufallswerten gemacht. Das wilde Dauergeblitze hat aber nicht besonders schön ausgesehen. Nachdem ich einige Kampfszenen (Scar im Asteroidenfeld ;-) recherchierte, habe ich versucht einen schlüssigeren Ablauf zu machen.
Es gibt nun in zwei einfachen while-Schleifen plausiblere Sequenzen für Feuerstöße und Feuerpausen, die durch Zufallswerte variiert werden. Vielleicht mache ich da später noch einen Taster um das auszulösen, bin mir aber unsicher, denn auf Ausstellungen sollen die Besucher ja eigentlich die Modelle NICHT berühren, das wäre dann vielleicht etwas kontraproduktiv ;-)



Video der zufälligen Feuersequenzen. Auf der Kamera kommt der Flasheffekt sehr "hell" herüber. Wenn ich die Kanonen mit Röhrchen und Lichtleiter neu aufgebaut habe kann man das bestimmt besser erkennen.

Das YT-Video dazu:
https://youtu.be/AeGsbAnocDE

Larson Scanner = Cylonen Auge
Für das Cylonen Auge habe ich zuerst mit der Vorlage von der Arduino.cc Website herumgespielt, bin aber dann auf die lustigen Bilder von Udo Klein  gestoßen http://blog.blinkenlight.net/experiments/basic-effects/persistence-of-vision/ gestoßen. Sein geniales Knight Rider Sketch für seinen Blinkenlight Shield habe ich schamlos kopiert und angepasst. Genial deswegen, weil es einen fake-PWM Effekt für die LEDS neben dem aktiven Auge dimmt. Da musste ich das Rad nicht nochmal neu erfinden ... Danke Udo!



Das YT Video dazu:
https://youtu.be/PU9vpTdRAq8


Leider lastet das Lauflicht mit Dimmung den Prozessor ziemlich aus und weitere LED Effekte im Loop (wie die Laserkanone und Triebwerke) führen zu starkem ruckeln. Viel Zeit möchte ich da aber nicht in eine Abstimmung stecken, schließlich will ich irgendwann mal endlich die Kleerbflasche öffnen  :rolleyes:

Über die nächsten Tage werde ich mal versuchen SMD-Leds zu löten, da es im "Kopf" des Cylon Raider ziemlich eng zugeht. Ich hoffe ich habe ein ruhiges Händchen.

Lg und schönes Modellbauwochenende
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

Puchi

Die Effekte sehen schon sehr gut aus! :klatsch:

Wenn Du nix dagegen hast, würde ich mir den BB gerne kopieren, vielleicht bastle ich mir die Lichteffekte für meine 1/350 Enterprise ja auch selber.


Liebe Grüße,

Karl

mumm

Moin,

das gleiche wie Karl ging mir auch schon durch den Kopf, also wenn das kopieren ok ist würde ich´s auch machen...
Das eine oder andere Modell das nach Beleuchtung schreit wohnt ja schon hier... :pffft:

Peter  :winken:

Flugwuzzi

Klar Leute, könnt euch das gerne kopieren, soweit ich das geschrieben habe ist es Open Source und bei Verwendung der Cylon-Scanner-Funktion von Udo wäre nett wenn ihr auf seine Website verweisen würdet.

lg
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

alpen32

Nach dem zweiten Satz der technischen Erklärung habe ich aufgehört zu lesen.........und nicht mal die beiden habe ich annähernd verstanden.........
Das ist ja schon fast Krank!
Wie in aller Welt kann man auch nur Erahnen was du uns damit sagen willst??  8o 8o 8o 8o 8o 8o
Unglaublich deine Arbeit quasi im Hintergrund, weil alles was von den 4 A4Seiten als Erläuterung über bleibt sind leuchtende Lämpchen  :3: :3: :3:
Aber echt Toll  :P :P :P :P :P
Freu mich schon, wie das dann in "Action" aussieht!
Grüße!  :winken:

pucki

Feiner Thread.  :klatsch: :klatsch: :klatsch:

Ist im Prinzip das was ich auch plane (Wenn ich mal dazu komme  :pffft: ). Werde ich genaustens beobachten. :8: :santa:

Ach ja. Du solltest dich mal über die Zusammenarbeit zwischen den "SN74HC595N Schieberegister"  und den Arduino informieren. Das ist eins der Standart-Chips die man oft benötigt und ich denke in deiner Platine schnell sehr nützlich wird  :6:

Kleiner Hinweis zu deiner Installationsanleitung (Windows 7) . Mein Board wird unter BOARDS mit aufgelistet und ist dann über "echtes" USB anzusprechen. Das heißt es benötigt kein Pseudo-COM-an-USB-Port.  Was das Risiko das der Com-Port abhaut, gegen 0 setzt ;)

Ach ja. Wenn man es richtig pervers macht, kann dann damit verschiedene Zustands-Beleuchtungsprogramme machen ("gelandet","Im Flug" , "Im Kampf (Mit einer Blitz-LED den Phaser simulieren z.b.))".  Eine Fernbedienung mit passenden Chips war in mein "Starter-Paket" genau so wie das Display ebenfalls drin. Kosten : Ca. 35 Euro. Sogar mit Display im Sockel möglich ;)

Hinweis zum Kauf. Ich kaufe die Teile fast alle in Asien über Ebay + Paypal. Lieferzeit : ca. 4-6 Wochen. Ersparnis : ca. 70 % im Vergleich zu Händlern in DE. 

WICHTIG. Fachleute empfehlen dringend diese Arduino-Platinen nur über ein AKTIVEN HUB (Erkennt man am eigenen Netzteil) an den PC zu hängen. Grund : Mehr Sicherheit für den USB-Port. Immerhin muss der ja den Saft für die Platine und die Schaltung liefern. Und in einer Entwicklungsphase kann dann schon mal was schiefgehen. :(

Gruß

  Pucki
Ich bin PucKi, ein älterer Mann und überzeugter Single, der immer noch versucht ein perfektes Modell zu bauen.

Flugwuzzi

@Puki ... danke für den Hinweis mit dem aktiven USB Hub. Seit ich den dazwischengeschaltet habe ist mir unter Win7 die Platine auch nicht mehr "abgehaut" ;-)


Mannomann ... schon wieder fast ein Monat vergangen seit meinem letzten Update hier. Aber es ist jedes Jahr das Gleiche ... erst freue ich mich auf Weihnachten und denke da werden sicher einige Tage Modellbau möglich sein, nur um im Jänner festzustellen dass es wieder mal nicht so geklappt hat mit der Modellbauzeit ... so ist das Leben  :pffft:

Nachdem wir uns durch die Programmierung durchgequält haben geht es mit "richtigem" Modellbau weiter.

Laserkanonen und Beleuchtung
Die Laserkanonen vom Bausatz lassen sich nur schwer aufbohren um dort die LWL für die Beleuchtung durchzuführen. Deswegen wurden die beiden Laserkanonen aus dünnen Messingröhrchen neu aufgebaut. Um die Röhrchen abzulängen verwende ich diese Tools ...



Hier die Zutaten für die Beleuchtung ... LEDs und LWL. Die Vorwiderstände kommen an die Platine ;-)



Die LWL-Beleuchtung ist nicht schwierig. Hier wie ich es mache:
Zuerst den runden Kopf der LED etwas gerade schleifen.



Dann mit einem Bohrer (gleicher Durchmesser wie LWL) eine Vertiefung in die LED bohren ... Achtung, nicht so tief bohren dass man an die An-/Kathode kommt.





In diese Bohrung werden die LWLs mit einem Tröpfchen Epoxi-Kleber verklebt damit sie sich später nicht leicht lösen können. Superkleber funktioniert nicht gut, es macht die LWL spröde und milchig. Wichtig ... der Kleber muss glasklar sein, ich habe dafür UHU Plus schnellfest verwendet.



Damit die Beleuchtung nicht andere Bereiche beeinflusst/beleuchtet oder die Lichtleitung von anderen Lichtquellen erhellt wird verwende ich zur Abschirmung Schrumpfschläuche im passenden Durchmesser. Die werden über LWL und LED gezogen und dann mit einer Hitzequelle (Lötkolben, Feuerzeug o.ä.) zusammengeschrumpft. Das hält dann ganz gut.





Noch ein Tipp ... vor dem "zusammenschrumpfen" isoliere ich die beiden Lötstellen mit Plasti-Dip (einer flüssigen Isolierungsfarbe) um keine Kurzen zu verursachen.



Nun können die Laserkanonen-LEDs im Modell befestigt werden.



Hier gibts noch ein Video vom Laserkanonenbeleuchtungstest: https://youtu.be/KbhrGeekRcI


Triebwerke
Für die Triebwerke verwende ich weiße LEDs. Die Triebwerke sind innen mit schwarzer Farbe lackiert damit nicht das ganze Triebwerk erleuchtet wird ;-)
Für die LED ist eine kleine Halterung  aus Plasticard Resten geschnitzt. Die Öffnung zum Schiffsrumpf ist mit Sheet verschlossen worden, damit nicht das ganze Modell erleuchtet wird. Um einen schöneren Triebwerkseffekt hinzubekommen habe ich die Klarsichtteile innen "milchig" geschliffen und aussen mit transparentem Blau bemalt.





Triebwerke und die Laserkanone sind über eine eigene Platine gesteuert und das Cylonen-Auge über eine zweite Platine. Alle Effekte auf einer Platine gemeinsam ließen das Auge viel zu sehr ruckeln. Da genug Platz vorhanden ist habe ich die zusätzlichen paar Euros für die 2. Platine gerne in Kauf genommen. Wie man sieht habe ich die Vorwiderstände direkt an der Platine verlötet da hier genug Platz zur Verfügung ist.



Wenn alles verkabelt und sicher verklebt ist kann die eine Hälfte des Cylon Raider geschlossen werden damit wir nicht versehentlich was abreißen. Leider muss ich beim verkleben feststellen ... die Passgenauigkeit ist schlimmer als schlecht. Es gibt richtige Spalten in die man hineinsehen kann ... grummel.



Hier ein Testvideo von den Triebwerken: https://youtu.be/JSI3kGDnjgc

Cylonen Auge
Für das Cylonen Auge habe ich eine passende Schablone erstellt, die von innen hinter die Augenöffnung geklebt ist. Daran kommen dann die winzigen roten SMD LEDs Bauform 0603. Im Cylonen-Kopf mussten noch einige Durchlässe für die Kabel geschnitten werden. Nach 7 LEDs und einem Nervenzusammenbruch ist auch das geschafft ;-)





An der unterseite der LED Halterung habe ich ein dünnes Kupferstück als "Pad" gelötet und dort alle Minus-Leitung der SMD-LEDs zusammengeführt, damit nur ein Kabel durch den Rumpf laufen muss.



Zum Schluss noch die zweite Platine mit den Vorwiderständen, Stromversorgung usw. verlöten. Danach noch sicherheitshalber die freien Lötstellen mit Plasti-Dip isolieren und fertisch ist das Innenleben.



Hier noch ein Testvideo vom Cylonen Auge: https://youtu.be/gO-vhf8uWxI


Lückenfüller
Leider sind auf der Innenseite der beiden Flügelbögen riesige Spalten und Passungenauigkeiten. Diese müssen nun mit gezogenen Gussästen und Flüssigspachtel bzw. Spachtelmasse verschlossen werden.





Mit der drögen Spachtelei/Schleiferei verbringe ich dann die Zeit bis zum nächsten Update.  :rolleyes:
Liebe Grüße
Walter

PS ... die YouTube Videos brauchen derzeit seeehr lange zur Verarbeitung. Das liegt an YouTube ... sorry falls die Videos noch nicht aufgerufen werden können.
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

Universalniet

Walter,

ich hatte ja vor so etwas ähnliches als Grundlagen Thread zu verfassen.
Das kann ich mir schenken....

Toller Bericht.

Flugwuzzi

Marc ... es kann NIE genug Grundlagen geben ... keine Ausrede und her damit  :D :D

lg
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

bughunter

Ah, schöner Fortschritt und danke für die jeweiligen Testvideos! Das "Auge" ist ja wohl das Highlight :P

Ein Tipp noch zu den Messingrohren: die brauchst Du nicht zu sägen, rolle einfach mit einem Cutter drüber auf der Schneidematte, dann lassen sie sich sauber brechen! Probiere das mal aus, geht gut.

Viele Grüße,
Bughunter

Wikipedia sagt: "Ein Modell ist ein vereinfachtes Abbild der Wirklichkeit."
Deshalb baue ich lieber verkleinerte Originale.

Puchi

Super gemacht! Die Beleuchtungseffekte sehen echt gut aus! :klatsch:

Danke auch für die Tipps bezüglich der Kombination LED/LWL. Noch eine Frage zu den LWL's: ich hab' mir mal ein paar LWL zugelegt und den Tipp bekommen, dass man die Schnittstellen nach einem etwaigen Ablängen der LWL's aufpolieren soll, da sonst ev. die Lichtstärke leidet. Hast Du das was in dieser Richtung gemacht, oder funktioniert das auch so?


Liebe Grüße,

Karl

Flugwuzzi

Frank ... danke für die Info mit dem Cutter-rollen ... das werde ich mal probieren.

Karl ... normalerweise schneide ich die LWLs einfach möglichst glatt ab (mit einem guten, scharfen Knipex-Cutter). Sollte die Schnittstelle nicht gut gelungen sein, kann man diese mit Schleifen und Polieren auf Vordermann bringen. Eine schlechte Schnittstelle beeiträchtigt die Lichtausbeute schon ein wenig.

An manchen Stellen macht auch ein sogenanntes "Mushrooming" Sinn. Mann geht mit einer Hitzequelle an die Schnittstelle und lässt diese wie ein Schwammerl anschmelzen. Dadurch streut das Licht nicht nur geradeaus sondern der Leuchtwinkel erweitert sich durch den Pilzkopf  ... das funktioniert aber nur wenn man vorher eine halbe Stunde Mario gezockt und ausreichend Pilze gesammelt hat ;)

lg
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)

Flugwuzzi

#49
Leute, es geht in die Zielgerade.

Nach ausgiebiegem Füllen, Spachteln und Schleifen sind alle Spalten geschlossen.



Jetzt wird der Haltestab eingeharzt und eine Leuchtprobe gemacht. Alles leuchtet korrekt .... ein Stein fällt vom Herzen  :V:
Aber da es einige Lichtlecks gibt wird in feinen Spalten und an Übergängen mit Mr. Surfacher 500 versiegelt. Überschüssiges Mr. Surfacer kann man gut mit dem Mr.
Color Thinner und einem Wattestäbchen wegwischen und man muss nicht mehr nachschleifen.



Die LWL der Laserkanonen wurden etwas länger gelassen ... diese werden nach der Lackierung auf die passende Länge zurückgeknipst. So erspart man sich hier eine Maskierung. Das Klarsichtteil des Cylonen Auges wurde mit Tamiya Smoke noch zusätzlich etwas abgedunkelt. Die Triebwerke erhielten noch zusätzliche Farbschichten für Lichtblocking.



Jetzt erhält der Cylon Raider seine Grundierung. Ich verwende dafür STYNYLREZ schwarz ... das ergibt eine seidenmatte bis matte Lackierung. Ich möchte die Metallicfarben diesmal eher gedämpft haben und nicht grell glänzend. Wem der STYNYLREZ Primer zu dickflüssig ist (ich muss immer mit der 0,4er Evolution Düse und hohem Druck sprühen) kann den Primer auch mit Isopropylalkohol verdünnen. Funzt prima.



Nun folgen eine Metallic Grundfarbe (Aluminium) und danach das Abkleben und einzelne Lackieren von diversen Panels. Daführ schickt man wieder massig Abklebeband in die Schlacht ;-) Eine zusätzliche Schutzschicht Klarlack spare ich mir an dieser Stelle ...





Die an den "Flügeln" angegossenen Embleme der Cylonen hatte ich zu Baubeginn abgeschliffen. Diese werden nun mit grüner Farbe und selbstgeschnittenen Klebemasken wieder aufgesprüht.
ACHTUNG ... einen gefährlichen Effekt konnte ich dabei feststellen ... die Klebefläche der ORAMASKFOLIE und die AK Xtreme Metal Farben vertragen sich nicht besonders gut. Ich habe die ORAMASK Folie beinahe nicht herunterbekommen, so fest war die Klebewirkung. Außerdem sind einige Klebereste auf der Metallicfarbe zurückgeblieben. Bei Tamiya Tape, rosa TESA Tape und Revell Tape gab es da keine Probleme. Vielleicht hätte ich doch lieber eine Klarlack Schutzschicht aufsprühen sollen  :rolleyes:





Jetzt folgt eine Verschmutzung des Cylon Raider. Mit selbstgemischter schwarzer und brauner Farbbrühen (Ölfarbe und White Spirit) werden Panellines abgedunkelt. Wobei der Begriff Panelline hier eine Untertreibung ist ... man kann fast Gräben dazu sagen  :D.  Danach folgen noch Schlieren mit Ölfarben und an einigen Stellen dezente Verschmutzungen mit Pastellpigmenten.
Nach dem Weahtering bin ich froh noch im Besitz meiner Sehkraft zu sein  :1: ... es blendet die Silberlackierung beim auftragen der Farbbrühe ziemlich stark. Ich habe nach einiger Zeit eine Sonnebrille  8) aufgesetzt weil meine Augen ständig zusammengekniffen waren (Kein Scherz!).






Zuguterletzt fehlt noch die Base.
Als Grundlage dient ein Bilderrahmen aus einem schwedischen Möbelhaus. Der Rahmen erhält statt dem Glas einen Deckel aus einer Polystyrol Platte und eine Grundierung mit Citadel Chaos Black Spray. Mit dem Silhouette Cutter hab ich mir das Cylonen Emblem als Maske geschnitten. Außerdem habe ich mir Schriftart von Battlestar Galactica als kostenlose TTF aus dem Web geholt und eine kleine Beschriftung als Sprühmaske ausgeschnitten. Das rosa Ding ist kein Spielzeug von Amorelie sondern eine Art Spachtel mit der man Klebefolien aufrubbeln kann ;-)



Danach habe ich mit AK671 Xtreme Metal sanft übernebelt ...



... und nach dem Abziehen der Masken sieht das ganze nicht so übel aus. Mal sehen ob ich diesmal auch wirklich alle Maskenteile verwendet habe. Sicherheitshalber habe ich diesmal die Buchstaben mit einer Transferfolie auf die Base übertragen.



Jetzt fehlt noch die Verkabelung in der Base. Hier kommen ein 9V Block, eine Buchse für ein Netzteil und eine Ein/Aus-Schalter dran und danach kann das Halterohr in die Base verklebt werden.



Voilá ... und damit ist der Cylon Raider auch schon fertig.
Danke dass Ihr mit von der Partie gewesen seid, auch wenn der Ausflug in die Arduino Welt vielleicht etwas dröge war. Ich hoffe es war für den einen oder anderen trotzdem etwas interessantes dabei. Mir hat es jedenfalls Spaß gemacht den kleinen bösen Cylonen zu bemalen und beleuchten.

Hier noch ein paar Fotos des fertigen Modells aus der Hüfte geschossen. Fotos und Video für den Galeriebeitrag folgen demnächst gibt es hier http://www.modellboard.net/index.php?topic=55369.0.







Liebe Modellbaugrüße
Walter
DAS GEHEIMNIS DES ERFOLGES IST ANZUFANGEN. (Mark Twain)