Beiträge von Der Hobbyelektroniker

    Hallo Gerdest,


    mit dem Anschluss an der LED scheint etwas nicht zu stimmen. Man sieht es nicht genau, da der weisse Draht alles etwas verdeckt. Aber es scheint so, wie wenn der Draht von Pin 8 direkt zum Vorwiderstand der Led gehen würde. Somit würde der Strom gar nicht durch die Led fliessen.


    Der Strom von 10 mA wäre vernünftig und sollte die Led zum Leuchten bringen.


    Gruss

    René

    Hallo Dino,


    ich glaube, jetzt ist alles klar. Du hast den neuen Effekt pride() an die richtige Stelle kopiert. Dieser muss tatsächlich am Ende der Datei stehen.

    Der Aufruf muss aber in loop() erfolgen.


    Code
    1. if (val == '7') { // NEUE DAZUFÜGT
    2. pride(); //
    3. FastLED.show();
    4. }

    muss also etwa in Zeile 120 hinzugefügt werden und nicht unten bei pride().


    Hier nochmals der ganze, jetzt hoffentlich funktionierende Code:


    So sollte es funktionieren.


    Gruss

    René

    Ganz unten vor dem letzten } bist du noch in der Funktion pacifica_deepen_colors(). Das macht eigentlich keinen Sinn.


    Wenn ich das richtig sehe, ruft Effekt 6 die Funktion pacifica_loop() auf und diese Funktion ruft wiederum pacifica_deepen_colors() auf.

    Die Effekte werden mit (if (val==...) aus loop() aufgerufen und springen dann eine Funktion an, die den Effekt ausführt. Wenn du einen eigenen vollständig neuen Effekt kreieren möchtest, müsstest du eine eigene Effektfunktion schreiben. Es wäre aber auch möglich, eine bestehende Effektfunktion mit anderen Parametern aufzurufen.


    Dann könntest du loop() ergänzen:


    Hallo Jens,


    ich musste das wieder aufgeben. Der Aufwand ist deutlich höher als mit dem PDF-Dokument. Ausserdem macht es keinen Sinn, nur die neuen Anleitungen über readthedocs zu veröffentlichen. Die Umwandlung der bestehenden Dokumente zu readthedocs wäre ebenfalls zu zeitaufwändig. Da PDF-Dateien auch von jedem System angezeigt werden können, bin ich dabei geblieben.


    Gruss

    René

    Hallo mark's,


    herzlich willkommen hier im Forum.

    Wie nische schon geschrieben hat, ist so ein Starterkit ein guter Einstieg. Trotzdem kann es vorkommen, dass mal ein Teil nicht enthalten ist. Mit zunehmender Erfahrung wird es dir aber gelingen, in solchen Fällen das fehlende Teil durch ein anderes zu ersetzen.


    Ich gebe mir zwar Mühe, im Kurs logisch aufeinanderfolgende Themen zu bringen. Trotzdem ist der Kurs nicht mit einem professionellen Lehrgang zu vergleichen. Es gibt kein längerfristiges Konzept, normalerweise habe ich nur vage Ideen, was ich in den nächsten Videos zeigen könnte. Beim Material greife ich normalerweise auf das zurück, was bei mir so herumliegt.


    Wenn du etwas nicht hast, frage einfach hier im Forum nach. Dann können wir dir Vorschläge machen, was du als Ersatz einsetzen könntest.


    Gruss

    René

    Hallo Jürgen,


    vielen Dank. Ich wünsche dir ebenfalls ein gutes neues Jahr.


    Im nächsten Video werde ich eine andere Bibliothek verwenden:

    https://github.com/Bodmer/TFT_eSPI


    Die ist für ESP8266 und ESP32 optimiert, verwendet aber in grossen Teilen die selben Befehle wie die Adafruit - Bibliothek. Da solltest du unbedingt einen Blick darauf werfen. Welche SPI - Anschlüsse beim ESP32 verwendet werden sollten, muss ich aber erst noch abklären.


    Gruss

    René

    Im nächsten Video werde ich eine neue Bibliothek verwenden. Diese wurde vor einigen Jahren auf der Grundlage der Adafruit - Bibliothek entwickelt. Sie ist aber stark für ESP8266 und ESP32 optimiert. Ich werde auch eine neue Entwicklungsumgebung zeigen. Die Beispiele eignen sich aber mit kleinen Änderungen für die Arduino IDE.

    Hallo Chrisbie,


    die Idee mit extern ist gut. Mit extern sagst du dem Compiler, dass du die Variable deklarieren möchtest. Dabei wird sie nicht angelegt, es wird nur geagt, dass es sie gibt. Deshalb darf ihr auch noch kein Wert zugewiesen werden.


    in Globals.h steht also


    Code
    1. extern int TestInt; // Hier darf KEIN Wert zugewiesen werden


    Die Variable existiert jetzt noch nicht. Du musst also zusätzlich eine Definition der Variablen durchführen. Da darf auch ein Wert zugewiesen werden.

    Das kann im Hauptprogramm gemacht werden.


    C
    1. #include "Globals.h"
    2. #include "Tools.h"
    3. #include "Menue.h"
    4. #include <arduino.h>
    5. int TestInt = 20; // Hier darf ein Wert zugewiesen werden

    Global.h kann jetzt gefahrlos in jedes Modul importiert werden, das TestInt kennen muss. Da wird zwar nur die externe Referenz importiert, diese verweist aber auf die tatsächliche Variable.

    Bei Konstanten ist es einfacher, da genügt es, wenn du in Globals.h


    Code
    1. const int TestInt = 20;


    angibst. Das Schlüsselwort extern und die zusätzliche Deklaration sind dann nicht notwendig.


    Bei GLOBALS_H hast du noch etwas vergessen. Zuerst fragst du ab, ob GLOBALS_H nicht definiert ist. Wenn das so ist, definierst du GLOBALS_H und bindest den Code bis zu #endif ein. Bei allen späteren Importen ist GLOBALS_H dann definiert und es wird nichts mehr eingebunden.


    Code
    1. //#ifndef GLOBALS_H
    2. //#define GLOBALS_H
    3. #define Serial_speed 115200
    4. #define WaiteTime 120
    5. const int TestInt = 20;
    6. //#endif

    Gruss

    René

    Hallo Chrisbie,


    C++ bietet in diesem Bereich noch einige Fallstricke.

    Wie Kai schon geschrieben hat, kannst du es mit GLOBALS_H versuchen, alternativ wäre auch #pragma once möglich.

    Falls das nicht hilft, dann müsstest du den ganzen Quelltext posten. Leider steckt der Teufel manchmal im Detail.


    Die Geschichte mit den Modulen ist sowieso etwas unglücklich. Ich versuchte damit, das Programm in überschaubare Einheiten aufzuteilen, ohne die Zuschauer mit Klassen und objektorientierter Programmierung zu erschrecken. Auf die Dauer wird sich das dann aber trotzdem nicht vermeiden lassen.


    Gruss

    René

    Hallo Marcus,


    nebst der kontinuierlichen Anzeigen kennt das Oszilloskop auch noch den 'Single Shot' - Modus. Da sieht man gar nichts, bis der Trigger ausgelöst wird. Dann wird ein Stück aufgezeichnet, das nachher untersucht werden kann. Die Herausforderung ist, einen zuverlässigen Triggerpunkt zu finden. Dazu musst du dich detailliert mit den verschiedenen Triggermodi deines Oszilloskops befassen.


    Gruss

    René