Ви не увійшли.
Приветствую!!!
Нужно, что бы с RFID метки включалась сигнализация и выключалась при повторном подношении. В интернете куча того, что включается и через паузу отключается, но мне нужно именно по карточке и включение и отключение. С инфракрасным датчиком работает все, с ДУ тоже с одной кнопки всё работает, а вот с RFID не в какую. При подношении он снимает снимает с охраны, а через 2 секунды снова ставит. Но карточку я второй раз не подношу. Целый день убил, ничего не понимаю. Подскажите, пожалуйста, только по существу, где я облажался, сил больше нет.
#include <SPI.h>
#include <MFRC522.h> // библиотека "RFID".
#define SS_PIN 10
#define RST_PIN 9
#define STATE_LED 7
MFRC522 mfrc522(SS_PIN, RST_PIN);
unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате
int State=1;
void setup() {
Serial.begin(9600);
Serial.println("Waiting for card...");
SPI.begin(); // инициализация SPI / Init SPI bus.
mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card.
pinMode(STATE_LED, OUTPUT);
}
void loop() {
// Поиск новой метки
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 метки в консоль.
///////////////////////////////////////////////////////////////////////////////////////////////////////
if (uidDec == 3309163877 && State==1){
Serial.println("Security state: Off");
tone(2, 700, 500); // Делаем звуковой сигнал, Открытие
State = 0;
delay(2000); // пауза 3 сек и механизм запирается.
}
if (uidDec == 3309163877 && State==0){
State=1;
Serial.println("Security state: On");
tone(2, 700, 1000); // Делаем звуковой сигнал, Открытие
delay(2000); // пауза 2 сек и механизм запирается.
}
}
Неактивний
if (uidDec == 3309163877 && State==1){
Serial.println("Security state: Off");
tone(2, 700, 500); // Делаем звуковой сигнал, Открытие
State = 0; !!!!!!!!!!!!!!
delay(2000); // пауза 3 сек и механизм запирается.
}
после 2 сек проверяем
uidDec == 3309163877 - да
State==0 да
условия выполняется
if (uidDec == 3309163877 && State==0){
State=1;
Serial.println("Security state: On");
tone(2, 700, 1000); // Делаем звуковой сигнал, Открытие
delay(2000); // пауза 2 сек и механизм запирается.
}
исправить так
if (uidDec == 3309163877 )
{
uidDec = 0;
if ( State==1 ){
Serial.println("Security state: Off");
tone(2, 700, 500); // Делаем звуковой сигнал, Открытие
State = 0; !!!!!!!!!!!!!!
delay(2000); // пауза 3 сек и механизм запирается.
}
else
{
State=1;
Serial.println("Security state: On");
tone(2, 700, 1000); // Делаем звуковой сигнал, Открытие
delay(2000); // пауза 2 сек и механизм запирается.
}
}
не спите )
логита так се. эти паузы нужны что б не словить повторное чтение карты?
Неактивний
Из Вашего кода я почти ничего не понял, наверное не соображаю уже ничего сегодня. Но главное все-таки дошло благодаря вашей подсказке, что после принятия uidDec значения, его стоит обнулить. Огромное спасибо!!! Паузы что бы не словить повторю Это пока только наброски из того что я начинал когда-то, а потом забросил, так что еще все буду доделывать. Я из тех новичков, который учиться сразу на практике и еще слишком много не знаю.
Неактивний
if (uidDec == 3309163877 && State==1){
Serial.println("Security state: Off");
tone(2, 700, 500); // Делаем звуковой сигнал, Открытие
State = 0; !!!!!!!!!!!!!!
delay(2000); // пауза 3 сек и механизм запирается.
}
после 2 сек проверяем
uidDec == 3309163877 - да
State==0 да
условия выполняетсяif (uidDec == 3309163877 && State==0){
State=1;
Serial.println("Security state: On");
tone(2, 700, 1000); // Делаем звуковой сигнал, Открытие
delay(2000); // пауза 2 сек и механизм запирается.
}
исправить так
if (uidDec == 3309163877 )
{
uidDec = 0;if ( State==1 ){
Serial.println("Security state: Off");
tone(2, 700, 500); // Делаем звуковой сигнал, ОткрытиеState = 0; !!!!!!!!!!!!!!
delay(2000); // пауза 3 сек и механизм запирается.
}
else
{
State=1;
Serial.println("Security state: On");
tone(2, 700, 1000); // Делаем звуковой сигнал, Открытие
delay(2000); // пауза 2 сек и механизм запирается.
}
}не спите )
логита так се. эти паузы нужны что б не словить повторное чтение карты?
чувак!! спасибо огромное!! весь интернет перелопатил
Неактивний