Ошибка при загрузке скетча. Подскажите что делать.
- Войдите на сайт для отправки комментариев
Вс, 12/06/2016 - 09:50
Пытаюсь загрузить любой скетч и постоянно пишет ошибка. Загружаются только базавые примеры скетчей.
Пробовал загружать через другие версии программы, не помогает.
Подскажите что делать? Всем заранее спасибо.
При загрузке вылазит вот такие ошибки:
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>//Подключаем библиотеку для дисплея. |
006 | LiquidCrystal lcd(22, 23, 24, 25, 26, 27); //Указываем пины куда подключен дисплей. |
007 |
008 | Servo MyServo; //Называем сервопривод. |
009 |
010 | char * password = "258A" ; //Здесь вы можете указать свой пароль. Я сделал на 4 знака, но можно и больше, изменив несколько строк ниже. |
011 | int position = 0; //Данная переменная указывает на какой позиции при вводе пароля находится курсор |
012 | char key; //Здесь временно хранятся знаки, которые мы считали. |
013 |
014 | void 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 | } |
Вам же написали: "не объявлена переменная mfrc522".
Что делать? - разобраться с её типом и объявить.
Сильно подозреваю, что долно быть что-то вроде этого:
1
#include <MFRC522.h>
2
3
#define SS_PIN 10
4
#define RST_PIN 9
5
MFRC522 mfrc522(SS_PIN, RST_PIN);
// Create MFRC522 instance.
Источник
Сделал как вы написали. Теперь вот что выдаёт :
Ладно, еще раз поработаю переводчиком:
MFRC522.h: No such file or directory - нет (не нашли) файл (библиотеку) MFRC522.h
Всё сделал. Установил дополнительные библиотеки. Спасибо)