RC522
- Войдите на сайт для отправки комментариев
Пт, 16/09/2016 - 19:43
Помогите пожалуйста с кодом! Нужно чтоб серва меняла своё положение не по таймеру а по повторному поднесению к rc522 модулю! Спасибо большое!
*/ #include <Servo.h> 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); }
https://www.youtube.com/watch?v=U2Ly7PhCtPA&index=2&list=PLmYrKfbOTukLzM...
могу только этим помоч, мне тоже надо будет такую функцию,
если разберешься дай знать как