Помогите объединить 2 скетча в 1
- Войдите на сайт для отправки комментариев
Втр, 11/04/2017 - 12:21
Люди, помогите объединить 2 скетча.
Есть RFID приемник, и есть BT модуль. Управляют они релюхами.
По отдельности - работают.
Заливаю в один - не работает 2-я часть с BT.
#include <SPI.h> #include <MFRC522.h> // библиотека "RFID". #define SS_PIN 10 #define RST_PIN 9 int val; // BT int n=1; // цикл откр/закр с RFID int LOCK = 4; // 4 вывод закрывает int UNLOCK = 5; // 5 вывод открывает int SER = 6; // 6 вывод сервис * int IMMO = 7; // 7 вывод на обход IMMO MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате void setup() { pinMode(LOCK, OUTPUT); digitalWrite(LOCK, HIGH); // Задаем изначально "+" так как реле управляется "-", по умолчанию - отключено pinMode(UNLOCK, OUTPUT); digitalWrite(UNLOCK, HIGH); pinMode(SER, OUTPUT); digitalWrite(SER, HIGH); pinMode(IMMO, OUTPUT); digitalWrite(IMMO, HIGH); Serial.begin(9600); Serial.println("Waiting for card..."); SPI.begin(); // инициализация SPI / Init SPI bus. mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card. } void loop() { // Работа с RFID ////////////////////////////////////////////// // Поиск новой метки if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Выбор метки if ( ! mfrc522.PICC_ReadCardSerial()) { return; } uidDec = 0; // Выдача серийного номера метки. for (byte i = 0; i < mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. { ++n; // 1 нажатие - открыть, 2 нажатие - закрыть if (n>2) n=1; } if (uidDec == 2687440508 || uidDec == 705036399 || uidDec == 1259499323 || uidDec == 988152175) // Сравниваем Uid метки. // 2687440508 - карта // 1259499323 - синий браслет // 705036399 - оранжевый // 988152175 - синий большой switch(n) { case 1: digitalWrite(UNLOCK, LOW); //открыть delay(200); digitalWrite(UNLOCK, HIGH); digitalWrite(IMMO, LOW); // отключение IMMO (подаем "-" на вывод) delay(2000); break; case 2: digitalWrite(LOCK, LOW); //закрыть delay(200); digitalWrite(LOCK, HIGH); digitalWrite(IMMO, HIGH); // включение IMMO (отключаем "-" на выводе) delay(2000); break; } else // если ключ-карта не прописана, сирена сигналит { digitalWrite(SER, LOW); delay(200); digitalWrite(SER, HIGH); delay(200); digitalWrite(SER, LOW); delay(200); digitalWrite(SER, HIGH); delay(2000); } } И ДЛЯ BlueTooth
int val; int LOCK = 4; // 4 вывод закрывает int UNLOCK = 5; // 5 вывод открывает int SER = 6; // 6 вывод сервис * int IMMO = 7; // 7 вывод на обход IMMO void setup() { Serial.begin(9600); pinMode(LOCK, OUTPUT); digitalWrite(LOCK, HIGH); // Задаем изначально "+" так как реле управляется "-", по умолчанию - отключено pinMode(UNLOCK, OUTPUT); digitalWrite(UNLOCK, HIGH); pinMode(SER, OUTPUT); digitalWrite(SER, HIGH); pinMode(IMMO, OUTPUT); digitalWrite(IMMO, HIGH); } void loop() { if (Serial.available()) { val = Serial.read(); // При символе "1" закрываем машину if (val == '1') { digitalWrite(LOCK, LOW); //закрыть delay(200); digitalWrite(LOCK, HIGH); digitalWrite(IMMO, HIGH); // включение IMMO (отключаем "-" на выводе) delay(1000); } // При символе "2" открываем машину if ( val == '2') { digitalWrite(UNLOCK, LOW); //открыть delay(200); digitalWrite(UNLOCK, HIGH); digitalWrite(IMMO, LOW); // отключение IMMO (подаем "-" на вывод) delay(1000); } // При символе "3" запускаем мотор if ( val == '3') { digitalWrite(LOCK, LOW); delay(1000); digitalWrite(LOCK, HIGH); delay(200); digitalWrite(SER, LOW); delay(300); digitalWrite(SER, HIGH); delay(1000); } // При символе "4" глушим мотор if ( val == '4') { digitalWrite(UNLOCK, LOW); delay(1000); digitalWrite(UNLOCK, HIGH); delay(200); digitalWrite(SER, LOW); delay(300); digitalWrite(SER, HIGH); delay(1000); } } }
Эти скетчи не приспособлены для объединения с другими. Их надо переисать аналогично blink without delay.
Да вы что, я эти еле написал.... Я сам точно не справлюсь..... Ну хоть пример четкий дайте!
И кстати, эти два скетча не обязательно должны работать одновременно.
И кстати, эти два скетча не обязательно должны работать одновременно.
А зачем их тогда объединять? Залейте один. Поработает, потом залейте другой.
Давненько такой темы(Помогите объединить 2 скетча в 1) не было. В общем так. Если скетчи не объединяются , то одна или обе являюся "говнокодом". А раз так. То и мучатся не стоит. Спасибо господину Джереми Блюму за развитие говнокодинга.
Давненько такой темы(Помогите объединить 2 скетча в 1) не было. В общем так. Если скетчи не объединяются , то одна или обе являюся "говнокодом". А раз так. То и мучатся не стоит. Спасибо господину Джереми Блюму за развитие говнокодинга.
давно, и вот опять!
Всем "спасибо за помощь".
В очередной раз все поумничали и толком ничего....
Уже разобрался сам, все работает.
Уже разобрался сам, все работает.
Вот и молодец! Сразу бы так! И нахрена было постить сюда что-то?
Уже разобрался сам, все работает.
Вот и молодец! Сразу бы так! И нахрена было постить сюда что-то?
Думал форум - для помощи и взаимовыручки. Хотел выслушать предложения людей, кто разбирается. Может я и не совсем коректно сделал. А тут в итоге абы поумничать, а на деле - 0. Прочитав много тем на этом форуме понял, чо разбираются тут в деле 2-3 человека, а остальные только умничают...
форум - для ... взаимовыручки.
Вот я - всегда готов прийти на выручку, Была бы выручка.
Думал форум - для помощи и взаимовыручки.
Ошибались. Форум - для общения по интересам.
А какой интерес, например, фанату-механику отвечать на вопрос "в какую сторону гайку закручивать"? Ответить он, конечно, может, но скажите честно, по-Вашему такое общение ему интересно?
Так и здесь. Старожилам форума неинтересно отвечать на вопросы, подобные Вашем. Извините, что Вам не угодили.
Тривиальные вещи нужно узнавать самостоятельно. А когда у Вас появятся нетривиальные вопросы и общаться с Вами станет интересно - милости просим, пообщаемся.