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

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
 
Вот скетч который я загружаю
001#include <Servo.h>//Подключение библиотеки для сервопривода
002 
003#include <SPI.h>//Библиотека SPI
004  
005#include <LiquidCrystal.h>//Подключаем библиотеку для дисплея.
006LiquidCrystal lcd(22, 23, 24, 25, 26, 27);//Указываем пины куда подключен дисплей.
007 
008Servo MyServo;//Называем сервопривод.
009 
010char* password = "258A"; //Здесь вы можете указать свой пароль. Я сделал на 4 знака, но можно и больше, изменив несколько строк ниже.
011int position = 0;//Данная переменная указывает на какой позиции при вводе пароля находится курсор
012char key;//Здесь временно хранятся знаки, которые мы считали.
013 
014void setup()
015{
016    MyServo.attach(11);//Указываем, к какому пину подключен сервопривод.
017     
018    SPI.begin(); //Инициализация SPI шины.
019    mfrc522.PCD_Init(); //Инициализация считывателя.
020     
021    lcd.begin(16, 2);//Инициализация дисплея.
022     
023    pinMode(2, INPUT);//Здесь и ниже мы указываем пины выходом. К этим пинам подключена клавиатура.
024    pinMode(3, INPUT);
025    pinMode(4, INPUT);
026    pinMode(10, INPUT);
027    pinMode(6, OUTPUT);
028    pinMode(7, OUTPUT);
029    pinMode(8, OUTPUT);
030    pinMode(9, OUTPUT);
031    pinMode(13, OUTPUT);
032       
033    lcd.print(" Enter Password ");//Пишем "Введите пароль"
034    lcd.setCursor(0, 1);//Переводим курсор на 2 строку.
035    lcd.print("Pass: ");//Пишем "Пароль: "
036  }
037  int rows[]={9,8,7,6}; //Здесь указываем пины рядов нашей клавиатуры.
038  int cols[]={10,4,3,2}; //А здесь строк.
039 
040  char simbols[][2]=//Массив с знаками.
041  {
042    {0,'1'},
043    {1,'2'},
044    {2,'3'},
045    {3,'A'},
046    {4,'4'},
047    {5,'5'},
048    {6,'6'},
049    {7,'B'},
050    {8,'7'},
051    {9,'8'},
052    {10,'9'},
053    {11,'C'},
054    {12,'*'},
055    {13,'0'},
056    {14,'#'},
057    {15,'D'}
058  };
059 
060  void loop()
061  {
062    byte uidCard[4] = {0xD9, 0x40, 0xE9, 0xD5}; //Здесь код вашей карты, измените на свой.
063   
064 
065 
066    for(int i=0;i<4;i++){ //цикл для перехода по всем строкам.
067 
068      digitalWrite(rows[i], HIGH); //подаем на текущую строку высокий уровень.
069 
070      for(int j=0;j<4;j++){ //цикл для переходов по всем столбцам.
071 
072        if(digitalRead(cols[j])==HIGH){ //если уровень высокий, то кнопка нажата.
073 
074         
075           key = FindKey(4*i+j);//Помните переменную которая временно хранит знаки? Так вот это она и есть.
076 
077           lcd.setCursor(position + 7, 1);//Переводим курсор на 2 строку. position + 7 нужно для того, чтобы правильно отображать пароль.
078           lcd.print(FindKey(4*i+j));//Пишем знак который считали.
079 
080          if (key == '*' || key == '#')//Если нажата кнопка * или #, то сбрасываем пароль.
081          {
082          position = 0;//Сбрасываем позицию пароля.
083          lcd.clear();//Чистим дисплей
084          lcd.print(" Enter Password ");
085          lcd.setCursor(0, 1);
086          lcd.print("Pass: ");
087          delay(200);//Небольшая задержка + фикс мигания во время нажатия.
088          MyServo.write(0);//Возвращаем сервопривод.
089          }
090 
091          if(key != password[position])//Если вы ошиблись во время ввода пароля хотя бы на один знак, все сбросится.
092          {
093          position=0;//Сбрасываем позицию пароля.
094          lcd.clear();//Чистим дисплей
095          lcd.print(" Enter Password ");
096          lcd.setCursor(0, 1);
097          lcd.print("Pass: ");
098          delay(200);
099          }
100           
101          if(key == password[position])//А если ввели знак правильно, то...
102          {
103            position++;//То переходите к следующему.
104          }
105           
106          if(position == 4)//Если вы достигли последнего знака, то...
107          {
108            MyServo.write(180);//Поворачиваем серво.
109             
110            position=0;//Сбрасиваем позицию пароля, т.к мы его ввели.
111            delay(100);
112            lcd.clear();//Чистим дисплей
113            lcd.setCursor(0, 0);
114            lcd.print("  Password Ok!  ");//И пишем что пароль правильный.
115            delay(1000);
116            lcd.clear();
117          lcd.print(" Enter Password ");
118          lcd.setCursor(0, 1);
119          lcd.print("Pass: ");
120          delay(200);
121          }
122         delay(200);
123        }
124      }
125 
126      digitalWrite(rows[i], LOW);  //выключаем высокий уровень для пройденной строки.
127 
128    }
129    //Ниже идет проверка карты, то есть, если карта которую приложили имеет такой адресс, который вы указали в начале, то...
130 if ( ! mfrc522.PICC_IsNewCardPresent())
131 {
132  return;
133 }
134 
135 
136 if ( ! mfrc522.PICC_ReadCardSerial())
137 {
138  return;
139 }
140           
141        for (byte i = 0; i < 4; i++) {
142          if (uidCard[i] != mfrc522.uid.uidByte[i])
143            return;          
144        }
145         
146          MyServo.write(180);//То поворачиваем серво.
147           
148          lcd.clear();//Чистим дисплей.
149          lcd.setCursor(0, 0);
150          lcd.print("    Card Ok!    ");//И пишем, что карта принята.
151          delay(1000);//Задержка.
152          lcd.clear();
153          lcd.print(" Enter Password ");
154          lcd.setCursor(0, 1);
155          lcd.print("Pass: ");
156 
157  }
158 
159  //функция возвращающая код нажатой кнопки
160 
161  char FindKey(unsigned int keyCode){
162 
163    for(int i=0;i<16;i++){
164 
165      if(simbols[i][0]==keyCode){
166 
167        return simbols[i][1];
168 
169      }

 

 

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". 

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

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

1#include <MFRC522.h>
2 
3#define SS_PIN 10
4#define RST_PIN 9
5MFRC522 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

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