Hallo WagoKlemme,
eigentlich betrifft diese Änderungen nur die Beispielsketche.
Mit freundlichen Grüßen
Mag Gyver
eigentlich betrifft diese Änderungen nur die Beispielsketche.
Mit freundlichen Grüßen
Mag Gyver
#ifdef __AVR_ATmega32U4__ //Universal Flush Interface, ProMicro, Leonardo #define DEBUGSERIAL Serial //USB #define KNX_SERIAL Serial1 //D0,D1 //#define LED_PIN 13 //UFI STD, Aruino Leonardo //#define LED_PIN 8 //UFI PWM #define LED_PIN LED_BUILTIN_RX //ProMicro (Attention: LOW = ON, HIGH = OFF) #elif __SAMD21G18A__ //Multi Interface, Arduino Zero #define DEBUGSERIAL SerialUSB //USB //#define KNX_SERIAL Serial //Multi Interface #define KNX_SERIAL Serial1 //D0,D1 //#define LED_PIN A5 //Multi Interface #define LED_PIN LED_BUILTIN //Zero #endif long lastMicros = 0; bool dataReceived = false; void setup() { KNX_SERIAL.begin(19200,SERIAL_8E1); DEBUGSERIAL.begin(115200); pinMode(LED_PIN,OUTPUT); } void loop() { if(KNX_SERIAL.available()>0){ lastMicros = (long)micros(); byte temp = KNX_SERIAL.read(); if(temp<16) DEBUGSERIAL.print("0"); //print 0 for 2 digit HEX DEBUGSERIAL.print(temp,HEX); DEBUGSERIAL.print(" "); if(!dataReceived){ dataReceived = true; digitalWrite(LED_PIN,HIGH); //LED is ON is data is received } } if((long)micros() - lastMicros >= 2000 && dataReceived){ //2000+ µs => end of telegram => new line DEBUGSERIAL.println(""); dataReceived = false; digitalWrite(LED_PIN,LOW); //turn LED off } }
BC 11 CA 09 64 E1 00 81 95 BC 11 03 0A 64 E1 00 81 5F BC 11 CA 09 64 E1 00 80 94 BC 11 03 0A 64 E1 00 80 5E
#ifdef __AVR_ATmega32U4__ //Universal Flush Interface, ProMicro, Leonardo #define DEBUGSERIAL Serial //USB #define KNX_SERIAL Serial1 //D0,D1 //#define LED_PIN 13 //UFI STD, Aruino Leonardo //#define LED_PIN 8 //UFI PWM #define LED_PIN LED_BUILTIN_RX //ProMicro (Attention: LOW = ON, HIGH = OFF) #elif __SAMD21G18A__ //Multi Interface, Arduino Zero #define DEBUGSERIAL SerialUSB //USB //#define KNX_SERIAL Serial //Multi Interface #define KNX_SERIAL Serial1 //D0,D1 //#define LED_PIN A5 //Multi Interface #define LED_PIN LED_BUILTIN //Zero #endif #define KNX_TELEGRAM_MAX_SIZE 23 long lastMicros = 0; bool dataReceived = false; byte telegram[KNX_TELEGRAM_MAX_SIZE]; byte counter = 0; void setup() { KNX_SERIAL.begin(19200,SERIAL_8E1); DEBUGSERIAL.begin(115200); pinMode(LED_PIN,OUTPUT); clearBuffer(); } void loop() { if(KNX_SERIAL.available()>0){ lastMicros = (long)micros(); byte temp = KNX_SERIAL.read(); // if(temp<16) DEBUGSERIAL.print("0"); //print 0 for 2 digit HEX // DEBUGSERIAL.print(temp,HEX); // DEBUGSERIAL.print(" "); telegram[counter] = temp; counter++; if(!dataReceived){ dataReceived = true; digitalWrite(LED_PIN,HIGH); //LED is ON is data is received } } if((long)micros() - lastMicros >= 2000 && dataReceived){ //2000+ µs => end of telegram => new line // DEBUGSERIAL.println(""); dataReceived = false; //print usable array data for (byte i = 0; i < counter;i++){ if(telegram[i]<16) DEBUGSERIAL.print("0"); //print 0 for 2 digit HEX DEBUGSERIAL.print(telegram[i],HEX); DEBUGSERIAL.print(" "); } DEBUGSERIAL.println(""); printData(); counter = 0; clearBuffer(); digitalWrite(LED_PIN,LOW); //turn LED off } } void clearBuffer(){ memset(telegram,0,sizeof(telegram)); } void printData(){ byte temp = telegram[1]; byte pa1 = telegram[1] >> 4; byte pa2 = telegram[1] & B00001111; byte ga1 = telegram[3] >> 3; byte ga2 = telegram[3] & B00000111; byte datalength = telegram[5] & B00001111; byte firstDateByte = telegram[7] & B00111111; //use only last 6 bits DEBUGSERIAL.print("PA: "); DEBUGSERIAL.print(pa1,DEC); DEBUGSERIAL.print("."); DEBUGSERIAL.print(pa2,DEC); DEBUGSERIAL.print("."); DEBUGSERIAL.print(telegram[2],DEC); DEBUGSERIAL.print(" GA: "); DEBUGSERIAL.print(ga1,DEC); DEBUGSERIAL.print("/"); DEBUGSERIAL.print(ga2,DEC); DEBUGSERIAL.print("/"); DEBUGSERIAL.print(telegram[4],DEC); DEBUGSERIAL.print(" Data length (bytes): "); if(datalength == 1){ DEBUGSERIAL.print(datalength,DEC); //if 1 then usable data max 6 bits, DPT 1.xxx, DPT 2.xxx, DPT 3.xxx, DPT 23.xxx ... }else{ DEBUGSERIAL.print(datalength-1,DEC); //ignore first byte because data doesn't fit in 6 bits } DEBUGSERIAL.print(" Data (HEX): "); if(datalength == 1){ if(firstDateByte < 16) DEBUGSERIAL.print("0"); //print 0 for 2 digit HEX DEBUGSERIAL.print(firstDateByte,HEX); DEBUGSERIAL.print(" "); } for(byte i = 1;i < datalength;i++){ if(telegram[7+i]<16) DEBUGSERIAL.print("0"); //print 0 for 2 digit HEX DEBUGSERIAL.print(telegram[7+i],HEX); DEBUGSERIAL.print(" "); } DEBUGSERIAL.println(); }
BC 11 DD 3F 02 E3 00 81 14 FD 39 PA: 1.1.221 GA: 7/7/2 Data length (bytes): 2 Data (HEX): 14 FD BC 11 FC 2F FE E1 00 81 1F PA: 1.1.252 GA: 5/7/254 Data length (bytes): 1 Data (HEX): 01
#include <KnxTpUart.h> KnxTpUart knx(&Serial, "1.0.15"); boolean test; int led = 13; void setup() { Serial.begin(19200); pinMode(led, OUTPUT); UCSR0C = UCSR0C | B00100000; knx.uartReset(); knx.addListenGroupAddress("6/1/1"); } void loop() { KnxTpUartSerialEventType eType = knx.serialEvent(); if (eType == KNX_TELEGRAM) { KnxTelegram* telegram = knx.getReceivedTelegram(); String target = String(0 + telegram->getTargetMainGroup()) + "/" + String(0 + telegram->getTargetMiddleGroup()) + "/" + String(0 + telegram->getTargetSubGroup()); if (telegram->getCommand() == KNX_COMMAND_WRITE) { if (target == "6/1/1") { test = telegram->getBool(); digitalWrite(led, HIGH); } } } }
void serialEvent() { KnxTpUartSerialEventType eType = knx.serialEvent(); if (eType == KNX_TELEGRAM) { KnxTelegram* telegram = knx.getReceivedTelegram(); String target = String(0 + telegram->getTargetMainGroup()) + "/" + String(0 + telegram->getTargetMiddleGroup()) + "/" + String(0 + telegram->getTargetSubGroup()); if (telegram->getCommand() == KNX_COMMAND_READ) { if (target == "6/1/1") { test = telegram->getBool(); digitalWrite(led, HIGH); ]
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar