@AISka1

Arduino RFID сервопривод как написать программу новичку?

Ребята помогите уже всю голову сломал

Хочу сделать РФИД замок, по отдельности серва работает, рфид тоже, а вместе спрограмировать не могу. В интернете есть но там не по уид проверка, так еще и кнопки сделаны. А мне надо чисто по брелку. Прошу Вас подкиньте программу или помогите спаят серву к рфид программно в арудино

RFID писал на этом примере
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

void setup() {
 Serial.begin(9600); // Initialize serial communications with the PC
 SPI.begin();   // Init SPI bus
 mfrc522.PCD_Init(); // Init MFRC522 card
 Serial.println("Scan PICC to see UID and type...");
}

void loop() {
  byte uidCard[4] = {0x93, 0x48, 0x67, 0x9A}; 
  
 if ( ! mfrc522.PICC_IsNewCardPresent()) {
  return;
 }

 // Select one of the cards
 if ( ! mfrc522.PICC_ReadCardSerial()) {
  return;
 }
          
        for (byte i = 0; i < 4; i++) {
          if (uidCard[i] != mfrc522.uid.uidByte[i])
            return;           
        }
        
  Serial.println("OPEN");
  // digitalWrite(); 
  delay(5000);
  // digitalWrite();      
}


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

типа if (uidCard[i] != mfrc522.uid.uidByte[i]) and servo 90 grad

open door servo 180 grad

и второе

if (uidCard[i] != mfrc522.uid.uidByte[i]) and servo 180 grad

close door servo 0 grad
  • Вопрос задан
  • 1552 просмотра
Решения вопроса 1
"по отдельности серва работает, рфид тоже"
Что именно не работает?

Если рфид работает, значит можете выполнять действия, по срабатыванию
Все действия сведутся к фиксированию угла сервы в переменной и её изменению (весьма условный код):
if(угол_сервы==180)
servo.write(угол_сервы=0);
else
servo.write(угол_сервы=180);
ну и задержки между чтениями RFID, что бы пока карта/брелок работающий рядом находиться не было судорог.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Ocelot
@Ocelot
Почитайте про конечные автоматы. У вас тут простейший: два состояния (открыто-закрыто), два перехода между ними (по rfid). Чтобы замок не колбасило туда-сюда при приложенной карточке, есть два решения:
1. (легкое) Задержка чтения rfid после смены состояния.
2. (правильное) Добавить в автомат два промежуточных состояния
открыто_2 --(поднесли карту)--> закрыто_1 --(убрали карту)--> закрыто_2 --(поднесли карту)--> открыто_1 --(убрали карту)--> открыто_2

Как-то так.
Ответ написан
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
Я что-то похожее делал для квеста - и как показал опыт более удобным является другой алгоритм работы:
по событию (ввод кода, предъявление метки и т.д.) замок разблокируется на 5-10 секунд - потом обратно запирается. Этого вполне достаточно, чтобы человек успел выйти/зайти.
Одно "но" - нужен доводчик и замок-защелка(или электромагнитный).
в Вашем варианте можно отслеживать факт закрытия двери - и запирать замок по этому событию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы