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