Помогите объединить кнопку и rfid модуль

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем vladimir228, 29 май 2023.

  1. vladimir228

    vladimir228 Нуб

    Очень важный проект, а разобраться не могу. Переискал весь интернет ответа не нашёл. Мне нужно объеденить кнопку и модуль Rfid. Помимо этого в моём проекте есть ещё и два светодиода, сервопривод, пьезоэлемент. Потом я буду добавлять часы реального времени, но это не скоро. Сейчас я не могу разобраться с подключением кнопки к ардуино. Выходит, что открывает либо только кнопка, либо только карта. Помогите, пожалуйста, если не трудно, буду очень благодарен!
    Вот код:

    #include <Servo.h>
    #include <SPI.h>
    #include <MFRC522.h> // библиотека "RFID".
    #define SS_PIN 10
    #define RST_PIN 9
    MFRC522 mfrc522(SS_PIN, RST_PIN);
    unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате
    Servo servo;
    void setup() {
    Serial.begin(9600);
    Serial.println("Waiting for card...");
    SPI.begin(); // инициализация SPI / Init SPI bus.
    mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card.
    servo.attach(6);
    servo.write(90); // устанавливаем серву в закрытое сосотояние
    }
    void loop() {
    // Поиск новой метки
    digitalWrite (4, HIGH);
    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;
    uidDec = uidDec * 256 + uidDecTemp;
    }
    Serial.println("Card UID: ");
    Serial.println(uidDec); // Выводим UID метки в консоль.
    if (uidDec == 131977158 or uidDec == 2083045409 or uidDec == 2032953778 or uidDec == 1764569778 or uidDec == 4241245474 or uidDec == 2835367603 or uidDec == 1200017862) // Сравниваем Uid метки, если он равен заданому то серва открывает.
    {
    digitalWrite (4, LOW);
    digitalWrite (5, HIGH);
    tone(7, 900, 500); // Делаем звуковой сигнал, Открытие
    delay (100);
    tone(7, 800, 500);
    servo.write(0); // Поворациваем серву на угол 0 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.)
    delay(3000); // пауза 3 сек и механизм запирается.
    tone(7, 1000, 500); // Делаем звуковой сигнал, Закрытие
    delay (100);
    tone(7, 900, 500);
    digitalWrite (5, LOW);
    digitalWrite (4, HIGH);
    }
    servo.write(90); // устанавливаем серву в закрытое сосотояние
    }
     
  2. Airbus

    Airbus Радиохулиган Модератор

  3. parovoZZ

    parovoZZ Гуру

    Если открыть учебник по булевой алгебре, то там можно отыскать такой оператор, как ИЛИ. Я думаю, что надо начинать с чего попроще. А на перпетуум мобиле потом замахнуться.
     
    Airbus нравится это.
  4. Airbus

    Airbus Радиохулиган Модератор

    А вообще начать с Главного!
    [​IMG]