Ошибка при загрузке скетча. Подскажите что делать.
- Войдите на сайт для отправки комментариев
Вс, 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
Вот скетч который я загружаю
#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]; }
Вам же написали: "не объявлена переменная mfrc522".
Что делать? - разобраться с её типом и объявить.
Сильно подозреваю, что долно быть что-то вроде этого:
Источник
Сделал как вы написали. Теперь вот что выдаёт :
Ладно, еще раз поработаю переводчиком:
MFRC522.h: No such file or directory - нет (не нашли) файл (библиотеку) MFRC522.h
Всё сделал. Установил дополнительные библиотеки. Спасибо)