rfid считыватель+ серво +кнопка для считывание состояние двери открыта или закрыта.

Нет ответов
85vehiza
Offline
Зарегистрирован: 26.12.2016

Я нашол вот такой скейч

Servo dimkaservo; 

#include <SPI.h> 

#include <MFRC522.h> // это скачанная библиотека "RFID". 

/* 

подключение для Arduino Uno и Mega, производится к разным Pin! 

---------------------------------------------------— Nicola Coppola 

* Pin layout should be as follows: 

* Signal Pin Pin Pin 

* Arduino Uno Arduino Mega MFRC522 board 

* —--------------------------------------------------------— 

* Reset 9 5 RST 

* SPI SS 10 53 SDA 

* SPI MOSI 11 51 MOSI 

* SPI MISO 12 50 MISO 

* SPI SCK 13 52 SCK 

*/ 

// два Pin (SS и RST) допускают произвольное подключение и конфигурируются в коде. 

// !(SS - он же - SDA). 

#define SS_PIN 10 

#define RST_PIN 9 

MFRC522 mfrc522(SS_PIN, RST_PIN); // объект MFRC522C / reate MFRC522 instance. 

unsigned long uidDec, uidDecTemp; // для отображения номера карточки в десятичном формате 

//************************************************************* 

// Массив 4 Светодиодов, для визуального контроля. 

//************************************************************* 

int ledPins[] = { 

2,3,4,5}; 

int LedPinSindex; // индекс, для массива Светодиодов. 

void setup() { 

Serial.begin(9600); // Initialize serial communications with the PC. 

Serial.println("Prilozhite kartu / Waiting for card..."); 

SPI.begin(); // инициализация SPI / Init SPI bus. 

mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card. 

dimkaservo.attach(7); // servo подключён к 7 Pin. 

dimkaservo.write(10); // устанавливаем положение servo, в момент подачи питания.// весь массив светодиодов делаем OUTPUT. 

for(LedPinSindex = 0; LedPinSindex <= 3; LedPinSindex++) 

{ 

pinMode(ledPins[LedPinSindex],OUTPUT); 

} 

} 

void loop() { 

// Поиск новой карточки / Look for new cards. 

if ( ! mfrc522.PICC_IsNewCardPresent()) { 

return; 

} 

// Выбор карточки / Select one of the cards. 

if ( ! mfrc522.PICC_ReadCardSerial()) { 

return; 

} 

uidDec = 0; 

// Выдача серийного номера карточки "UID". 

for (byte i = 0; i < mfrc522.uid.size; i++) 

{ 

uidDecTemp = mfrc522.uid.uidByte[i]; 

uidDec = uidDec*256+uidDecTemp; 

} 

Serial.println("Serijnyj nomer karty / Card UID: "); 

Serial.println(uidDec); 

// —--------------------— 

// начинаем сравнивать номер "UID", поднесённой к ридеру карты, 

// с записанным номером "UID" карты в sketch. 

// замените!!! "UID" № "422455350", на номер "UID" № вашей карты. 

if (uidDec == 422455350) // если "UID" номер совпал. 

{ 

// включим светодиод. 

digitalWrite(ledPins[0], HIGH); 

// Печатаем в Serial монитор . 

Serial.println("Hi Dmitry"); 

// поворачиваем servo на 170 градусов. 

dimkaservo.write(170); 

} 

// также и с другими номерами карт. 

else if (uidDec == 959884118) 

{ 

digitalWrite(ledPins[1], HIGH); 

Serial.println("Hi Sergey"); 

dimkaservo.write(170); 

} 

else if (uidDec == 695670870) 

{ 

digitalWrite(ledPins[2], HIGH); 

Serial.println("Hi Peter"); 

dimkaservo.write(170); 

} 

else if (uidDec == 695670614) 

{ 

digitalWrite(ledPins[3], HIGH); 

Serial.println("Hi Vasily"); 

dimkaservo.write(170); 

} 

else // если "UID" номер карты не совпал. 

{ 

// включим все светодиоды. 

for(LedPinSindex = 0; LedPinSindex <= 3; LedPinSindex++)digitalWrite(ledPins[LedPinSindex],HIGH); 

Serial.println("Neizvestnaja karta / unknown card"); 

} 

Serial.println("====================================="); 

delay(3000); // пауза 3 секунды. 

dimkaservo.write(10); // возвращаем servo обратно. 

// и выключим все светодиоды. 

for(LedPinSindex = 0; LedPinSindex <= 3; LedPinSindex++)digitalWrite(ledPins[LedPinSindex],LOW); 

}

 он все работает но как к ниму подключить кнопку чтобы при открывании двери контакты размыкались и серво не поворачивалась через 3 сек а ждала пока мы закроем дверь. А если мы поднесем карту она раз лакирует дверь серво откроется и через 3 сек серво сново закрывает помогите прошу от души .