#include ; #include ; #include "MeyCan.h"; #include "MeyRule.h"; const int16_t SW_FLUR = 0XD238; const int16_t SW_ANBAU = 0x87A9; const int16_t SW_WOHNZIMMER = 0x87CA; const int16_t UP_WOHNZIMMER_TUER = 0x051F; const int16_t UP_WOHNZIMMER_TERASSE = 0x05df; const int16_t UP_FLUR_EINGANG = 0x0769; const int16_t UP_BUERO = 0x1177; const int16_t UP_FLUR_BUERO = 0x05A1; const int16_t UP_FLUR_KUECHE = 0x01EF; const int16_t UP_KINDERZIMMER = 0x0196; const int16_t UP_FLUR_ELTERN = 0x0632; const int16_t UP_KUECHE_FLUR = 0x07F5; const int16_t UP_KUECHE_BAD = 0x0585; struct can_frame incomingCanFrame; void setup() { SPI.begin(); AddToggleInverse(UP_WOHNZIMMER_TUER, 5, SW_WOHNZIMMER, 4); // Lichtschalter Wohnzimmer Licht 1 AddToggleInverse(UP_WOHNZIMMER_TUER, 5, SW_WOHNZIMMER, 3); // Lichtschalter Wohnzimmer Licht 2 AddToggle(UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 4); // Licht 1 von Terassenschalter AddToggle(UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 3); // Licht 2 von Terassenschalter AddToggle(UP_FLUR_EINGANG, 1, SW_WOHNZIMMER, 6); // Eingangstür Flur Licht 2 AddToggle(UP_FLUR_EINGANG, 1, SW_FLUR, 1); //Eingangstür Flur Licht 1 AddSimple(UP_WOHNZIMMER_TUER, 3, SW_WOHNZIMMER, 1); // Licht 1 Wochzimmer Eingangstür AddSimple(UP_WOHNZIMMER_TUER, 4, SW_WOHNZIMMER, 2); // Licht 2 Wochzimmer Eingangstür AddToggle(UP_BUERO, 1, SW_WOHNZIMMER, 7); // Licht Papa Büro AddToggle(UP_FLUR_BUERO, 1, SW_WOHNZIMMER, 6); // Flurlicht von Papas Büro AddToggle(UP_FLUR_BUERO, 1, SW_FLUR, 1); // Flurlicht von Papas Büro AddToggle(UP_FLUR_KUECHE, 1, SW_WOHNZIMMER, 6); // Flurlicht von Papas Büro AddToggle(UP_FLUR_KUECHE, 1, SW_FLUR, 1); // Flurlicht von Papas Büro AddToggle(UP_KINDERZIMMER, 3, SW_WOHNZIMMER, 6); // Flurlicht von Papas Büro AddToggle(UP_KINDERZIMMER, 3, SW_FLUR, 1); // Flurlicht von Papas Büro AddToggle(UP_FLUR_ELTERN, 1, SW_FLUR, 5); // Flurlicht von Papas Büro AddToggle(UP_KUECHE_FLUR, 1, SW_ANBAU, 2); AddToggle(UP_KUECHE_FLUR, 2, SW_ANBAU, 3); AddToggle(UP_KUECHE_BAD, 1, SW_ANBAU, 2); AddSimple(UP_KUECHE_BAD, 3, SW_ANBAU, 1); _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL.MCLKCTRLA | 1 << 7); delay(10); // a bit delay for mcp2515 to get the clock SetMeyPin(0, 1, PIN_PC7); SetMeyPin(1, 2, PIN_PC6); SetMeyPin(2, 3, PIN_PC5); SetMeyPin(3, 4, PIN_PC4); SetMeyPin(4, 5, PIN_PC3); SetMeyPin(5, 6, PIN_PC2); SetMeyPin(6, 7, PIN_PC1); SetMeyPin(7, 8, PIN_PC0); AddCanInterface(PIN_PA2); AddCanInterface(PIN_PA3); AddCanInterface(PIN_PB0); AddCanInterface(PIN_PB1); SetupMeyCan(7, 0, 1); } void loop() { ForEachCanInterface(CheckCanInterface); } void CheckCanInterface(MCP2515 *interface) { if (interface->readMessage(&incomingCanFrame) == MCP2515::ERROR_OK) { HandleFrame(&incomingCanFrame, interface); HandleRules(&incomingCanFrame); } }