Официальный сайт компании Arduino по адресу arduino.cc
rfid считыватель+ серво +кнопка для считывание состояние двери открыта или закрыта.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 27/12/2016 - 22:27
Я нашол вот такой скейч 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 сек серво сново закрывает помогите прошу от души .