Помогите объединить 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 человека, а остальные только умничают...
форум - для ... взаимовыручки.
Вот я - всегда готов прийти на выручку, Была бы выручка.
Думал форум - для помощи и взаимовыручки.
Ошибались. Форум - для общения по интересам.
А какой интерес, например, фанату-механику отвечать на вопрос "в какую сторону гайку закручивать"? Ответить он, конечно, может, но скажите честно, по-Вашему такое общение ему интересно?
Так и здесь. Старожилам форума неинтересно отвечать на вопросы, подобные Вашем. Извините, что Вам не угодили.
Тривиальные вещи нужно узнавать самостоятельно. А когда у Вас появятся нетривиальные вопросы и общаться с Вами станет интересно - милости просим, пообщаемся.