ich sehe schon mal ein Paar (Verständis)Probleme:
1. Leonardo hat ATMEGA32U4 Prozessor, somit wird für DEBUG Serial (USB) verwendet und für KNX: Serial1 (D0, D1). Somit wird das Teil mit SoftSerial gar nicht gebraucht
2. dein Leonardo hat im EEPROM sehr viel Müll (wohl von den letzten versuchen). Also bitte zuerst EEPROM löschen, z.B. Damit:
Warte bis LED aufleuchtet. Danach kannst wieder dein Sketch einspielen.
3. Ich habe dein Sketch extra für dein Leonardo Board angepasst:
4. in dem oberen Post, wo du deine XML Datei gepostet hast, steht:
D.h. dieses ComObject wird nur SENDEN aber nichts empfangen.
Da du aber empfangen möchtest, muss da
stehen.
Mir fehlt noch deine "kdevice_LEDTest.h" Datei, die du eigentlich mit dem CodeGenartor aus deiner XML Datei erstellen sollstest und somit im Sketch
nicht mehr brauchst.
Wenn du die "kdevice_LEDTest.h" Datei selber erstellen willst ist natürlich kein Problem, musst aber wisses was du da eintragen sollst. Da wird wohl das ComObj wohl wieder nur als Ausgang kopnfiguriert...
Wenn ich die XML von oben durch den Code Creator durchjage, kommt so eine Datei raus (inkl. Korrektur):
1. Leonardo hat ATMEGA32U4 Prozessor, somit wird für DEBUG Serial (USB) verwendet und für KNX: Serial1 (D0, D1). Somit wird das Teil mit SoftSerial gar nicht gebraucht
2. dein Leonardo hat im EEPROM sehr viel Müll (wohl von den letzten versuchen). Also bitte zuerst EEPROM löschen, z.B. Damit:
Code:
#include <EEPROM.h> int LEDpin = 13; void setup() { for (int i = 0 ; i < EEPROM.length() ; i++) { if (EEPROM.read(i) != 0xFF){ EEPROM.write(i, 0xFF); } } pinMode(LEDpin, OUTPUT); digitalWrite(LEDpin, HIGH); } void loop() { }
3. Ich habe dein Sketch extra für dein Leonardo Board angepasst:
Code:
//Knxdevice Header hinzufügen #include <KonnektingDevice.h> //Header eigenes Gerätes hinzufügen #include "kdevice_LEDTest.h" //######################### //## DEBUG KONFIGURATION ## //######################### #define KDEBUG //kommentieren, um Debugmodus zu deaktivieren #ifdef KDEBUG #include <DebugUtil.h> #define DEBUGSERIAL Serial //USB Port fuer Seriellekonsole #endif //###################ENDE DEBUG KONF###################################### #define KNX_SERIAL Serial1 // Serial Port fuer KNX an D0/D1-Pins // Einstellung der ProgLED und ProgTaster #define PROG_LED_PIN LED_BUILTIN #define PROG_BUTTON_PIN 3 //Einstellung der IO´s #define OUT1 5 //Rückruffunktion, um die KO´s Updates to behandeln void knxEvents(byte index){ Debug.println(F("ComObj Index : %d"), index); switch(index){ case 0: //KO "schalten" if (Knx.read(0)){ digitalWrite(OUT1, HIGH); Debug.println(F("Toggle Out1: on")); } else { digitalWrite(OUT1, LOW); } break; default: break; } } void setup() { // debug related stuff #ifdef KDEBUG // Start debug serial with 115200 bauds DEBUGSERIAL.begin(115200); while (!DEBUGSERIAL) //Warte bis SerialMonitro aufgemacht wird // make debug serial port known to debug class // Means: KONNEKTING will sue the same serial port for console debugging Debug.setPrintStream(&DEBUGSERIAL); #endif Debug.print(F("KONNEKTING DemoSketch\n")); pinMode (OUT1, OUTPUT); //Initialisierung des Arduinos Konnekting.init(KNX_SERIAL,PROG_BUTTON_PIN,PROG_LED_PIN,MANUFACTURER_ID,DEVICE_ID,REVISION); } void loop(){ //Behandeln von KNX-Telegramme Knx.task(); if(Konnekting.isReadyForApplication()){ //Knx.write(0,255); } }
Code:
[COLOR=#0000FF]<Flags>52</Flags>[/COLOR]
Da du aber empfangen möchtest, muss da
Code:
[COLOR=#0000FF]<Flags>42</Flags>[/COLOR]
Mir fehlt noch deine "kdevice_LEDTest.h" Datei, die du eigentlich mit dem CodeGenartor aus deiner XML Datei erstellen sollstest und somit im Sketch
Code:
#define MANUFACTURER_ID 262 #define DEVICE_ID 1 #define REVISION 0
Wenn du die "kdevice_LEDTest.h" Datei selber erstellen willst ist natürlich kein Problem, musst aber wisses was du da eintragen sollst. Da wird wohl das ComObj wohl wieder nur als Ausgang kopnfiguriert...
Wenn ich die XML von oben durch den Code Creator durchjage, kommt so eine Datei raus (inkl. Korrektur):
Code:
#define MANUFACTURER_ID 262 #define DEVICE_ID 1 #define REVISION 0 #define COMOBJ_switch 0 KnxComObject KnxDevice::_comObjectsList[] = { /* Index 0 - switch */ KnxComObject(KNX_DPT_1_001, 0x2a) }; const byte KnxDevice::_numberOfComObjects = sizeof (_comObjectsList) / sizeof (KnxComObject); // do not change this code byte KonnektingDevice::_paramSizeList[] = { }; const byte KonnektingDevice::_numberOfParams = sizeof (_paramSizeList); // do not change this code
Kommentar