У меня очень важный проект. Моя схема работает так: когда я прикладываю карту rfid у меня пищит пьезоэлемент, перегорает красный светодиод и загорается зелёный светодиод, открывается сервопривод, ожидание 3 секунды и механизм запирается. Через несколько дней я увидел свою уязвимость: внутри кабинета с закрытой дверью её открыть не получится, поэтому я решил добавить внутрь кабинета кнопку. Я посмотрел множество сайтов но нигде не нашел ответа, только по отдельности. Решил сам подключить, но получилось так, что теперь открывает только кнопка, а 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[i];
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); // устанавливаем серву в закрытое сосотояние
}