Hallo kettheik,
ich habe ein paar Probleme gefunden.
Die KNX_BAUDRATE sollte 19200 betragen.
Die void serialEvent() werte alles mögliche aus, aber nicht das was du machen willst.
So hier mal das "void serialEvent()" welches ich auch benütze:
Zum Programmieren des Arduino musst du natürlich den TP-UART wieder entfernen (RxD und TxD),
die Brücke am (ICSP1 Pin 5 mit ICSP1 Pin 6) muss ebenfalls entfernt werden und danach
den USB-Stecker ausstecken und wieder einstecken (Zwischen dem Ein- und Ausstecken ein bisschen Zeit vergehen lassen).
Deinen Code im "void loop ()" entsprechend anpassen, der kann so auch nicht funktionieren und achte darauf das du in
"void serialEvent()" nur das aller nötigste machst. Die Ansteuerungen der Ausgänge bitte in die "void loop ()" verlagern.
Wenn du selber Telegramme mit Lesebefehlen an den KNX verschicken möchtest, dann muss man die Libary entsprechend anpassen.
Mit freundlichen Grüßen
Mag Gyver
ich habe ein paar Probleme gefunden.
Die KNX_BAUDRATE sollte 19200 betragen.
Die void serialEvent() werte alles mögliche aus, aber nicht das was du machen willst.
So hier mal das "void serialEvent()" welches ich auch benütze:
Code:
void serialEvent() { KnxTpUartSerialEventType eType = knx.serialEvent(); if (eType == KNX_TELEGRAM) { KnxTelegram* telegram = knx.getReceivedTelegram(); // Telegramauswertung auf knx (immer notwendig fur empfangen) String target = String(0 + telegram->getTargetMainGroup()) + "/" + String(0 + telegram->getTargetMiddleGroup()) + "/" + String(0 + telegram->getTargetSubGroup()); // Auswertung der Gruppenadresse des empfangenen Telegrames und Zwischenspeicherung in Variable target // Die Zeilen in deinem Code bezüglich der Auswertung der Gruppenadressen gehen auch, // aber man muss eine Zahl in der Auswertung der Gruppenadresse eingeben, // von diesem Schema bin ich abgekommen, weil dies keine Mensch lesen/verstehen kann if (telegram->getCommand() == KNX_COMMAND_WRITE) { // Auswertung empfangenes KNX Telegrames mit Schreibbefehl (Flag) // *** if (target == "3/2/7") { // Auswertung empfangenes KNX Telegrames mit passender Gruppenadresse led_red_9_state = telegram->getBool(); // Übernahme des Inhaltes des KNX Telegrames in die Variable led_red_9_state } // *** // Der Abschnitt zwischen *** und *** wird pro benötigter Gruppenadresse notwendig } // oder für die Auswertung eines empfangene KNX Telegrames mit Lesebefehl (Flag) if (telegram->getCommand() == KNX_COMMAND_READ) { // Auswertung empfangenes KNX Telegrames mit Lesebefehl (Flag) // *** if (target == "3/2/7") { // Auswertung empfangenes KNX Telegrames mit passender Gruppenadresse knx.groupAnswerBool("3/2/7", led_red_9_state); // Senden des Inhaltes der Variable led_red_9_state auf das angegebene KNX Telegrames } // *** // Der Abschnitt zwischen *** und *** wird pro benötigter Gruppenadresse notwendig } } }
die Brücke am (ICSP1 Pin 5 mit ICSP1 Pin 6) muss ebenfalls entfernt werden und danach
den USB-Stecker ausstecken und wieder einstecken (Zwischen dem Ein- und Ausstecken ein bisschen Zeit vergehen lassen).
Deinen Code im "void loop ()" entsprechend anpassen, der kann so auch nicht funktionieren und achte darauf das du in
"void serialEvent()" nur das aller nötigste machst. Die Ansteuerungen der Ausgänge bitte in die "void loop ()" verlagern.
Wenn du selber Telegramme mit Lesebefehlen an den KNX verschicken möchtest, dann muss man die Libary entsprechend anpassen.
Mit freundlichen Grüßen
Mag Gyver
Kommentar