'else' without a previous 'if' что делать? Помогите новичку

Тема в разделе "Arduino & Shields", создана пользователем abubakar, 7 апр 2017.

  1. abubakar

    abubakar Нерд

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





    // два 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; // для отображения номера карточки в десятичном формате

    #include <Servo.h> //Подключаем библиотеку Servo
    Servo dimkaservo;

    int sensePin = 0;//Обьявляем 0 аналоговый пин
    void setup()
    {
    analogReference(DEFAULT); //Объявляем диапазон чтения с аналогового порта.Необязательное
    /* Будем смотреть вывод на сериальном мониторе с Ардуино, для чего его инициализируем
    Заодно можно посмотреть диапазон работы датчика чтобы в этом диапазоне поворачивать серву*/
    Serial.begin(9600);
    dimkaservo.attach(8); // Подключаем серву на 10 пин

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

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

    dimkaservo.attach(8); // servo подключён к 7 Pin.
    dimkaservo.write(90); // устанавливаем положение servo, в момент подачи питания.


    }




    void loop()
    {
    // Печатаем на монитор
    Serial.println(analogRead(sensePin));
    int val = analogRead(sensePin);// Создаем переменную val для чтения analogRead
    val= constrain(val,610 ,699);// Ограничиваем диапазон работы датчика посмотрев его на мониторе
    int motorAngl = map(val,699, 610, 90,0);//Преобразуем диапазон выдаваемый датчиком в диапазон углов сервы
    dimkaservo.write(motorAngl);// Устанавливаем серву на угол который получаем через преобразование
    // Поиск новой карточки / 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;
    uidDec = uidDec*256+uidDecTemp;
    }
    Serial.println("Serijnyj nomer karty / Card UID: ");
    Serial.println(uidDec);

    // ------------------------

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




    // также и с другими номерами карт.
    else if (uidDec == 959884118)
    {

    Serial.println("Hi Sergey");
    dimkaservo.write(900);
    }



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

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

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

    delay(7000); // пауза 3 секунды.
    dimkaservo.write(10); // возвращаем servo обратно.
    }
    Ругается копилятор. Что делать я не знаю...
     
  2. mcureenab

    mcureenab Гуру

    Исправить код

    Код (C++):
    / также и с другими номерами карт.
    else if (uidDec == 959884118)
    {
    Зачем тут else?
     
  3. abubakar

    abubakar Нерд

    Убрал else работает. Спасибо. Тут такое дело надо сделать так, чтобы когда сопротивление фоторезистора изменяет то поднимается шлагбаум и держит эту позицию 5 секунд. Потом обратно на свой угол. Тоже самое и с rfid. Когда подносишь карту то поднимается и держит точку 5 секунд после чего опускается. Я вот не знаю куда задержку ставить и нужно чтобы они оба работали, а то сейчас работает только фоторезистор а когда подносишь карту то не работает. В чем дело? Может кто-нибудь сталкивался с этим?
    Вот скетч:
    #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; // для отображения номера карточки в десятичном формате

    #include <Servo.h> //Подключаем библиотеку Servo
    Servo dimkaservo;

    int sensePin = 0;//Обьявляем 0 аналоговый пин
    void setup()
    {
    analogReference(DEFAULT); //Объявляем диапазон чтения с аналогового порта.Необязательное
    /* Будем смотреть вывод на сериальном мониторе с Ардуино, для чего его инициализируем
    Заодно можно посмотреть диапазон работы датчика чтобы в этом диапазоне поворачивать серву*/
    Serial.begin(9600);
    dimkaservo.attach(8); // Подключаем серву на 10 пин

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

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

    dimkaservo.attach(8); // servo подключён к 7 Pin.
    dimkaservo.write(110); // устанавливаем положение servo, в момент подачи питания.


    }




    void loop()
    {
    // Печатаем на монитор
    Serial.println(analogRead(sensePin));
    int val = analogRead(sensePin);// Создаем переменную val для чтения analogRead
    val= constrain(val,610 ,699);// Ограничиваем диапазон работы датчика посмотрев его на мониторе
    delay(2500);
    int motorAngl = map(val,699, 610, 110,0);//Преобразуем диапазон выдаваемый датчиком в диапазон углов сервы
    dimkaservo.write(motorAngl);// Устанавливаем серву на угол который получаем через преобразование
    // Поиск новой карточки / 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;
    uidDec = uidDec*256+uidDecTemp;
    }
    Serial.println("Serijnyj nomer karty / Card UID: ");
    Serial.println(uidDec);

    // ------------------------

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




    // также и с другими номерами карт.
    if (uidDec == 2426367825

    )
    {

    Serial.println("Hi Sergey");
    dimkaservo.write(110);
    }





    delay(5000);

    }
     
  4. mcureenab

    mcureenab Гуру

    Потрудитесь разметку кода сделать.
     
    Tomasina нравится это.