*/
//=====================================================================================//
#include // Инициализация библиотеки Wire
#include // Инициализация библиотеки шины OneWire.
#include // Инициализация библиотеки для LCD-20x4
#include Инициализация библиотеки сервопривода
#include // Инициализация библиотеки SPI для "RFID-RC522"
#include // Инициализация библиотеки "RFID-RC522"
#include // Инициализация библиотеки Adafruit_GFX для нокиа-5510
#include // Инициализация библиотеки Adafruit_PCD8544 для нокиа-5510
#include "RTClib.h"
#include
//===========================================================================================//
#define BACKLIGHT 7 //Х.З.
#define LCD_EN 4 //я незнаю как сказать или как понять
#define LCD_RW 5 //но эти строки нужнв для того чтобы
#define LCD_RS 6 //Ардуино понимала как подключены ножки
#define LCD_D4 0 //дисплея к ножкам I2C микросхемы и все
#define LCD_D5 1 //работает нормально поверьте
#define LCD_D6 2 //проверено мной лично 0259!
#define LCD_D7 3 //если кто сможет обяснить назначение этих строк правильно пожалуйста распишите для меня
//#define ONE_WIRE_BUS 10// Подключение цифрового вывода датчика к 10-му пину Ардуино.
//===========================================================================================//
LiquidCrystal_I2C lcd(63, 20, 4); // устанавливаем адрес 63, и дисплей 20 символов в 4 строки (20х4)
Adafruit_PCD8544 display = Adafruit_PCD8544(6, 5, 4, 3, 2); //описываем ноги дисплея нокиа-5510 (CLK, DIN, DC, CE, RST)
//OneWire oneWire(ONE_WIRE_BUS);// Запуск интерфейса OneWire для подключения OneWire устройств.
//===========================================================================================//
#define SS_PIN 10 // описание ног RFID считывателя
#define RST_PIN 9 // описание ног RFID считывателя
MFRC522 mfrc522(SS_PIN, RST_PIN);
unsigned long uidDec, uidDecTemp; // для храниения номера RFID метки/карточки в десятичном формате
Servo servo;
RTC_DS1307 RTC;
const int SoundPin = 7; // Пин подключения пьезоизлучателя – 7 дискретный
int lPin = 1; // пин подключения подсветки дисплея нокиа-5510
int DelaySound = 200; // звучание нот пьезоизлучател 0.2 секунд
void setup()
{
pinMode(lPin, OUTPUT);
//===========================================================================================//
// инициализация очистка и подсветка дисплея нокиа-5510
display.begin();
display.clearDisplay(); // очистка дисплея нокиа-5510
display.display();
display.setContrast(61); // установка контраста
delay(1000);
display.setTextSize(1); // установка размера шрифта
display.setTextColor(BLACK); // установка цвета текста
display.setCursor(0, 0); // установка положения курсора
pinMode(lPin, OUTPUT);// инициализируем пин как выход на подсветку дисплея нокиа-5510
digitalWrite(lPin, 0); //гасим подсветку дисплея нокиа-5510
//===========================================================================================//
lcd.init(); // инициализация LCD 20x4
lcd.backlight(); // включаем подсветку
lcd.clear(); // очистка дисплея
lcd.setCursor(2, 0); // устанавливаем курсор, 3 знак 1 строка
lcd.print("Platonov Andrey"); // вывод сообщения на LCD 20x4
//===========================================================================================//
Serial.begin(9600);
Serial.println("Waiting for card...");
SPI.begin(); // инициализация SPI / Init SPI bus.
Wire.begin();
mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card.
servo.attach(8); // подключаем сервопривод к 8 пину
servo.write(0); // устанавливаем серву в закрытое сосотояние
RTC.begin();
}
//===========================================================================================//
void loop()
{
//делаем часы
DateTime now = RTC.now(); // объявляем набор данных, считываемый из RTC_DS1307 значений времени
lcd.setCursor(0, 3); // устанавливаем курсор, 1 знак 4 строка
if (now.hour() < 10) // если часов меньше 10
lcd.print('0'); // то пририсовываем впереди 0
lcd.print(now.hour(), DEC); // печатаем на LCD 20x4 часы
lcd.print(":"); // печатаем на LCD 20x4 разделительные точки
if (now.minute() < 10) // если минут меньше 10
lcd.print('0'); // то пририсовываем впереди 0
lcd.print(now.minute(), DEC); // печатаем на LCD 20x4 минуты
lcd.print(":"); // печатаем на LCD 20x4 разделительные точки
if (now.second() < 10) // если секунд меньше 10
lcd.print('0'); // то пририсовываем впереди 0
lcd.print(now.second(), DEC); // печатаем на LCD 20x4 секунды
//===========================================================================================//
lcd.print(" "); //печатаем на LCD 20x4 разделительного пробела
if (now.day() < 10) //
lcd.print('0');
lcd.print(now.day(), DEC);
lcd.print("/");
if (now.month() < 10)
lcd.print('0');
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.year(), DEC);
delay(500);
//===========================================================================================//
// Поиск новой метки
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("==================");
Serial.println("Card UID: ");
Serial.println(uidDec); // Выводим UID метки в консоль.
if (uidDec == 421629573 ) // Сравниваем Uid метки, если он равен заданому то серва открывает.
{
lcd.backlight(); // включаем подсветку LCD 20x4
lcd.setCursor(5, 0); // устанавливаем курсор, 6 знак 1 строка
lcd.print("WELCOME!"); //печать на LCD 20x4 "WELCOME"
Serial.println("WELCOME!");
lcd.setCursor(1, 1); // устанавливаем курсор, 2 знак 2 строка
lcd.print("Platonov Andrey"); //печать на LCD 20x4 "Platonov Andrey"
Serial.println("Platonov Andrey");
Serial.println("==================");
lcd.setCursor(1, 2); // устанавливаем курсор, 2 знак 3 строка
lcd.print("UID: "); //печать на LCD 20x4 "номера карты"
lcd.print(uidDec); //печать на LCD 20x4 "номера карты"
tone(7, 1700); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
tone(7, 1400); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
tone(7, 1700); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
tone(7, 1400); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
noTone(7); // Выключаем звук
servo.write(90); // Поворачиваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворачиваем ключ и т.д.)
delay(3000); // пауза 3 сек и механизм запирается.
tone(7, 300, 500); // Делаем звуковой сигнал, Закрытие
lcd.noBacklight(); // гасим подсветку LCD 20x4
lcd.clear(); // очистка дисплея LCD 20x4
servo.write(0); // устанавливаем серву в закрытое сосотояние
}
//===========================================================================================//
else if (uidDec == 2263293483 ) // Сравниваем Uid метки, если он равен заданому то серва открывает.
{
lcd.backlight(); // включаем подсветку LCD 20x4
lcd.setCursor(5, 0); // устанавливаем курсор, 6 знак 1 строка
lcd.print("WELCOME!"); //печать на LCD 20x4 "WELCOME"
Serial.println("WELCOME!");
lcd.setCursor(1, 1); // устанавливаем курсор, 2 знак 2 строка
lcd.print("Platonova Larisa"); //печать на LCD 20x4 "Platonova Larisa"
Serial.println("Platonova Larisa");
Serial.println("==================");
lcd.setCursor(1, 2); // устанавливаем курсор, 2 знак 3 строка
lcd.print("UID: "); //печать на LCD 20x4 "номера карты"
lcd.print(uidDec); //печать на LCD 20x4 "номера карты"
tone(7, 1700); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
tone(7, 1400); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
tone(7, 1700); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
tone(7, 1400); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
noTone(7); // Выключаем звук
servo.write(90); // Поворачиваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворачиваем ключ и т.д.)
delay(3000); // пауза 3 сек и механизм запирается.
tone(7, 300, 500); // Делаем звуковой сигнал, Закрытие
lcd.noBacklight(); // гасим подсветку LCD 20x4
lcd.clear(); // очистка дисплея LCD 20x4
servo.write(0); // устанавливаем серву в закрытое сосотояние
}
//===========================================================================================//
else if (uidDec == 2573439878 ) // Сравниваем Uid метки, если он равен заданому то серва открывает.
{
// digitalWrite(lPin, 255); // включаем подсветку дисплея нокиа-5510
display.println("Добро Пожаловать! "); // пишем имя владельца на нокиа-5510
display.println("Платонова Алена"); // пишем имя владельца на нокиа-5510
display.display();
//===========================================================================================//
lcd.backlight(); // включаем подсветку LCD 20x4
lcd.setCursor(5, 0); // устанавливаем курсор, 6 знак 1 строка
lcd.print("WELCOME!"); //печать на LCD 20x4 "WELCOME"
Serial.println("WELCOME!");
lcd.setCursor(1, 1); // устанавливаем курсор, 2 знак 2 строка
lcd.print("Platonova Alena"); //печать на LCD 20x4 "Platonova Larisa"
Serial.println("Platonova Alena");
Serial.println("==================");
lcd.setCursor(1, 2); // устанавливаем курсор, 2 знак 3 строка
lcd.print("UID: "); //печать на LCD 20x4 "номера карты"
lcd.print(uidDec); //печать на LCD 20x4 "номера карты"
//===========================================================================================//
tone(7, 1700); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
tone(7, 1400); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
tone(7, 1700); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
tone(7, 1400); // Делаем звуковой сигнал, Открытие
delay(DelaySound);
//===========================================================================================//
noTone(7); // Выключаем звук
servo.write(90); // Поворачиваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворачиваем ключ и т.д.)
delay(3000); // пауза 3 сек и механизм запирается.
tone(7, 300, 500); // Делаем звуковой сигнал, Закрытие
//===========================================================================================//
digitalWrite(lPin, 0); // гасим подсветку дисплея нокиа-5510
display.clearDisplay(); // очищаем дисплей нокиа-5510
display.display();
//=============================================================================================//
lcd.noBacklight(); // гасим подсветку LCD 20x4
lcd.clear(); // очистка дисплея LCD 20x4
servo.write(0); // устанавливаем серву в закрытое сосотояние
//===========================================================================================//
}
else
{
lcd.backlight(); // включаем подсветку LCD 20x4
lcd.setCursor(3, 0); // устанавливаем курсор, 4 знак 1 строка
lcd.print("Unknown Card!"); //печать на LCD 20x4 "Unknown Card!"
Serial.println("Unknown User");
lcd.setCursor(4, 1); // устанавливаем курсор, 6 знак 2 строка
lcd.print("Access is Denied!"); //печать на LCD 20x4 "Door Close"
lcd.setCursor(1, 2); // устанавливаем курсор, 2 знак 3 строка
lcd.print("UID: "); //печать на LCD 20x4 "номера карты"
lcd.print(uidDec); //печать на LCD 20x4 "номера карты"
tone(7, 170, 1000); // Делаем звуковой сигнал, Открытие
delay(3000); // пауза 3 сек
lcd.noBacklight(); // гасим подсветку LCD 20x4
lcd.clear(); // очистка дисплея LCD 20x4
//===========================================================================================//
}
}
Комментариев нет:
Отправить комментарий
Создайте свой комментарий.