Danke dreamy1
Dann werde ich mir wohl den Typ zulegen müssen. Immer diese Anfänger
;-)
Gruß
Bernhard
Dann werde ich mir wohl den Typ zulegen müssen. Immer diese Anfänger
;-)
Gruß
Bernhard
#include <KnxTelegram.h> //KNX #include <KnxTpUart.h> //KNX #include <OneWire.h> #include <DallasTemperature.h> #include "U8glib.h" U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); float t_akt; float t_poz = 25; float t_kurenie; float t_chladenie; float t_kurenie_h; float t_chladenie_h; int id = 0; volatile int stav_tc = 0; //KNX volatile int stav_osv = 0; //KNX volatile bool tienenie_akt = false; //KNX volatile bool tienenie_deakt = false; //KNX const int tl_1 = 7; const int tl_2 = 8; const int tl_3 = 6; const int tl_4 = 4; const int tl_5 = 5; const int tl_6 = 3; const int t_senzor = 2; const int tpuart_reset = 13; //KNX char *str[] = {"NECINNE" , "KURENIE" , "CHLADENIE"}; OneWire oneWireDS(t_senzor); DallasTemperature senzoryDS(&oneWireDS); KnxTpUart knx(&Serial, "1.1.10"); //KNX void setup() { senzoryDS.begin(); pinMode(tl_1, INPUT_PULLUP); pinMode(tl_2, INPUT_PULLUP); pinMode(tl_3, INPUT_PULLUP); pinMode(tl_4, INPUT_PULLUP); pinMode(tl_5, INPUT_PULLUP); pinMode(tl_6, INPUT_PULLUP); pinMode(tpuart_reset, OUTPUT); //KNX digitalWrite(13, HIGH); //KNX delay(1000); digitalWrite(13, LOW); //KNX delay(1000); digitalWrite(13, HIGH); //KNX delay(1000); Serial.begin(19200, SERIAL_8E1); //KNX knx.uartReset(); //KNX delay(2000); } void loop() { senzoryDS.requestTemperatures(); t_akt = senzoryDS.getTempCByIndex(0); u8g.firstPage(); float t_kurenie = t_poz - 2; float t_chladenie = t_poz + 2; float t_kurenie_h = t_poz + 1; float t_chladenie_h = t_poz - 1; if (digitalRead(tl_1) == LOW && stav_osv >= 1){ id = 1; stav_osv = stav_osv - 1; knx.groupWrite1ByteInt("1/1/2", stav_osv); //KNX } if (digitalRead(tl_2) == LOW && stav_osv <= 2){ id = 2; stav_osv = stav_osv + 1; knx.groupWrite1ByteInt("1/1/2", stav_osv); //KNX } if (digitalRead(tl_3) == LOW){ id = 3; tienenie_akt = false; tienenie_deakt = true; knx.groupWriteBool("1/1/3", tienenie_akt); //KNX knx.groupWriteBool("1/1/4", tienenie_deakt); //KNX } if (digitalRead(tl_4) == LOW){ id = 4; tienenie_akt = true; tienenie_deakt = false; knx.groupWriteBool("1/1/3", tienenie_akt); //KNX knx.groupWriteBool("1/1/4", tienenie_deakt); //KNX } if (digitalRead(tl_5) == LOW && t_poz > 20){ t_poz = t_poz - 0.5; id = 5; } if (digitalRead(tl_6) == LOW && t_poz < 30){ t_poz = t_poz + 0.5; id = 6; } if (t_akt <= t_kurenie && stav_tc == 0){ stav_tc = 1; knx.groupWrite1ByteInt("1/1/1", stav_tc); //KNX } if (t_akt >= t_chladenie && stav_tc == 0){ stav_tc = 2; knx.groupWrite1ByteInt("1/1/1", stav_tc); //KNX } if (t_akt >= t_kurenie_h && stav_tc == 1){ stav_tc = 0; knx.groupWrite1ByteInt("1/1/1", stav_tc); //KNX } if (t_akt <= t_kurenie && stav_tc == 1){ stav_tc = 1; knx.groupWrite1ByteInt("1/1/1", stav_tc); //KNX } if (t_akt <= t_chladenie_h && stav_tc == 2){ stav_tc = 0; knx.groupWrite1ByteInt("1/1/1", stav_tc); //KNX } if (t_akt >= t_chladenie && stav_tc == 2){ stav_tc = 2; knx.groupWrite1ByteInt("1/1/1", stav_tc); //KNX } do { draw1(); } while (u8g.nextPage()); } void draw1(void){ u8g.setFont(u8g_font_profont10); u8g.setPrintPos(10, 18); u8g.print("TEPLOTA V MIESTNOSTI"); u8g.setPrintPos(0, 40); u8g.print("Aktualna:"); u8g.setPrintPos(65, 40); u8g.print(t_akt); u8g.setPrintPos(102, 40); u8g.print("st. C"); u8g.setPrintPos(0, 50); u8g.print("Pozadovana:"); u8g.setPrintPos(65, 50); u8g.print(t_poz); u8g.setPrintPos(102, 50); u8g.print("st. C"); u8g.setPrintPos(0, 60); u8g.print("Stav:"); u8g.setPrintPos(65, 60); u8g.print(str[stav_tc]); u8g.setPrintPos(120, 60); u8g.print(id); u8g.setPrintPos(55, 60); u8g.print(stav_osv); u8g.setPrintPos(0, 18); u8g.print(tienenie_akt); u8g.setPrintPos(120, 18); u8g.print(tienenie_deakt); }
#include <KnxTelegram.h> //KNX #include <KnxTpUart.h> //KNX #include <Servo.h> volatile int stav_tc = 0; //KNX volatile int stav_osv = 0; //KNX volatile bool tienenie_akt = false; //KNX volatile bool tienenie_deakt = false; //KNX const byte interruptPin = 2; const int rele_k = 4; const int rele_ch = 5; const int tpuart_reset = 13; //KNX Servo tienenie; KnxTpUart knx(&Serial, "1.1.11"); //KNX void setup(){ tienenie.attach(6); tienenie.write(90); pinMode(rele_k, OUTPUT); pinMode(rele_ch, OUTPUT); pinMode(2, INPUT_PULLUP); pinMode(3, OUTPUT); pinMode(tpuart_reset, OUTPUT); //KNX digitalWrite(13, HIGH); //KNX delay(1000); digitalWrite(13, LOW); //KNX delay(1000); digitalWrite(13, HIGH); //KNX delay(1000); Serial.begin(19200, SERIAL_8E1); //KNX knx.uartReset(); //KNX delay(1000); attachInterrupt(digitalPinToInterrupt(interruptPin ), detect_zero, RISING ); TCCR2A = _BV(COM2B0) | _BV(COM2B1) | _BV(WGM20) | _BV(WGM21); TCCR2B = _BV(CS22) | _BV(CS21) | _BV(CS20); OCR2B = 255; TCNT2 = 120; knx.addListenGroupAddress("1/1/1"); //KNX knx.addListenGroupAddress("1/1/2"); //KNX knx.addListenGroupAddress("1/1/3"); //KNX knx.addListenGroupAddress("1/1/4"); //KNX delay(1000); } void loop(){ if (tienenie_akt == false && tienenie_deakt == false){ tienenie.write(90); } if (tienenie_akt == false && tienenie_deakt == true){ tienenie.write(106); } if (tienenie_akt == true && tienenie_deakt == false){ tienenie.write(80); } if (tienenie_akt == true && tienenie_deakt == true){ tienenie.write(90); } if (stav_tc == 0){ digitalWrite(rele_k, LOW); digitalWrite(rele_ch, LOW); } if (stav_tc == 1){ digitalWrite(rele_ch, LOW); digitalWrite(rele_k, HIGH); } if (stav_tc == 2){ digitalWrite(rele_k, LOW); digitalWrite(rele_ch, HIGH); } if (stav_osv == 0){ OCR2B = 250; } if (stav_osv == 1){ OCR2B = 240; } if (stav_osv == 2){ OCR2B = 220; } if (stav_osv == 3){ OCR2B = 180; } } void detect_zero(){ TCNT2 = 120; } void serialEvent(){ //KNX KnxTpUartSerialEventType eType = knx.serialEvent(); if (eType != KNX_TELEGRAM) return; 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 == "1/1/1"){ stav_tc = telegram->get1ByteIntValue(); } else if (target == "1/1/2"){ stav_osv = telegram->get1ByteIntValue(); } else if (target == "1/1/3"){ tienenie_akt = telegram->getBool(); } else if (target == "1/1/4"){ tienenie_deakt = telegram->getBool(); } } }
// Test constellation = NodeMCU V3 <-> 5WG1 117-2AB12 // GND GND (PIN 1) // 5V VCC (PIN 5) // RX 03 TX (PIN 4) // TX 01 RX (PIN 2) #include <KnxTpUart.h> KnxTpUart knx(&Serial, "1.1.80"); // KNX-Gruppenadresse 1.1.80 mit Dummy-Applikation void setup() { pinMode(16, OUTPUT); // LED PIN 16 (statt Nano 13) digitalWrite(16, LOW); Serial.begin(19200, SERIAL_8E1); knx.uartReset(); } void loop() { knx.groupWriteBool("6/7/4", true); digitalWrite(16, HIGH); delay (1000); knx.groupWriteBool("6/7/4", false); digitalWrite(16, LOW); delay (1000); }
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