// настраиваем I2C1 для работы модуля I2C1.setup({sda: SDA, scl: SCL, bitrate: 400000}); // подключаем модуль к I2C1 и пину прерывания var nfc = require('@amperka/nfc').connect({i2c: I2C1, irqPin: P9}); // подключаем 3 светодиода var ledFirst = require('@amperka/led').connect(A0); var ledSecond = require('@amperka/led').connect(A1); var ledThird = require('@amperka/led').connect(A2); // ID-карт, при поднисенни которых буду переключаться светодиоды. // считываем их примером из console: const uidFirstCard = [4, 113, 193, 218, 163, 64, 129]; const uidSecondCard = [4, 64, 169, 218, 163, 64, 128]; const uidThirdCard = [4, 171, 180, 218, 163, 64, 128]; // активируем модуль nfc.wakeUp(function(error) { if (error) { print('wake up error', error); } else { print('wake up OK'); // слушаем новые метки nfc.listen(); } }); nfc.on('tag', function(error, data) { if (error) { print('tag read error'); } else { // выводим в консоль полученные данные print(data.uid); // переводим массив-байт в строку для удобства сравнения // вызываем функцию-обработчик метки factoryLedLight(data.uid); } // каждые 1000 миллисекунд слушаем новую метку setTimeout(function() { nfc.listen(); }, 1000); }); // функция-обработчик, сравнивает массивы и при совпадении возвращает true function comparisonOfUid(uid, card) { // переменная хранящая длину массива var leng = uid.length; // цикл поэлементно проверяет равенство значений for (var i = 0; i < leng; i++){ // сравнение элементов между собой if (uid[i] != card[i]){ // если элементы не равны прекращаем работу функции и возвращаем false return false; } // если все элементы массива равны возвращаем true if ( i == uid.length - 1){ return true; } } } // функция сравнивает ID текущей метки с ID меток в константах // при совпадении переключает светодиод function factoryLedLight(id) { if (comparisonOfUid(id, uidFirstCard)) { console.log('FirstTAG'); ledFirst.toggle(); }else { if (comparisonOfUid(id, uidSecondCard)) { console.log('SecondTAG'); ledSecond.toggle(); } else { if (comparisonOfUid(id, uidThirdCard)) { console.log('ThirdTAG'); ledThird.toggle(); } else { console.log('NoTAG'); } } } }