В 016 версии разница в коде - там был косяк.Кажется в ажаксе.
ser009 исправил еще год назад. В 017 не проверял. Завтра посмотрю. А сейчас на Дуе.
На Дуе точно работает
Код: Выделить всё
/*
Module Contacts
part of Arduino Mega Server project
*/
/*
#ifdef CONTACTS_FEATURE
#define CONT1_PIN 27
#define CONT2_PIN 31
#define OPEN 1
#define CLOSE 0
char cont1object[] = "cont1";
char cont2object[] = "cont2";
char cont1openMess[] = "Open"; char cont1closeMess[] = "Closed";
char cont2openMess[] = "Down"; char cont2closeMess[] = "Norm";
// states
// 0 - open
// 1 - close
// 2 - not defined
// 3 - not defined and not contXstatus
byte cont1state = 2; byte old_cont1state = 2; byte cont1objectState = 2;
byte cont2state = 2; byte old_cont2state = 2; byte cont2objectState = 2;
void contactsInit() {
pinMode(CONT1_PIN, INPUT);
pinMode(CONT2_PIN, INPUT);
moduleContacts = MODULE_ENABLE;
started("Contacts");
}
void printContMess(char obj[], char mess[]) {
timeStamp(); Serial.print(obj); Serial.print(F(": ")); Serial.println(mess);
}
void contactsWorks() {
// cont1
cont1state = digitalRead(CONT1_PIN);
if (cont1state != old_cont1state) {
old_cont1state = cont1state;
if (cont1state == 0) {
cont1objectState = OPEN;
printContMess(cont1object, cont1openMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont1object, OPEN);
#endif
} else {
cont1objectState = CLOSE;
printContMess(cont1object, cont1closeMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont1object, CLOSE);
#endif
}
}
// cont2
cont2state = digitalRead(CONT2_PIN);
if (cont2state != old_cont2state) {
old_cont2state = cont2state;
if (cont2state == 1) {
cont2objectState = OPEN;
printContMess(cont2object, cont2openMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont1object, OPEN);
#endif
} else {
cont2objectState = CLOSE;
printContMess(cont2object, cont2closeMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont1object, CLOSE);
#endif
}
}
} // contactsWorks()
#endif // CONTACTS_FEATURE
*/
#ifdef CONTACTS_FEATURE
#define cont1pin 27 // HOM
#define cont2pin 31 // CLO
#define OPEN 1
#define CLOSE 0
char cont1object[] = "cont1";
char cont2object[] = "cont2";
char cont1openMess[] = "Open"; char cont1closeMess[] = "Closed";
char cont2openMess[] = "Open"; char cont2closeMess[] = "Closed";
// states
// 0 - open
// 1 - close
// 2 - not defined
// 3 - not defined and not contXstatus
byte cont1state = 2; byte old_cont1state = 3; byte cont1objectState = 2;
byte cont2state = 2; byte old_cont2state = 3; byte cont2objectState = 2;
void contactsInit() {
pinMode(cont1pin, INPUT);
pinMode(cont2pin, INPUT);
moduleContacts = MODULE_ENABLE;
started("Contacts");
}
void printContMess(char obj[], char mess[]) {
timeStamp(); Serial.print(obj); Serial.print(F(": ")); Serial.println(mess);
}
void contactsWorks() {
// cont1 (HOM)
cont1state = digitalRead(cont1pin);
if (cont1state != old_cont1state) {
old_cont1state = cont1state;
if (cont1state == 0) {
cont1objectState = OPEN;
printContMess(cont1object, cont1openMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont1object, OPEN);
#endif
} else {
cont1objectState = CLOSE;
printContMess(cont1object, cont1closeMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont1object, CLOSE);
#endif
}
}
if (cycle1m) {
old_cont1state = cont1state;
if (cont1state == 0) {
printContMess(cont1object, cont1openMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont1object, OPEN);
#endif
} else {
printContMess(cont1object, cont1closeMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont1object, CLOSE);
#endif
}
}
// cont2 (CLO)
cont2state = digitalRead(cont2pin);
if (cont2state != old_cont2state) {
old_cont2state = cont2state;
if (cont2state == 0) {
cont2objectState = OPEN;
printContMess(cont2object, cont2openMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont2object, OPEN);
#endif
} else {
cont2objectState = CLOSE;
printContMess(cont2object, cont2closeMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont2object, CLOSE);
#endif
}
}
if (cycle1m) {
old_cont2state = cont2state;
if (cont1state == 0) {
printContMess(cont2object, cont2openMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont2object, OPEN);
#endif
} else {
printContMess(cont2object, cont2closeMess);
#ifdef MAJORDOMO_FEATURE
sendRequestM(cont2object, CLOSE);
#endif
}
}
}
#endif // CONTACTS_FEATURE
Оригинал и исправленное.