Ankündigung

Einklappen
Keine Ankündigung bisher.

DIY Statusdisplay

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • eghetto
    antwortet
    Servus!

    Habe meine erste Platine (Version 1.3) zusammengelötet.

    Bei der USB-Verbindung funktioniert alles wie gewünscht: Die Seiten wechseln (testweise) alle 2 Sekunden auf dem Display.
    Zusätzlich lasse ich die RX-LED alle zwei Sekunden blinken, um zu sehen, ob der Sketch läuft.

    Problem:

    Stecke ich die Platine auf den Busankoppler, läuft der Sketch scheinbar nicht mehr: Die Seiten auf dem Display wechseln nicht mehr - erste Seite wird angezeigt. Die RX-LED blinkt auch nicht mehr. Lediglich die LED in der nähe des USB-Ports leuchtet rot.

    PHP-Code:
    #include <KnxTpUart.h> // Einbindung der TpUart Library
    #include <SoftwareSerial.h> // Einbindung der Software Serial Library, der Pro Micro hat 2 serielle Hardwareschnittstellen, eine wird für den Busankoppler benötigt, die Andere für die Programmierung über USB, das Display wird somit softwareseitig eingebunden


    SoftwareSerial mySerial(9,8); //RX,TX // Festlegung von Namen und Pins für die serielle Verbindung des Displays
    KnxTpUart knx(&Serial1"1.1.66"); // Festlegung der seriellen Schnittstelle mit dem Arduino mit dem Busankoppler kommuniziert, außerdem Festlegung der Physikalischen Adresse des Arduinos

    void setup() {
    Serial.begin(19200);
    // while the serial stream is not open, do nothing:
    while (!Serial)
    {
    // do nothing
    } ;
    Serial.println("Entering setup...");

    mySerial.begin(9600); // Start der seriellen Verbindung (Display) mit 9600 Baud
    mySerial.print("dims=10"); // Festlegen der Displayhelligkeit auf 40%
    mySerial.print("\xFF\xFF\xFF"); // Ausführung der vorherigen "mySerial" Befehle (wird am Ende eines Befehls immer benötigt)
    Serial1.begin(19200SERIAL_8E1); // Start der seriellen Verbindung (Busankoppler) mit 19200 Baud
    knx.uartReset(); // Uart Reset

    knx.addListenGroupAddress("0/4/1"); // Gruppenadressen auf die der Arduino "lauschen" soll
    knx.addListenGroupAddress("0/4/20");
    }

    void loop() {
    Serial.println("Entering loop...");

    RXLED1;

    mySerial.print("page 1");
    mySerial.print("\xFF\xFF\xFF");
    delay(2000);

    RXLED0;

    mySerial.print("page 2");
    mySerial.print("\xFF\xFF\xFF");
    delay(2000);
    }


    void serialEvent1() {
    KnxTpUartSerialEventType eType knx.serialEvent();

    if (
    eType == KNX_TELEGRAM) {
    KnxTelegramtelegram knx.getReceivedTelegram(); // Telegrammauswertung auf KNX (bei Empfang immer notwendig)


    String target // Zusammensetzen der Gruppenadresse
    String(telegram->getTargetMainGroup()) + "/" +
    String(telegram->getTargetMiddleGroup()) + "/" +
    String(telegram->getTargetSubGroup());


    if (
    telegram->getCommand() == KNX_COMMAND_WRITE) { // Auswertung des empfangenen KNX-Telegrammes

    if (target == "0/4/1") { // Wenn die Gruppenadresse 1/1/0 empfangen wird...
    int received_1_1_0 telegram->getBool(); // ...Speichere den Wert (Ein oder Aus?)...
    if (received_1_1_0) { // ...Wenn der Befehl "Ein" lautet...
    mySerial.print("sleep=0"); // ...Wecke das Display auf (0=Display Ein, 1=Display Aus...
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    mySerial.print("page 1"); // ...Rufe Seite 1 auf
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    }
    else { 
    // ...Ansonsten (Befehl kann in diesem Fall nur "Aus" sein, da es bei einem bit nur 2 Zustände gibt)...
    mySerial.print("sleep=1"); // ...Schalte das Display aus
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    }
    }

    else if (
    target == "0/4/20") { // Wenn die Gruppenadresse 1/1/1 empfangen wird...
    int received_1_1_1 telegram->getBool(); // ...Speichere den Wert (Ein oder Aus?)...
    if (received_1_1_1) { // ...Wenn der Befehl "Ein" lautet...
    mySerial.print("sleep=0"); // ...Wecke das Display auf...
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    mySerial.print("page 2"); // ...Rufe Seite 2 auf
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    }
    else { 
    // ...Ansonsten...
    mySerial.print("sleep=1"); // ...Schalte das Display aus
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    }
    }

    }}} 
    Eine Idee wo ich ansetzen kann?

    Einen Kommentar schreiben:


  • MasterOfPuppets
    antwortet
    20 Uhr ist bestellschluss .

    JanLucke besteht noch Interesse?

    LG Pierre

    Einen Kommentar schreiben:


  • andre12
    antwortet
    Hat jemand schon am Arduino code weitergearbeitet ??

    Bye Andre

    Einen Kommentar schreiben:


  • MasterOfPuppets
    antwortet
    Ich wollte nur nochmal daran erinnern, dass am 21.03 die vorerst letzte Sammelbestellung aufgegeben wird, wer also noch dabei sein möchte, soll sich nochmal mit Anzahl an Platinen, Anschrift und Zahlungsmethode an mich wenden.

    Ich werde ein paar mehr bestellen und als Ersatz auf Lager legen, wenn die jedoch vergriffen sind, ist erstmal Schluss.

    LG Pierre

    Einen Kommentar schreiben:


  • JuPhilZone
    antwortet
    Zitat von uncelsam Beitrag anzeigen
    Hast du direkt oder über einen Hub angeschlossen?
    Ich hab bei einen Entwicklungskit auch das Problem, dass dieses über einen Hub nicht erkannt wird.
    ... nee, direkt angeschlossen, allerdings bin ich blöd, habe natürlich die Rx/Tx - Pin im Sketch nicht auf 9/8 angepasst, jetzt geht es.

    Einen Kommentar schreiben:


  • andre12
    antwortet
    Hallo,

    Ich habe mal Tag 100% Display Helligkeit und Nacht 50% Display Helligkeit angelegt in dem Sketch , würde mich über Beispiele freuen damit ich ein Touchevent auf den Bus bekomme

    #include <SoftwareSerial.h>

    #include <KnxTelegram.h>
    #include <KnxTpUart.h>

    #include <KnxTpUart.h> // Einbindung der TpUart Library
    #include <SoftwareSerial.h> // Einbindung der Software Serial Library, der Pro Micro hat 2 serielle Hardwareschnittstellen, eine wird für den Busankoppler benötigt, die Andere für die Programmierung über USB, das Display wird somit softwareseitig eingebunden


    SoftwareSerial mySerial(3,2); //RX,TX // Festlegung von Namen und Pins für die serielle Verbindung des Displays
    KnxTpUart knx(&Serial1, "1.1.40"); // Festlegung der seriellen Schnittstelle mit dem Arduino mit dem Busankoppler kommuniziert, außerdem Festlegung der Physikalischen Adresse des Arduinos



    void setup() {
    mySerial.begin(9600); // Start der seriellen Verbindung (Display) mit 9600 Baud
    mySerial.print("\xFF\xFF\xFF"); // Ausführung der vorherigen "mySerial" Befehle (wird am Ende eines Befehls immer benötigt)
    Serial1.begin(19200, SERIAL_8E1); // Start der seriellen Verbindung (Busankoppler) mit 19200 Baud
    knx.uartReset(); // Uart Reset

    knx.addListenGroupAddress("6/0/0"); // Gruppenadressen auf die der Arduino "lauschen" soll
    knx.addListenGroupAddress("6/0/1");
    knx.addListenGroupAddress("6/0/2");
    knx.addListenGroupAddress("6/0/3");
    knx.addListenGroupAddress("6/0/4");
    knx.addListenGroupAddress("6/0/5");
    knx.addListenGroupAddress("6/0/6");
    }



    void loop() { // Der Loop bleibt leer

    }





    void serialEvent1() {
    KnxTpUartSerialEventType eType = knx.serialEvent();

    if (eType == KNX_TELEGRAM) {
    KnxTelegram* telegram = knx.getReceivedTelegram(); // Telegrammauswertung auf KNX (bei Empfang immer notwendig)


    String target = // Zusammensetzen der Gruppenadresse
    String(0 + telegram->getTargetMainGroup()) + "/" +
    String(0 + telegram->getTargetMiddleGroup()) + "/" +
    String(0 + telegram->getTargetSubGroup());


    if (telegram->getCommand() == KNX_COMMAND_WRITE) { // Auswertung des empfangenen KNX-Telegrammes

    if (target == "6/0/0") { // Wenn die Gruppenadresse 1/1/0 empfangen wird...
    int received_6_0_0 = telegram->getBool(); // ...Speichere den Wert (Ein oder Aus?)...
    if (received_6_0_0) { // ...Wenn der Befehl "Ein" lautet...
    mySerial.print("sleep=0"); // ...Wecke das Display auf (0=Display Ein, 1=Display Aus...
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    mySerial.print("page 0"); // ...Rufe Seite 1 auf
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    }
    else { // ...Ansonsten (Befehl kann in diesem Fall nur "Aus" sein, da es bei einem bit nur 2 Zustände gibt)...
    mySerial.print("sleep=1"); // ...Schalte das Display aus
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    }
    }

    else if (target == "6/0/1") { // Wenn die Gruppenadresse 1/1/1 empfangen wird...
    int received_6_0_1 = telegram->getBool(); // ...Speichere den Wert (Ein oder Aus?)...
    if (received_6_0_1) { // ...Wenn der Befehl "Ein" lautet...
    mySerial.print("sleep=0"); // ...Wecke das Display auf...
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    mySerial.print("page 1"); // ...Rufe Seite 2 auf
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    }
    else { // ...Ansonsten...
    mySerial.print("sleep=1"); // ...Schalte das Display aus
    mySerial.print("\xFF\xFF\xFF"); // (Ausführung des vorherigen "mySerial" Befehl)
    }
    }

    else if (target == "6/0/2") {
    int received_6_0_2 = telegram->getBool();
    if (received_6_0_2) {
    mySerial.print("sleep=0");
    mySerial.print("\xFF\xFF\xFF");
    mySerial.print("page 2");
    mySerial.print("\xFF\xFF\xFF");
    }
    else {
    mySerial.print("sleep=1");
    mySerial.print("\xFF\xFF\xFF");
    }
    }

    else if (target == "6/0/3") {
    int received_6_0_3 = telegram->getBool();
    if (received_6_0_3) {
    mySerial.print("sleep=0");
    mySerial.print("\xFF\xFF\xFF");
    mySerial.print("page 3");
    mySerial.print("\xFF\xFF\xFF");
    }
    else {
    mySerial.print("sleep=1");
    mySerial.print("\xFF\xFF\xFF");
    }
    }

    else if (target == "6/0/4") {
    int received_6_0_4 = telegram->getBool();
    if (received_6_0_4) {
    mySerial.print("sleep=0");
    mySerial.print("\xFF\xFF\xFF");
    mySerial.print("page 4");
    mySerial.print("\xFF\xFF\xFF");
    }
    else {
    mySerial.print("sleep=1");
    mySerial.print("\xFF\xFF\xFF");
    }
    }

    else if (target == "6/0/5") {
    int received_6_0_5 = telegram->getBool();
    if (received_6_0_5) {
    mySerial.print("sleep=0");
    mySerial.print("\xFF\xFF\xFF");
    mySerial.print("page 5");
    mySerial.print("\xFF\xFF\xFF");
    }
    else {
    mySerial.print("sleep=1");
    mySerial.print("\xFF\xFF\xFF");
    }
    }

    else if (target == "6/0/6") {
    int received_6_0_6 = telegram->getBool();
    if (received_6_0_6) {
    mySerial.print("dim=100");
    mySerial.print("\xFF\xFF\xFF");
    }
    else {
    mySerial.print("dim=30");
    mySerial.print("\xFF\xFF\xFF");
    }
    }



    }}}

    Zuletzt geändert von andre12; 15.03.2020, 20:42. Grund: hatte einen Fehler im Code jetzt geht er

    Einen Kommentar schreiben:


  • DirtyHarry
    antwortet
    Zitat von andre12 Beitrag anzeigen
    ...kann dies nicht direkt verwendet werden im Sketch ohne die Bibliothek von Nextion ??
    Gemäß dem Motto "Warum einfach, wenn es auch umständlich geht"?



    Nextion Display - Teil 1 - Grundlagen und Workflow
    Nextion Display - Teil 2 - Ein eigenes Design erstellen und testen
    Nextion Display - Teil 3 - Verschiedene Seiten und Button-Events
    Nextion Display - Teil 4 - Integration in FHEM und Node-Red
    Nextion Display - Teil 5 - Direkt am Raspberry Pi nutzen

    Im Teil 3 wird das Thema Buttons erklärt.

    Die wesentlichen Zeilen im Skript sind diese (wenn ich keine übersehen habe):
    Code:
    #include <Nextion.h>
    NexButton bOnoff = NexButton(0, 7, "bOnoff"); // Button On Off
    NexTouch *nex_listen_list[] = { &bOnoff, NULL // String terminated };
    
    void setup() {
      Serial.begin(9600);
      bOnoff.attachPush(bOnoffPushCallback); // Button press
    }
    
    void bOnoffPushCallback(void *ptr) {
        // Funktion bei drücken der Taste
    }

    Einen Kommentar schreiben:


  • MasterOfPuppets
    antwortet
    Schau mal ob du hier etwas findest, sehr Umfangreiche Seite über Displays .

    https://www.boecker-systemelektronik...&ClassicView=1

    Einen Kommentar schreiben:


  • andre12
    antwortet
    Hallo ,

    hier mal ne kleine Einführung wie man Befehle an einen Arduino ausgeben kann :
    http://acoptex.com/project/7069/basi....SviH5Crx.dpbs

    leider habe ich keine Erfahrungen mit der Programmierung von Arduino aber das Display gibt ja für jeden Schalter im Display einen Code aus als Beispiel 65 00 02 01 FF FF FF kann dies nicht direkt verwendet werden im Sketch ohne die Bibliothek von Nextion ??

    Bye Andre

    Einen Kommentar schreiben:


  • uncelsam
    antwortet
    Hast du direkt oder über einen Hub angeschlossen?
    Ich hab bei einen Entwicklungskit auch das Problem, dass dieses über einen Hub nicht erkannt wird.

    Einen Kommentar schreiben:


  • JuPhilZone
    antwortet
    Zitat von basaltnischl Beitrag anzeigen

    Ich sehe du hast eine Taste im Display. Wie funktioniert das ? Und die Rückmeldung auf den Bus?
    ... na ja, ich habe die Seiten im Display konfiguriert/geladen und mal mit einem "Button" gespielt, habe aber noch keine Integration im Sketch lauffähig bekommen, ich kann lediglich zwischen den Seiten springen, aber das ist ja nicht das Ziel. Dem "Button" kann ich einen Wert mitgeben, der dann auf dem Arduino ausgewertet und weitergeleitet wird, so die Theorie ;o)

    Vielmehr habe ich noch ein Problem, dass ich nicht weis, ob der angepasste Sketch überhaupt auf den Arduino geladen wird. Ich musste erst ein funktionsfähiges USB-Kabel suchen, nicht jedes hat funktioniert, bis ich dann endlich den seriellen Port hatte. Es sieht zwar so aus, als ob er geladen wird, aber auf dem BUS und am Display tut sich erst einmal nichts, darum muss ich hier noch was "basteln".

    Auf dem Arduino sind neben der "hellen" Power-LED noch zwei LED's, blinken diese bei empfangen eines Telegramms? beim programmieren jedenfalls blinken diese beiden...

    Einen Kommentar schreiben:


  • basaltnischl
    antwortet
    Zitat von JuPhilZone Beitrag anzeigen
    hier mal meine erste Platine mit einem 2,4" Display, das Teil zieht ca. 103mA ohne Anpassung...
    Ich sehe du hast eine Taste im Display. Wie funktioniert das ? Und die Rückmeldung auf den Bus?

    Einen Kommentar schreiben:


  • MedienFreak
    antwortet
    Brauche zwar erstmal noch die Zubehörteile, aber die Platinen selbst sehen schon mal gut aus.
    Die machen qualitativ einen guten Eindruck.
    Vor allem: abgerundete Ecken: super

    Einen Kommentar schreiben:


  • MasterOfPuppets
    antwortet
    Zitat von JuPhilZone Beitrag anzeigen
    hier mal meine erste Platine mit einem 2,4" Display, das Teil zieht ca. 103mA ohne Anpassung...
    Japp das musste ich auch feststellen, stell mal den dimmer auf 50%, dann den Schalter auf reine Bus Versorgung und soweit die Helligkeit erhöhen, bis der Busankoppler abschaltet, dann 5% -10% weniger und du hast dein Maximalwert.

    Einen Kommentar schreiben:


  • barontigger
    antwortet
    Postet doch mal lieber das Ergebnis (v. a. auch die, die die erste Version schon haben) anstatt zu berichten, dass die Post angekommen ist. 😋

    Einen Kommentar schreiben:

Lädt...
X