Проблема с условием
- Войдите на сайт для отправки комментариев
Втр, 04/06/2019 - 17:02
Добрый день. Подскажите куда копать. Условие отрабатывает наполовину. При поднесении карточки ПК блокируется, но при поднесении карты к заблокированному не даёт никакого результата.
// Подключаем библиотеку для управления клавиатурой #include <Keyboard.h> #include <SPI.h> #include <MFRC522.h> // библиотека "RFID". #define SS_PIN 10 #define RST_PIN 9 int a = 0; MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // для хранения номера метки в десятичном формате void setup() { Serial.begin(9600); SPI.begin(); // инициализация SPI mfrc522.PCD_Init(); // инициализация MFRC522 Keyboard.begin(); delay(1000); } 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 == 13654906) // Сравниваем Uid метки, если он равен заданому { if (a == 0) { Keyboard.press(KEY_LEFT_GUI); Keyboard.press('l'); delay(500); Keyboard.releaseAll(); a = 1; } else { delay(5000); } } else if (a == 1) { Keyboard.println("1"); Keyboard.press(KEY_RETURN); Keyboard.releaseAll(); a = 0; } }
Вы бы пояснили, что означают if'ы в №№40 и 53, а то по сейчас мне кажется, что Вы блокируете, когда краточка совпала, а разьлокируете, когда не совпала (т.е. левой карточкой).
переменная a выполняет роль флага. ею я отслеживаю статус пк, разблокирован или заблокирован, чтобы при заблокированном пк он ещё раз не пытался блокироваться при поднесении карточки.
Вы бы пояснили, что означают if'ы в №№40 и 53, а то по сейчас мне кажется, что Вы блокируете, когда краточка совпала, а разьлокируете, когда не совпала (т.е. левой карточкой).
Полностью соглашусь.
Чуток с else напутано. (Поменяйте их местами).
пишите комменты на свой код, а то код из инета прокомментирован, а ваш нет.
Вы бы пояснили, что означают if'ы в №№40 и 53, а то по сейчас мне кажется, что Вы блокируете, когда краточка совпала, а разьлокируете, когда не совпала (т.е. левой карточкой).
Полностью соглашусь.
Чуток с else напутано. (Поменяйте их местами).
Всем спасибо, ошибку нашёл.
Всем спасибо, ошибку нашёл.
Я бы сказал, Нуидела с Петровичем нашли и ткнули носом, но всё равно, молодец! :)))
Всем спасибо, ошибку нашёл.
Я бы сказал, Нуидела с Петровичем нашли и ткнули носом, но всё равно, молодец! :)))
так поэтому и нашёл, что ткнули
Подскажите, как можно реализовать проверку наличия карты? то есть если карту убрали должны совершаться действия. проверка по uid карты такого эффекта не даёт. если карту не прикладывать - ничего не происходит.
Подскажите, как можно реализовать проверку наличия карты? то есть если карту убрали должны совершаться действия. проверка по uid карты такого эффекта не даёт. если карту не прикладывать - ничего не происходит.
Когда карту приложили - взводишь флаг "карта приложена", запоминаешь время прикладывания карты. И постоянно проверяешь: если взведён флаг "карта приложена", то: если карта ещё приложена - обновляешь время, если карты на считывателе нет, то проверяешь - если разница между текущим временем и временем последнего детектирования карты больше, чем определённый интервал - выполняешь определённые действия, и сбрасываешь флаг "карта приложена". В псевдокоде это выглядит примерно так: