Ошибка при загрузке скетча. Подскажите что делать.

Remmeh
Offline
Зарегистрирован: 10.06.2016
Пытаюсь загрузить любой скетч  и постоянно пишет ошибка. Загружаются только базавые примеры скетчей.
Пробовал загружать через другие версии программы, не помогает. 
Подскажите что делать?  Всем заранее спасибо.
 
При загрузке вылазит вот такие ошибки:
C:\Documents and Settings\Admin\Рабочий стол\ArduinoCodeLock\ArduinoCodeLock.ino: In function 'void setup()':
 
ArduinoCodeLock:34: error: 'mfrc522' was not declared in this scope
 
C:\Documents and Settings\Admin\Рабочий стол\ArduinoCodeLock\ArduinoCodeLock.ino: In function 'void loop()':
 
ArduinoCodeLock:145: error: 'mfrc522' was not declared in this scope
 
ArduinoCodeLock:151: error: 'mfrc522' was not declared in this scope
 
ArduinoCodeLock:157: error: 'mfrc522' was not declared in this scope
 
Вот скетч который я загружаю
#include <Servo.h>//Подключение библиотеки для сервопривода

#include <SPI.h>//Библиотека SPI
 
#include <LiquidCrystal.h>//Подключаем библиотеку для дисплея.
LiquidCrystal lcd(22, 23, 24, 25, 26, 27);//Указываем пины куда подключен дисплей.

Servo MyServo;//Называем сервопривод.

char* password = "258A"; //Здесь вы можете указать свой пароль. Я сделал на 4 знака, но можно и больше, изменив несколько строк ниже.
int position = 0;//Данная переменная указывает на какой позиции при вводе пароля находится курсор
char key;//Здесь временно хранятся знаки, которые мы считали.

void setup() 
{
    MyServo.attach(11);//Указываем, к какому пину подключен сервопривод.
    
    SPI.begin(); //Инициализация SPI шины.
    mfrc522.PCD_Init(); //Инициализация считывателя.
    
    lcd.begin(16, 2);//Инициализация дисплея.
    
    pinMode(2, INPUT);//Здесь и ниже мы указываем пины выходом. К этим пинам подключена клавиатура.
    pinMode(3, INPUT);
    pinMode(4, INPUT);
    pinMode(10, INPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(13, OUTPUT);
      
    lcd.print(" Enter Password ");//Пишем "Введите пароль"
    lcd.setCursor(0, 1);//Переводим курсор на 2 строку.
    lcd.print("Pass: ");//Пишем "Пароль: "
  }
  int rows[]={9,8,7,6}; //Здесь указываем пины рядов нашей клавиатуры.
  int cols[]={10,4,3,2}; //А здесь строк.

  char simbols[][2]=//Массив с знаками.
  {
    {0,'1'},
    {1,'2'},
    {2,'3'},
    {3,'A'},
    {4,'4'},
    {5,'5'},
    {6,'6'},
    {7,'B'},
    {8,'7'},
    {9,'8'},
    {10,'9'},
    {11,'C'},
    {12,'*'},
    {13,'0'},
    {14,'#'},
    {15,'D'}
  };

  void loop() 
  {
    byte uidCard[4] = {0xD9, 0x40, 0xE9, 0xD5}; //Здесь код вашей карты, измените на свой.
  


    for(int i=0;i<4;i++){ //цикл для перехода по всем строкам.

      digitalWrite(rows[i], HIGH); //подаем на текущую строку высокий уровень.

      for(int j=0;j<4;j++){ //цикл для переходов по всем столбцам.

        if(digitalRead(cols[j])==HIGH){ //если уровень высокий, то кнопка нажата.

        
           key = FindKey(4*i+j);//Помните переменную которая временно хранит знаки? Так вот это она и есть.

           lcd.setCursor(position + 7, 1);//Переводим курсор на 2 строку. position + 7 нужно для того, чтобы правильно отображать пароль.
           lcd.print(FindKey(4*i+j));//Пишем знак который считали.

          if (key == '*' || key == '#')//Если нажата кнопка * или #, то сбрасываем пароль.
          {
          position = 0;//Сбрасываем позицию пароля.
          lcd.clear();//Чистим дисплей
          lcd.print(" Enter Password ");
          lcd.setCursor(0, 1);
          lcd.print("Pass: ");
          delay(200);//Небольшая задержка + фикс мигания во время нажатия.
          MyServo.write(0);//Возвращаем сервопривод.
          }

          if(key != password[position])//Если вы ошиблись во время ввода пароля хотя бы на один знак, все сбросится.
          {
          position=0;//Сбрасываем позицию пароля.
          lcd.clear();//Чистим дисплей
          lcd.print(" Enter Password ");
          lcd.setCursor(0, 1);
          lcd.print("Pass: ");
          delay(200);
          }
          
          if(key == password[position])//А если ввели знак правильно, то...
          {
            position++;//То переходите к следующему.
          }
          
          if(position == 4)//Если вы достигли последнего знака, то...
          {
            MyServo.write(180);//Поворачиваем серво.
            
            position=0;//Сбрасиваем позицию пароля, т.к мы его ввели.
            delay(100);
            lcd.clear();//Чистим дисплей
            lcd.setCursor(0, 0);
            lcd.print("  Password Ok!  ");//И пишем что пароль правильный.
            delay(1000);
            lcd.clear();
          lcd.print(" Enter Password ");
          lcd.setCursor(0, 1);
          lcd.print("Pass: ");
          delay(200);
          }
         delay(200);
        }
      }

      digitalWrite(rows[i], LOW);  //выключаем высокий уровень для пройденной строки.

    }
    //Ниже идет проверка карты, то есть, если карта которую приложили имеет такой адресс, который вы указали в начале, то...
 if ( ! mfrc522.PICC_IsNewCardPresent()) 
 {
  return;
 }


 if ( ! mfrc522.PICC_ReadCardSerial()) 
 {
  return;
 }
          
        for (byte i = 0; i < 4; i++) {
          if (uidCard[i] != mfrc522.uid.uidByte[i])
            return;           
        }
        
          MyServo.write(180);//То поворачиваем серво.
          
          lcd.clear();//Чистим дисплей.
          lcd.setCursor(0, 0);
          lcd.print("    Card Ok!    ");//И пишем, что карта принята.
          delay(1000);//Задержка.
          lcd.clear();
          lcd.print(" Enter Password ");
          lcd.setCursor(0, 1);
          lcd.print("Pass: ");

  }

  //функция возвращающая код нажатой кнопки

  char FindKey(unsigned int keyCode){

    for(int i=0;i<16;i++){

      if(simbols[i][0]==keyCode){

        return simbols[i][1];

      }

 

 

T.Rook
Offline
Зарегистрирован: 05.03.2016

Remmeh пишет:

Подскажите что делать? 
 
При загрузке вылазит вот такие ошибки:
C:\Documents and Settings\Admin\Рабочий стол\ArduinoCodeLock\ArduinoCodeLock.ino: In function 'void setup()':
 
ArduinoCodeLock:34: error: 'mfrc522' was not declared in this scope

Вам же написали: "не объявлена переменная mfrc522". 

Что делать? - разобраться с её типом  и объявить.

Сильно подозреваю, что долно быть что-то вроде этого:


#include <MFRC522.h>

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

Источник

Remmeh
Offline
Зарегистрирован: 10.06.2016

Сделал как вы написали. Теперь вот что выдаёт :

C:\Documents and Settings\Admin\Рабочий стол\ArduinoCodeLock\ArduinoCodeLock.ino:23:21: fatal error: MFRC522.h: No such file or directory
 
compilation terminated.

 

T.Rook
Offline
Зарегистрирован: 05.03.2016

Ладно, еще раз поработаю переводчиком:

MFRC522.h: No such file or directory - нет (не нашли) файл (библиотеку) MFRC522.h

Remmeh
Offline
Зарегистрирован: 10.06.2016

Всё сделал. Установил дополнительные библиотеки. Спасибо)