Ankündigung

Einklappen
Keine Ankündigung bisher.

DIY Statusdisplay

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

    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...

    Kommentar


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

      Kommentar


        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

        Kommentar


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

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

          Mein Bau: Sanierung

          DIY-Bastelprojekte: KNX-Statusdisplay/|\KNX-Tankmonitor(Füllstandsamessung)

          Kommentar


            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
            }
            Gruß Andreas

            -----------------------------------------------------------
            Immer wieder benötigt: KNX-Grundlagen PDF Englisch, PDF Deutsch oder
            Deutsche Version im KNX-Support.

            Kommentar


              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

              Kommentar


                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.

                Kommentar


                  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
                  Gruß Pierre

                  Mein Bau: Sanierung

                  DIY-Bastelprojekte: KNX-Statusdisplay/|\KNX-Tankmonitor(Füllstandsamessung)

                  Kommentar


                    Hat jemand schon am Arduino code weitergearbeitet ??

                    Bye Andre

                    Kommentar


                      20 Uhr ist bestellschluss .

                      JanLucke besteht noch Interesse?

                      LG Pierre
                      Gruß Pierre

                      Mein Bau: Sanierung

                      DIY-Bastelprojekte: KNX-Statusdisplay/|\KNX-Tankmonitor(Füllstandsamessung)

                      Kommentar


                        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?

                        Kommentar


                          Hey grüß dich, wie sieht denn deine Spannungsversorgung der Platine aus, per Busspannung oder Extern versorgt?

                          Gruß Pierre

                          Mein Bau: Sanierung

                          DIY-Bastelprojekte: KNX-Statusdisplay/|\KNX-Tankmonitor(Füllstandsamessung)

                          Kommentar


                            Beides ausprobiert. Extern mit mit 12 VDC. Display auf 10% gedimmt.

                            Kommentar


                              Auch mal mit dem originalcode auf der ersten Seite probiert? Wüsste jetzt nicht woran es liegen könnte? Hast du eventuell einen anderen Pro Micro benutzt?
                              Gruß Pierre

                              Mein Bau: Sanierung

                              DIY-Bastelprojekte: KNX-Statusdisplay/|\KNX-Tankmonitor(Füllstandsamessung)

                              Kommentar


                                Danke für die Rückmeldung! Code läuft ja grundsätzlich über USB-Verbindung. Pro Micro ist dieser hier:

                                https://www.amazon.de/gp/product/B01D0OI90U/

                                Der Himalaya von Eckstein ist grad nicht verfügbar. Sehen auch ziemlich ähnlich aus... Gibt es evtl. eine andere Quelle für bestätigt funktionierende Arduino-Module? Danke!

                                Kommentar

                                Lädt...
                                X