Очень важный проект, а разобраться не могу. Переискал весь интернет ответа не нашёл. Мне нужно объеденить кнопку и модуль Rfid. Помимо этого в моём проекте есть ещё и два светодиода, сервопривод, пьезоэлемент. Потом я буду добавлять часы реального времени, но это не скоро. Сейчас я не могу разобраться с подключением кнопки к ардуино. Выходит, что открывает либо только кнопка, либо только карта. Помогите, пожалуйста, если не трудно, буду очень благодарен! Вот код: #include <Servo.h> #include <SPI.h> #include <MFRC522.h> // библиотека "RFID". #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате Servo servo; void setup() { Serial.begin(9600); Serial.println("Waiting for card..."); SPI.begin(); // инициализация SPI / Init SPI bus. mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card. servo.attach(6); servo.write(90); // устанавливаем серву в закрытое сосотояние } void loop() { // Поиск новой метки digitalWrite (4, HIGH); 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; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 131977158 or uidDec == 2083045409 or uidDec == 2032953778 or uidDec == 1764569778 or uidDec == 4241245474 or uidDec == 2835367603 or uidDec == 1200017862) // Сравниваем Uid метки, если он равен заданому то серва открывает. { digitalWrite (4, LOW); digitalWrite (5, HIGH); tone(7, 900, 500); // Делаем звуковой сигнал, Открытие delay (100); tone(7, 800, 500); servo.write(0); // Поворациваем серву на угол 0 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(7, 1000, 500); // Делаем звуковой сигнал, Закрытие delay (100); tone(7, 900, 500); digitalWrite (5, LOW); digitalWrite (4, HIGH); } servo.write(90); // устанавливаем серву в закрытое сосотояние }
Если открыть учебник по булевой алгебре, то там можно отыскать такой оператор, как ИЛИ. Я думаю, что надо начинать с чего попроще. А на перпетуум мобиле потом замахнуться.