Добрый всем вечер нужна помощь в одном моменте хотелось бы чтоб калитка открывалась с матричной клавиатуры 3*4 и с пульта на 433мгц. имею скетч на работу реле и матричной клавы обе работают попытался их объеденить но при заливке скетча клава работает а вот радиосигнал нет и в мониторе порта радиосигнал не проходит в чём может быть причина. выкладывю скетч работы реле с пульта и втрой клавиатура Код (C++): #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); int relay = 10; //Реле будет тут int analogData=0; //тут будут храниться данные с АЦП пин 0 int ledstate=0; //переменная состояния вкл-выкл void setup() { Serial.begin(9600); mySwitch.enableReceive(0); // приемник на pin 2 (DATA) pinMode(relay7, OUTPUT); digitalWrite(relay7, LOW); } void loop() { if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == 0) { Serial.print("error code"); // Ошибка приемка кода } else { Serial.print("code good"); // Принял код Serial.print( mySwitch.getReceivedValue() ); } if (mySwitch.getReceivedValue() == 7688384) { // 6133332 - код Включения1 digitalWrite(relay, HIGH); } if (mySwitch.getReceivedValue() == 7688204) { // 6133392 - код выключения1 digitalWrite(relay, LOW); mySwitch.resetAvailable(); } } } а вот и второй Код (C++): #include <Password.h> #include <Keypad.h> Password password = Password("2405"); // password int dlugosc = 4; // length of the password int ledRed = 11; int ledGreen = 12; int buzzer = 13; int relay = 10; int ilosc; // number of clicks const byte ROWS = 4; // rows const byte COLS = 3; // cols char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {2,3,4,5}; byte colPins[COLS] = {6,7,8}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup() { Serial.begin(9600); keypad.addEventListener(keypadEvent); pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(relay, OUTPUT); digitalWrite(ledRed, HIGH); digitalWrite(ledGreen, LOW); digitalWrite(relay, HIGH); } void loop() { keypad.getKey(); } void keypadEvent(KeypadEvent eKey) { switch (keypad.getState()) { case PRESSED: int i; for( i = 1; i <= 1; i++ ) { digitalWrite(buzzer, HIGH); delay(50); digitalWrite(buzzer, LOW); delay(50); } Serial.print("Pressed: "); Serial.println(eKey); switch (eKey) { /* case '#': break; case '*': break; */ default: ilosc=ilosc+1; password.append(eKey); } //Serial.println(ilosc); } if(ilosc == dlugosc) { delay(250); checkPassword(); ilosc = 0; } } void checkPassword() { if (password.evaluate()) { int i; for( i = 1; i <= 2; i++ ) { digitalWrite(buzzer, HIGH); delay(70); digitalWrite(buzzer, LOW); delay(70); } ilosc = 0; password.reset(); Serial.println("Success"); digitalWrite(ledRed, LOW); digitalWrite(ledGreen, HIGH); digitalWrite(relay, LOW); delay (5000); digitalWrite(ledGreen, LOW); digitalWrite(relay, HIGH); digitalWrite(ledRed, HIGH); } else { int i; for( i = 1; i <= 1; i++ ) { digitalWrite(buzzer, HIGH); delay(200); digitalWrite(buzzer, LOW); delay(200); } ilosc = 0; password.reset(); Serial.println("Wrong"); digitalWrite(ledGreen, LOW); digitalWrite(ledRed, HIGH); digitalWrite(relay, HIGH); } }
я сам пробовал объеденить скетчи и уменя вот что получилось Код (C++): #include <Password.h> #include <Keypad.h> #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); Password password = Password("2405"); // password int dlugosc = 4; // length of the password int ledRed = 11; int ledGreen = 12; int buzzer = 13; int relay = 10; int analogData=0; //тут будут храниться данные с АЦП пин 0 int ledstate=0; //переменная состояния вкл-выкл int ilosc; // number of clicks const byte ROWS = 4; // rows const byte COLS = 3; // cols char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {9,3,4,5}; byte colPins[COLS] = {6,7,8}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup() { Serial.begin(9600); mySwitch.enableReceive(0); // приемник на pin 2 (DATA) keypad.addEventListener(keypadEvent); pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(relay, OUTPUT); digitalWrite(ledRed, HIGH); digitalWrite(ledGreen, LOW); digitalWrite(relay, HIGH); } void loop() { keypad.getKey(); } void keypadEvent(KeypadEvent eKey) { switch (keypad.getState()) { case PRESSED: int i; for( i = 1; i <= 1; i++ ) { digitalWrite(buzzer, HIGH); delay(50); digitalWrite(buzzer, LOW); delay(50); } Serial.print("Pressed: "); Serial.println(eKey); switch (eKey) { /* case '#': break; case '*': break; */ default: ilosc=ilosc+1; password.append(eKey); } //Serial.println(ilosc); } if(ilosc == dlugosc) { delay(250); checkPassword(); ilosc = 0; } } void checkPassword() { if (password.evaluate()) { int i; for( i = 1; i <= 2; i++ ) { digitalWrite(buzzer, HIGH); delay(70); digitalWrite(buzzer, LOW); delay(70); } ilosc = 0; password.reset(); Serial.println("Success"); digitalWrite(ledRed, LOW); digitalWrite(ledGreen, HIGH); digitalWrite(relay, LOW); delay (5000); digitalWrite(ledGreen, LOW); digitalWrite(relay, HIGH); digitalWrite(ledRed, HIGH); } else { int i; for( i = 1; i <= 1; i++ ) { digitalWrite(buzzer, HIGH); delay(200); digitalWrite(buzzer, LOW); delay(200); } ilosc = 0; password.reset(); Serial.println("Wrong"); digitalWrite(ledGreen, LOW); digitalWrite(ledRed, HIGH); digitalWrite(relay, HIGH); { if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == 0) { Serial.print("error code"); // Ошибка приемка кода } else { Serial.print("code good"); // Принял код Serial.print( mySwitch.getReceivedValue() ); } if (mySwitch.getReceivedValue() == 7688384) { // 6133332 - код Включения1 digitalWrite(relay, HIGH); } if (mySwitch.getReceivedValue() == 7688204) { // 6133392 - код выключения1 digitalWrite(relay, LOW); mySwitch.resetAvailable(); } } } } } может быть delay мешает или я как то не так написал скетч всем заранее спасибо за помощь